権限情報定義は、GRANT文で行います。資源の定義時には、その資源の定義者のみが、その資源に対するすべての権限を保持しています。したがって、定義者以外がその資源をアクセスするためには、権限情報の定義を行います。GRANT文では、資源に対して、誰にどんな権限を与えるかを指定することができます。在庫管理データベースに権限情報を設定する例を以下に示します。スキーマSTOCKSに属する在庫表の権限情報を定義するものとします。
在庫表に対する参照、格納および更新権を付与する例
GRANT SELECT, INSERT, UPDATE ON STOCKS.在庫表 ↑ ↑ 権限 対象名 TO SATO, SUZUKI, TANAKA ↑ 権限受領者
また、権限の定義では、ある業務で必要な権限をまとめて設定したいという要件があります。このような権限の付与には、ロールを利用すると便利です。
ロールとは、1つの業務で必要な権限をグループ化したものです。ある業務で必要な権限をまとめて設定する場合は、ロールを定義します。ロールを定義すると、その業務を行うすべての利用者にそのロールの権限を付与することができ、権限管理の効率化を図ることができます。
ロール機能を利用した権限付与の手順を以下に示します。
ロールを定義する
ロールに権限を付与する
ロールの権限を利用者に付与する
ロール機能の概要を以下に示します。
ロールに権限を付与するには、GRANT文を利用します。定義したロールに対して、データベース内の表をアクセスするための権限を付与します。
ロールに対してGRANT文で付与できる権限について、以下の表に示します。
権限 | 操作の意味 |
---|---|
SELECT権 | データベース内の表のデータを参照する権限、 |
UPDATE権 | データベース内の表のデータを更新する権限 |
DELETE権 | データベース内の表のデータを削除する権限 |
INSERT権 | データベース内の表のデータを挿入する権限 |
EXECUTE権 | データベース内のプロシジャルーチン、またはファンクションルーチンを実行する権限 |
TRIGGER権 | 表にトリガを定義する権限 |
CREATE権 | スキーマに、表、ビュー表、プロシジャルーチン、ファンクションルーチンまたは順序を定義する権限 |
ALLOCATE権 | DSI定義で、データベーススペースに表の領域を割り付ける権限 |
DROP権 | スキーマ、表、ビュー表、プロシジャルーチン、ファンクションルーチン、トリガまたは順序を削除する権限 |
ALTER権 | 表定義を更新する権限 |
INDEX権 | 表にインデックスを定義する権限 |
ロール“STOCKS_A2”に対して、各表における権限を付与する例を以下に示します。
GRANT SELECT ON STOCKS.在庫表 TO ROLE STOCKS_A2; ↑ ↑ ↑ 権限 対象名 ロール名 GRANT SELECT,INSERT,UPDATE ON STOCKS.発注表 TO ROLE STOCKS_A2; GRANT SELECT,UPDATE,INSERT,DELETE ON STOCKS.会社表 TO ROLE STOCKS_A2;
権限が付与されたロールを、利用者に対して付与します。
利用者へのロールの権限の付与は、GRANT文で行います。
ロール“STOCKS_A2”の権限を、利用者“SATO,SUZUKI,TANAKA”に付与する例を以下に示します。
GRANT STOCKS_A2 TO SATO,SUZUKI,TANAKA ↑ ↑ ロール名 権限受領者
定義したロールに対して、GRANT文で付与した権限を有効にするには、アプリケーションでSET ROLE文を実行しなければなりません。
注意
以下のSQL文、およびRDBコマンドでは、ロールに付与されたSELECT権、INSERT権、UPDATE権、DELETE権、EXECUTE権、ALLOCATE権およびTRIGGER権は、有効となりません。SQL文およびRDBコマンド実行者に権限を直接付与してください。
CREATE TABLE文
CREATE VIEW文
CREATE TRIGGER文
CREATE PROCEDURE文
CREATE FUNCTION文
DROP TABLE文
DROP VIEW文
DROP TRIGGER文
DROP PROCEDURE文
DROP FUNCTION文
rdbalmdsiコマンド
rdbgcdsiコマンド
以下のコマンドを実行する権限をロール単位で付与するには、セキュリティ形態パラメタのROLE_RANGEを有効にしてください。
rdbfmtコマンド
rdbsloaderコマンド
rdbsaloaderコマンド
rdbsuloaderコマンド
rdbunlコマンド
rdbunlxコマンド
なお、セキュリティ形態パラメタのROLE_RANGEは、標準運用時のみ有効です。
参照
アプリケーションでSET ROLE文を実行する方法については、“アプリケーション開発ガイド(埋込みSQL編)”を参照してください。
セキュリティ形態パラメタのROLE_RANGEの詳細については、“SQLリファレンス”の“SET SYSTEM PARAMETER文”を参照してください。
権限情報の定義でロールを作成した場合、デフォルトロールを設定することができます。デフォルトロールとは、アプリケーション中でSET ROLE文を実行しなくても有効となるロールを、環境構築時にあらかじめ設定しておくものです。
デフォルトロールの設定は、ALTER USER文で行います。
利用者“SATO,SUZUKI,TANAKA”にデフォルトロール“STOCKS_A2”を設定する例を以下に示します。
ALTER USER SATO DEFAULT_ROLE=STOCKS_A2; ALTER USER SUZUKI DEFAULT_ROLE=STOCKS_A2; ALTER USER TANAKA DEFAULT_ROLE=STOCKS_A2;