概要
公開日: 2007年3月19日
更新日: 2007年8月30日、更新概要は更新履歴を参照してください。
表のSELECT特権のあるユーザーが表のALIASを使えば、その表へのUPDATE特権やDELETE特権を持つかのような操作が出来る問題が報告されています。
現象
表のSELECT特権のあるユーザーが表のALIASを使えば、その表へのUPDATE特権やDELETE特権を持つかのような操作が出来る問題が報告されています。
対象製品
Linux,Unix,Windowsプラットフォーム上の、DB2 UDB V8 FixPak10-14、 DB2 V9 GA、FixPak1
【補足】
DB2の初期設定では、表に対するSELECT特権が与えられていて、UPDATE特権、DELETE特権を与えられていないユーザー/グループは存在しません。
例えば、以下のようなコマンドを使用して特定のユーザー/グループに対して、意図的に、SELECT特権のみを付与しているような場合に、この問題が該当します。
GRANT SELECT ON CORPDATA.EMPLOYEE TO USERA
確認方法
db2levelコマンドを実行することで導入されているDB2のバージョンと修正プログラムのレベルが分かります。
db2level出力例(AIX版 DB2 V8 fixpak10の例)
$ db2level
DB21085I インスタンス "v8fp10" は、"32" ビットおよび DB2 コード・リリース
"SQL08023" をレベル ID "03040106" で使用します。
情報トークンは、"DB2 v8.1.1.96"、"s050811"、"U803920"、および FixPak "10" です。
製品は "/usr/opt/db2_08_FP10" にインストールされます。
対応方法
【修正プログラム適用】
DB2 V9:
FixPak2を適用して下さい。
DB2 V9のFixpakのダウンロードサイト
http://ibm.com/support/docview.wss?rs=71&uid=swg21255572(US)
DB2 V8:
恒久策としてFixPak15の適用を推奨します。
DB2 V8のFixPakのダウンロードサイト
http://ibm.com/support/docview.wss?rs=71&uid=swg21256235(US)
Special Buildについては、PAサポート経由にて個別にご相談ください。
SpecialBuildのご提供に関しては、IBMソフトウェアのサポート・ポリシーに従います。
IBMソフトウェアのサポート(FixPak, Special Build, TCOサポート契約など)に関する説明資料
http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/00298CDC
他の問題でSpecial Buildを提供する場合で、当該問題が該当するDB2UDB V8 FixPak10-14ベースにつきましては、この修正(JR25941)がデフォルトで含まれます。
【該当するケース】
表のSELECT特権と共に、UPDATE特権もDELETE特権も与えているユーザー/グループばかりの使用環境ではこの件は当てはまりません。
該当するユーザー/グループは次の3つです。以下のユーザーの管理を強化することが望ましいです。
- ある表にSELECT特権があり、UPDATE特権がある、DELETE特権がない
すなわち、SYSCAT.TABAUTHでSELECTAUTHがY UPDATEAUTHがY DELETEAUTH がN - ある表にSELECT特権があり、UPDATE特権がない、DELETE特権がある
すなわち、SYSCAT.TABAUTHでSELECTAUTHがY UPDATEAUTHがN DELETEAUTHがY - ある表にSELECT特権があり、UPDATE特権がない、DELETE特権がない
すなわち、SYSCAT.TABAUTH でSELECTAUTH がY UPDATEAUTHがN DELETEATUHがN
【修正適用以外の回避策例】
該当するユーザー/グループが存在する場合、以下の1~3を、考慮点に注意して実施します。
- 既存のALIASはDROP ALIASし、ALIASが業務で必要な場合は同名でVIEWを作り代用します。
(実施にあたっては考慮点[1]参照) - 新しいALIASが作成できないように、既存のスキーマに対するCREATEIN特権を、該当するユーザー/グループ、PUBLICからREVOKEします。REVOKE CREATEIN ON SCHEMA schemaname FROM user usenamer/group groupname/PUBLIC
(実施にあたっては考慮点[2]参照) - 新しいスキーマが自動的には作成されないように、データベースに対するIMPLICIT_SCHEMA権限をPUBLICからREVOKEします。
REVOKE IMPLICIT_SCHEMA ON DATABASE FROM PUBLIC
(実施にあたっては考慮点[3]参照)
【考慮点】
[1] CREATE VIEW:CEATE VIEW/DROP VIEW操作は CREATE ALIAS/DROP ALIASに比べカタログへのロックを多く使うので並列に実行する場合はデッドロックを誘発しやすくなります。 対策は、UOWを短く取り、競合のタイミングを減らす、デッドロック発生時にはリランする、または単体実行としてスケジュールすること等です。
<補足>
ALIASの存在有無は以下のコマンド例で確認可能です。
select char( TABSCHEMA, 16 ) as TABSCHEMA, char( TABNAME, 16 ) as TABNAME, char( DEFINER, 16 ) as DEFINER, TYPE, STATUS, char( TBSPACE, 16 ) as TBSPACE from SYSCAT.TABLES where TYPE = 'A'
[2] REVOKE CREATEIN ON SCHEMA: REVOKEの結果、ALIASだけでなくTABLE / INDEX / ストアード・プロシージャなどオブジェクトの作成が原則不可となります。これらはDBADMで実施する、または、該当しないユーザーで実施するなど、代替策の確立が必要です。
<補足>
スキーマに対するCREATEIN特権の有無は以下のコマンド例で確認可能です。
select char( GRANTEE, 24 ) as GRANTEE, GRANTEETYPE, char(SCHEMANAME, 24 ) as SCHEMANAME, CREATEINAUTH from SYSCAT.SCHEMAAUTH
[3] REVOVE IMPLICIT_SCHEMA ON DAGTABASE: REVOKEの結果、事前のCREATE SCHEMA操作なしにはオブジェクトのCREATEが出来なくなります。CREATE SCHEMAをオブジェクト管理上の新たな作業項目として組み込む必要があります。
お問合せ先
PAテクニカルサポート総合窓口
(有効なメンテナンス契約IBM番号をお持ちのお客様)
電話:0120-557-971
受付時間:月曜日~金曜日 9時~17時(祝日、12月30日~1月3日を除く)
