私は2人のユーザーAとBを持っています。Aのスキーマ内のすべてのテーブルを作成、削除などする権限をBに付与したいと思います。私の知る限り、Bに特定のスキーマではなくすべてのスキーマへのフルアクセスを許可できます。これは正しいです?
スキーマ全体に対してユーザーに作成/削除/その他の権限を付与する方法がないことは正しいです。 プロキシ認証 を確認することをお勧めします。これには基本的に、ユーザー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を含むすべてのスキーマで作成権限が許可されますが、これはセキュリティ上の問題になります。
テーブルを作成するためにEXECUTE_IMMEDIATEを含むターゲットスキーマにプロシージャを作成するだけです(他のDDLをチェックしてください!!)。次に、プロシージャで実行するソーススキーマ特権を付与します。これは、セキュリティ上の懸念なしにうまくいくはずです。