web-dev-qa-db-ja.com

Oracle 11gの特定のスキーマに対する作成権限を付与する

私は2人のユーザーAとBを持っています。Aのスキーマ内のすべてのテーブルを作成、削除などする権限をBに付与したいと思います。私の知る限り、Bに特定のスキーマではなくすべてのスキーマへのフルアクセスを許可できます。これは正しいです?

7
Michael-O

スキーマ全体に対してユーザーに作成/削除/その他の権限を付与する方法がないことは正しいです。 プロキシ認証 を確認することをお勧めします。これには基本的に、ユーザーAを変更して、ユーザーBがAとしてプロキシできるようにします。

ALTER USER A GRANT CONNECT THROUGH B;

次に、接続はユーザーBの認証を使用しますが、ユーザーAの権限を取得します。

connect B[A]/Password@Database

この質問は、私のより具体的な質問 here によってある程度カバーされていました。


役割に関する注意:特権は特定のオブジェクトに関連付けられているため、役割は、Object Privilegesを別のユーザーに与えるのに適しています。ロールはシステム権限を付与できますが、ユーザー自身のスキーマまたはデータベース全体に適用されるため、別のスキーマには適用できません。たとえば、ユーザーBにCREATE TABLE独自のスキーマでテーブルを作成できるようにするか、CREATE ANY TABLEこれにより、任意のスキーマでテーブルを作成できます。これらの権限は直接またはロールを介して付与できますが、前者はAスキーマでの作成権限を許可しません。後者では、sysを含むすべてのスキーマで作成権限が許可されますが、これはセキュリティ上の問題になります。

11
Leigh Riffel

テーブルを作成するためにEXECUTE_IMMEDIATEを含むターゲットスキーマにプロシージャを作成するだけです(他のDDLをチェックしてください!!)。次に、プロシージャで実行するソーススキーマ特権を付与します。これは、セキュリティ上の懸念なしにうまくいくはずです。

0
blantomat