ページの先頭行へ戻る
Symfoware Server V12.1.x RDB運用ガイド(データベース定義編)
FUJITSU Software

2.10 権限情報定義

権限情報定義は、GRANT文で行います。資源の定義時には、その資源の定義者のみが、その資源に対するすべての権限を保持しています。したがって、定義者以外がその資源をアクセスするためには、権限情報の定義を行います。GRANT文では、資源に対して、誰にどんな権限を与えるかを指定することができます。在庫管理データベースに権限情報を設定する例を以下に示します。スキーマSTOCKSに属する在庫表の権限情報を定義するものとします。

在庫表に対する参照、格納および更新権を付与する例

GRANT SELECT, INSERT, UPDATE  ON  STOCKS.在庫表
                 ↑                 ↑
                権限              対象名

       TO  SATO, SUZUKI, TANAKA
                    ↑
                権限受領者

また、権限の定義では、ある業務で必要な権限をまとめて設定したいという要件があります。このような権限の付与には、ロールを利用すると便利です。

ロールを利用した権限の定義

ロールとは、1つの業務で必要な権限をグループ化したものです。ある業務で必要な権限をまとめて設定する場合は、ロールを定義します。ロールを定義すると、その業務を行うすべての利用者にそのロールの権限を付与することができ、権限管理の効率化を図ることができます。

ロール機能を利用した権限付与の手順を以下に示します。

  1. ロールを定義する

  2. ロールに権限を付与する

  3. ロールの権限を利用者に付与する


ロール機能の概要を以下に示します。

1)ロールを定義する

ロールの定義は、CREATE ROLE文で行います。

ロール“STOCKS_A2”を定義する例を以下に示します。

CREATE ROLE  STOCKS_A2
                ↑
             ロール名
2)ロールに権限を付与する

ロールに権限を付与するには、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;
3)ロールの権限を利用者に付与する

権限が付与されたロールを、利用者に対して付与します。

利用者へのロールの権限の付与は、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;