ロール

ロールは、特権の管理を簡素化します。つまり、グループと同等の機能は提供されますが、同じ制約事項は設けられません。

ロールは、1 つ以上の特権をまとめたデータベース・オブジェクトですが、これを、GRANT ステートメントを使用してユーザー、グループ、PUBLIC、またはその他のロールに割り当てるか、あるいは、CREATE TRUSTED CONTEXT または ALTER TRUSTED CONTEXT ステートメントを使用して、トラステッド・コンテキストに割り当てることができます。 ワークロード定義内で、SESSION_USER ROLE 接続属性用のロールを指定することができます。

ロールは、次のように、データベース・システム内での特権の管理がより簡単になるという利点を備えています。
  • セキュリティー管理者は、組織の構造を映し出すような方法で、そのデータベースへのアクセスを制御することができます (組織における役職や担当業務に対応したロールをデータベース内に作成できます)。
  • ユーザーには、その役職や担当業務に応じたロールに対するメンバーシップが付与されます。 ユーザーの役職や担当業務の変更に応じて、ロールに対するメンバーシップを簡単に付与または取り消すことができます。
  • 特権の割り当てが簡素化されます。 管理者は、特定の役職や担当業務に該当する個々のユーザーに一連の同じ特権を付与するのではなく、その役職や担当業務に応じたロールに対してこの一連の特権を付与してから、その役職や担当業務に該当する各ユーザーにそのロールを付与することができます。
  • そのロールを付与されたすべてのユーザーに対し、更新が適用されます。つまり管理者は、個人ごとに各ユーザーの特権を更新する必要はありません。
  • ビュー、トリガー、マテリアライズ照会表 (MQT)、静的 SQL、および SQL ルーチンの作成時には、ロールに対して付与された特権および権限が常に使用されます。この場合、グループに付与された特権および権限は (直接でも間接にでも) 使用されません。

    これは、 Db2® データベース・システムは、グループがサード・パーティー・ソフトウェア (オペレーティング・システムや LDAP ディレクトリーなど) によって管理されているため、グループのメンバーシップがいつ変更されるかを判別できないためです。 ロールはデータベース内部で管理されるので、Db2 データベース・システムは、許可がいつ変更されたかを判別して、それに応じたアクションをとることができます。 グループが検討の対象にならないのと同じ理由で、グループに付与されたロールも検討の対象にはなりません。

  • ユーザーに割り当てられたすべてのロールは、ユーザーが接続を確立したときに有効になるので、ロールに付与されたすべての特権と許可も、ユーザーが接続するときに有効となります。 ロールを明示的に有効または無効にすることはできません。
  • セキュリティー管理者は、ロールの管理を他人に委任することができます。
データベース内で付与できるどの Db2 特権および権限でも、ロールに付与することができます。 例えば、以下のどの権限および特権でも、ロールに付与することができます。
  • DBADM、 SECADM、 DATAACCESS、 ACCESSCTRL、 SQLADM、 WLMADM、 LOAD、および IMPLICIT_SCHEMA データベース権限
  • CONNECT、 CREATETAB、 CREATE_NOT_FENCED、 BINDADD、 CREATE_EXTERNAL_ROUTINE、または QUIESCE_CONNECT データベースの権限
  • 任意のデータベース・オブジェクト特権 (CONTROL を含む)

ユーザーがデータベースに接続したとき、そのユーザーのロールは自動的に有効になり、許可の検討の対象になります。つまり、SET ROLE ステートメントを使用してロールを活動化する必要はありません。 例えば、ビュー、マテリアライズ照会表 (MQT)、トリガー、パッケージ、または SQL ルーチンを作成すると、ロールを通して取得した特権が適用されます。 ただし、自分がメンバーとして所属するグループに付与されたロールを通して取得した特権は適用されません。

ロールには所有者はいません。 セキュリティー管理者は、GRANT ステートメントの WITH ADMIN OPTION 節を使用して、ロールの管理を別のユーザーに委任することができます。それによって、他のユーザーがロールのメンバーシップを制御できるようになります。

制約事項

ロールの使用に関しては、次のようないくつかの制約事項があります。
  • ロールはデータベース・オブジェクトを所有できません。
  • 以下のデータベース・オブジェクトの作成時には、グループに付与された許可およびロールは検討の対象にはなりません。
    • 静的 SQL を格納するパッケージ。
    • ビュー
    • マテリアライズ照会表 (MQT)
    • トリガー
    • SQL ルーチン
    オブジェクトを作成するユーザーに対してか、または PUBLIC に対して直接または間接的に (例えばロール階層を介して) 付与されたロールだけが、上記のオブジェクトの作成時に検討の対象になります。