Question & Answer
Question
データベースの表やビューの読み取り専用のユーザーやグループを作るにはどうすればよいですか。
Cause
Db2 には読み取り専用ユーザーという概念がありません。
DATAACCESS 特権を持つユーザー、または個々の表やビューに対して SELECT 特権を持つユーザーが表データにアクセス可能です。
注:Db2 11.5.5 以降はスキーマへの SELECTIN 特権を持つユーザーはそのスキーマの表データにアクセス可能です。
そこで、ある表またはビューの集合に対して、SELECT 特権をもつロールを定義し、このロールをユーザーやグループに付与する運用を検討してください。
Answer
- Db2 11.5.4 以前の場合
指定したロールに特定のスキーマの表やビューに対する SELECT 特権を付与できます。
このロールを付与したユーザーやグループは、該当スキーマの表やビューに対する読み取り専用の特権を持ちます。- SECADM 権限のユーザーでデータベースに接続します。
db2 connect to <データベース名>
- 以下のコマンドを実行します。
・カレント・ディレクトリへの書き込み権限が必要です。
・以下の例では <ロール名> に <スキーマ名> の表やビューへの SELECT 特権を付与しています。db2 create role <ロール名>
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
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
- 該当のロールをユーザーやグループに割り当てます。
db2 grant role <ロール名> to user <ユーザー名>
db2 grant role <ロール名> to group <グループ名>
- SECADM 権限のユーザーでデータベースに接続します。
- Db2 11.5.5 以降の場合
指定したロールに特定のスキーマの SELECTIN 特権を付与できます。
このロールを付与したユーザーやグループは、該当スキーマの表やビューに対する読み取り専用の特権を持ちます。- SECADM 権限のユーザーでデータベースに接続します。
db2 connect to <データベース名>
- ロールを作成し、ロールに指定したスキーマの SELECTIN 特権を割り当てます。
db2 create role <ロール名> db2 grant selectin on schema <スキーマ名> to <ロール名>
- 該当のロールをユーザーやグループに割り当てます。
db2 grant role <ロール名> to user <ユーザー名>
db2 grant role <ロール名> to group <グループ名>
- SECADM 権限のユーザーでデータベースに接続します。
運用上の考慮点
- 各データベースの 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"}]
Was this topic helpful?
Document Information
Modified date:
15 August 2023
UID
ibm10737183