さいごにはじめにこんにちは。Databaseの検証チームです。23aiの新機能「スキーマ権限」について検証してみました。限定できるようになりました。従来のシステム権限付与の方法として、主に以下の2点があります。1スキーマ内の各表およびビューに対し、個別に権限を付与2ANY権限を付与し、任意の表の選択、更新1の方法だと個別に権限付与する必要があるため、大量のオブジェクトがある場合は手間がかかり、テーブルが新規作成されるたびに権限を付与していく運用が必要となります。2の方法ではデータベース内のすべての表にアクセスできるため、セキュリティの観点から最適ではありません。23aiで追加されたスキーマ権限について見ていきましょう。参照させたいスキーマのテーブルにだけSELECTできるようになりました。スキーマ権限を付与する場合は以下のSQLを実行します。USER3この例の場合、USER3はUSER1スキーマのすべての表およびビューを参照できるようになります。スキーマ権限を使ってみる実際にスキーマ権限を使い、特定のスキーマが所有している表のみ参照できることを確認していきます。テーブル所有ユーザのUSER1、USER2はそれぞれTABLE1、TABLE2を所有しており、接続用ユーザのUSER3にはUSER1のTABLE1のみ参照できるような権限付与をしていきます。権限付与されていない状況でSELECTしてみます。USER3/<password>@FREEPDB1接続されました。USER1.TABLE1*行1でエラーが発生しました。USER2.TABLE2*行1でエラーが発生しました。ヘルプ:https://docs.oracle.com/error-help/db/ora-00942/まだ権限がないため、どちらの表も参照はできていません。USER3にスキーマ権限を付与します。USER3;権限付与が成功しました。USER1スキーマ権限付与後に、表が参照できるか確認します。USER3/<password>@FREEPDB1接続されました。USER2.TABLE2*行1でエラーが発生しました。TABLE権限を付与しましたが、全ての表ではなくTABLE1のみ参照できています。次に、USER3がUSER1に対してスキーマ権限を持っている状態でUSER1が新規にTABLE3を作成した場合、どうなるか見ていきます。USER1でTABLE3を作成します。USER1/<password>@FREEPDB1接続されました。varchar(10));表が作成されました。(333);1行が作成されました。スキーマ権限を持っているUSER3から参照できるか確認していきます。USER3/<password>@FREEPDB1接続されました。USER1.TABLE3;COLUM3----------333USER3から、先ほど新しく作成したTABLE3が参照できています。さいごにOracle23aiの新機能であるスキーマ権限を活用することで、スキーマごとに参照権限を管理することが出来ました。スキーマ権限を持っていればオブジェクトが増えても都度権限を追加するといった手間も不要であることが分かりました。当社では最新機能の検証を常に行っています。Oracle23ai導入を検討されている企業さまは是非お気軽にお問合せください!投稿者プロフィール技術チームDBひとりでできるもんを盛り上げるべく、技術チームが立ち上がり早6年。データ・レプリケーションとデータ変換のデプロイメントを使用して、データのロードおよび変換を試してみよう。データ・レプリケーションとデータ変換のデプロイメントを使用して、データのロードおよび変換を試してみよう。データ・レプリケーションとデータ変換のデプロイメントを使用して、データのロードおよび変換を試してみよう。infra-db@sts-inc.co.jp「DBひとりでできるもん」運営チームです。「親しみやすさと技術力」をテーマに、技術情報・サービス・インフラ系資格取得に役立つ情報、社員等の情報をお届けします。70名弱の事業部員で鋭意、執筆中です。当社を知って頂けるよう、愛情込めて頑張ります!※facebook、X(旧twitter)、インスタグラムでは「DBひとりでできるもん」の更新情報を発信しています。