本来ユーザ部門で 更新許可を与えているテーブルだけが更新可能なよう 今回統制を図りたいです。
という事なので、権限の付与はユーザーではなく、統制のパターンをロールとして定義してロールに権限付与とする方がメンテナンスはし易そうです。
※以下はAIからの回答を元に作成しています。細かいところまでチェックはしておりませんので悪しからず。
1.ロールの作成
パターンごとにロールを作成します。
SQL
1USE [YourDatabase];
2GO
3-- ロールの作成(パターンごとに分ける)
4CREATE ROLE MasterUpdate_PatternA;
5CREATE ROLE MasterUpdate_PatternB;
6CREATE ROLE MasterUpdate_PatternC;
7GO
2.テーブル単位で権限を付与
各ロールに対して、更新対象のテーブルごとに権限を付与します。
sql
1USE [YourDatabase];
2GO
3
4-- パターンA用のロールにテーブルAへの権限を付与
5GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.MasterTable_A TO MasterUpdate_PatternA;
6
7-- パターンB用のロールにテーブルBへの権限を付与
8GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.MasterTable_B TO MasterUpdate_PatternB;
9
10-- パターンC用のロールにテーブルCへの権限を付与
11GRANT SELECT, INSERT, UPDATE, DELETE ON dbo.MasterTable_C TO MasterUpdate_PatternC;
12GO
3.ユーザーの作成
各パターンの処理用にユーザーを作成します。
sql
1-- ユーザーの作成(Windows認証を使用しない場合)
2CREATE LOGIN UserA WITH PASSWORD = 'StrongPasswordA';
3CREATE LOGIN UserB WITH PASSWORD = 'StrongPasswordB';
4CREATE LOGIN UserC WITH PASSWORD = 'StrongPasswordC';
5GO
6
7USE [YourDatabase];
8GO
9
10CREATE USER UserA FOR LOGIN UserA;
11CREATE USER UserB FOR LOGIN UserB;
12CREATE USER UserC FOR LOGIN UserC;
13GO
4.ユーザーをロールに追加
ユーザーをそれぞれのパターン用ロールに追加します。
sql
1USE [YourDatabase];
2GO
3
4ALTER ROLE MasterUpdate_PatternA ADD MEMBER UserA;
5ALTER ROLE MasterUpdate_PatternB ADD MEMBER UserB;
6ALTER ROLE MasterUpdate_PatternC ADD MEMBER UserC;
7GO