IBM Support

[Db2] 読み取り専用のユーザーを定義する方法

Question & Answer


Question

データベースの表やビューの読み取り専用のユーザーやグループを作るにはどうすればよいですか。

Cause

Db2 には読み取り専用ユーザーという概念がありません。
DATAACCESS 特権を持つユーザー、または個々の表やビューに対して SELECT 特権を持つユーザーが表データにアクセス可能です。
注:Db2 11.5.5 以降はスキーマへの SELECTIN 特権を持つユーザーはそのスキーマの表データにアクセス可能です。

そこで、ある表またはビューの集合に対して、SELECT 特権をもつロールを定義し、このロールをユーザーやグループに付与する運用を検討してください。

Answer

  • Db2 11.5.4 以前の場合
    指定したロールに特定のスキーマの表やビューに対する SELECT 特権を付与できます。
    このロールを付与したユーザーやグループは、該当スキーマの表やビューに対する読み取り専用の特権を持ちます。
    1. SECADM 権限のユーザーでデータベースに接続します。
      db2 connect to <データベース名>
    2. 以下のコマンドを実行します。
      ・カレント・ディレクトリへの書き込み権限が必要です。
      ・以下の例では <ロール名> に <スキーマ名> の表やビューへの SELECT 特権を付与しています。
      db2 create role <ロール名>
      Windows:
      db2 -x "select 'grant select on ""'||trim(tabschema)||'"".""'||trim(tabname)||'"" to <ロール名>;' from syscat.tables where tabschema in ('<スキーマ名>')" > grant_role.clp
      db2 -tvf grant_role.clp
      Linux/Unix:
      db2 -x "select 'grant select on \"'||trim(tabschema)||'\".\"'||trim(tabname)||'\" to <ロール名>;' from syscat.tables where tabschema in ('<スキーマ名>')" > grant_role.clp
      db2 -tvf grant_role.clp
    3. 該当のロールをユーザーやグループに割り当てます。
      db2 grant role <ロール名> to user <ユーザー名>
      db2 grant role <ロール名> to group <グループ名>
  • Db2 11.5.5 以降の場合
    指定したロールに特定のスキーマの SELECTIN 特権を付与できます。
    このロールを付与したユーザーやグループは、該当スキーマの表やビューに対する読み取り専用の特権を持ちます。
    1. SECADM 権限のユーザーでデータベースに接続します。
      db2 connect to <データベース名>
    2. ロールを作成し、ロールに指定したスキーマの SELECTIN 特権を割り当てます。
      db2 create role <ロール名>
      db2 grant selectin on schema <スキーマ名> to <ロール名>
    3. 該当のロールをユーザーやグループに割り当てます。
      db2 grant role <ロール名> to user <ユーザー名>
      db2 grant role <ロール名> to group <グループ名>

運用上の考慮点

  • 各データベースの SECADM ユーザー名は、以下の SQL で一覧できます。
    デフォルトでデータベースを作成したユーザーに SECADM が割り当てられます。
    db2 connect to <データベース名>
    db2 "select GRANTEE from syscat.dbauth where SECURITYADMAUTH='Y'"
  • スキーマ特権で権限を付与してない場合、スキーマに表やビューが追加された場合、追加された表やビューに対する SELECT 特権を別途ロールに付与していく必要があります。

関連情報
[Db2] 制限つきデータベースで特定の表の参照権限を付与する方法
パスポート・アドバンテージによく寄せられる質問
 

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlOAAU","label":"Security and Plug-Ins-\u003EAuthorization and Privilege"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
15 August 2023

UID

ibm10737183