SQLサーバーでのデータベースアクセス許可管理の世界に関しては、私は非常に環境に配慮しています。

例を挙げましょう。単純です。

アカウント「admin」がスキーマA、B、Cの所有者であるとします。

完全な権限(更新/削除)が必要な別のアカウント「minion」があります。スキーマA、B、およびCで作成されたオブジェクト(テーブル/ビュー)の/ insert / select / alter)。

これは可能ですか?または、これらのスキーマの下にテーブル/ビューを追加するたびに、grantステートメントを実行する必要がありますか? (私には少しばかげているようです。)

回答

GRANTできます既存のすべてのおよびそのスキーマに存在するすべてのに有効なスキーマ権限。

スキーマ権限を付与する

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>; 

さらに、特定の権限を拒否する場合はそのスキーマ内のオブジェクトで実行できます。

オブジェクトのアクセス許可を拒否する

DENY INSERT ON OBJECT::<schema>.<object> TO <user>; 

コメント

  • スキーマまたはユーザー名に特殊文字が含まれている場合も、角括弧を使用します。例:.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • 'はAzureで機能しませんが、理由は何ですか? (コマンドは機能しますが、SSMSが表示され、"あなたはDbの所有者ではありません。..何とか何とか何とか。テーブルを保存できない可能性があります"そして確かに、' t(データベースにALLを付与しました(権限を表示します'データベース'、' < db name > '、TheUserId、'テーブルの作成'、および GRANT ')他に必要な魔法はありますか?それともAzureはDboでのみ使用できますか?

回答

もう少し簡単にするために、役割を使用して、探している仕事を行うことができます。

割り当てたらロールへのアクセス許可。ユーザーをロールに追加するだけです。この方法では、個々のユーザーのアクセス許可を管理する必要はありません。ユーザーはロールに付与された権限を継承します。

以下は、開始するための例です:

 -- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です