web-dev-qa-db-ja.com

SQL Server-オブジェクト全体に対してスキーマ全体に権限を付与しますか?

SQL Severでのデータベース権限管理の世界に関しては、私はとても環境に配慮しています。

例を単純にしてみましょう。

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

スキーマA、B、Cで作成されたオブジェクト(テーブル/ビュー)に対する完全な権限(更新/削除/挿入/選択/変更)を取得したい別のアカウント「ミニオン」があります。

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

29
user45867

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

スキーマ権限を付与

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

さらに、そのスキーマ内の特定のオブジェクトに対するアクセス許可を拒否する場合は、それを行うことができます。

オブジェクト権限の拒否

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

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

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

以下はあなたが始めるための例です:

 -- 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 
14
Kin Shah