回答:
サンプルスクリプト
USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO
sp_addrolemember
SQL Server 2012から非推奨になりましたALTER ROLE
。代わりに使用する必要があります。
SQL Server内の許可をADグループに付与するのは比較的簡単です。T-SQLまたはManagement Studioを使用して実行できます。
たとえば、というADグループがある場合MYDOMAIN\APPLICATION SUPPORT
は、サーバーレベルでログインを作成し、個々のデータベースへのマッピングを使用して、データリーダーなどのもう少し細かいアクセス許可を付与します。
理想的には、すべてのアプリケーションアクセスはストアドプロシージャを介して行われる必要があるため、そのデータベースのストアドプロシージャに対する実行権限のみが必要です。
*セキュリティの観点から、特定のユーザーが特定のデータを見ることができるようにするために、プロシージャを作成し、そのプロシージャの実行権限のみをユーザーに付与できます。ユーザーが直接クエリできるようにすることは、関連するすべてのテーブルに対する選択権限を与えることを意味します。また、プロシージャの操作が簡単になり、デバッグも簡単になります。
ストアドプロシージャはテーブルアクセスを抽象化し、アクセスを制限します。DBAタイプにとっては、「すべてのインスタンス変数を表示させます。メソッド、ゲッター、またはセッターを使用したくない」のようなものです。
「Active DirectoryユーザーグループをSQL Serverのログインとして追加する方法」と回答したmarc_sから:
SQL Server Management Studioで、に移動しObject Explorer > (your server) > Security > Logins
て右クリックしますNew Login
。
次に、ポップアップするダイアログボックスで、表示するオブジェクトの種類を選択し(Groups
デフォルトでは無効になっています-チェックしてください!)、オブジェクトを検索する場所を選択して(たとえば、使用Entire Directory
)、ADグループを見つけます。
これで、通常のSQL Serverログインができました-単一のADユーザーに対してログインを作成するときと同じです。その新しいログインに、必要なデータベースのアクセス許可を与えてください。
そのADグループのメンバーは、SQL Serverにログインしてデータベースを使用できるようになりました。
ユーザーがSQLでSysadmin権限を持つDOMAIN \ SecurityGroupのメンバーである場合、データベースにアクセスするときにその権限が使用されます。それ以外の場合は、各データベースでDOMAIN \ SecurityGroup(s)に権限が付与されているものを調べる必要があります。ユーザーが2つのSecurityGroupsのメンバーであり、SecGroupAに選択権限があり、SecGroupBに挿入権限がある場合、ユーザーは選択して挿入できます。