web-dev-qa-db-ja.com

SQL Server 2008でActive Directoryグループ全体のセキュリティアクセスを割り当てるにはどうすればよいですか?

すべてドメイン上にある内部アプリケーションで統合セキュリティを使用したいと思います。残念ながら、これをうまく機能させることはできませんでした。 Exchange(Active Directory)グループ全体に、特定のテーブルへの読み取り/書き込みアクセスのためのSQL Serverのロールを割り当てたいのですが。そうすれば、誰かが雇われたときにオペレーターを作成したり、解雇されたときにオペレーターを削除したりする必要がなくなります。これは可能ですか?これを行うにはどうすればよいですか?

40
  • ADグループをログインとして設定します。 「ログイン」とは、ユーザー/ログインのAD概念ではなく、サーバーレベルのログインを意味します。 SQL Serverでは、これはサーバーレベルのプリンシパルです。
  • マップされたユーザーを作成します。実際には、テーブルで直接ユーザーに権限を与えるべきではありません。そして、「ユーザー」とは、ユーザーのADの概念ではなく、データベースユーザーを意味します。SQLServerでは、これは「データベースレベルのプリンシパル」です。
  • ユーザーをロールに追加します(これも「データベースレベルのプリンシパル」)
  • テーブルのロールに対する権限を付与します(テーブルまたはプロシージャなどは「セキュリティ保護可能」です)。

サンプルスクリプト

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 を代わりに使用する必要があります。

50
gbn

From marc_s answering "SQL ServerにログインとしてActive Directoryユーザーグループを追加する方法"

SQL Server Management StudioでObject Explorer > (your server) > Security > Loginsに移動し、New Loginを右クリックします。

enter image description here

次に、表示されるダイアログボックスで、表示するオブジェクトの種類を選択し(Groupsはデフォルトでは無効になっています。オンにしてください!)、オブジェクトを検索する場所を選択します(例:Entire Directory)次に、ADグループを見つけます。

enter image description here

これで、通常のSQL Serverログインが作成されました-単一のADユーザー用に作成した場合と同じです。その新しいログインに、必要なデータベースへのアクセス許可を与えてください。

これで、そのADグループのメンバーはSQL Serverにログインしてデータベースを使用できるようになります。

5
Even Mien

SQL Server内の権限をADグループに付与するのは比較的簡単です。 T-SQLまたはManagement Studioのいずれかを使用して実行できます。

たとえば、MYDOMAIN\APPLICATION SUPPORTというADグループがある場合は、サーバーレベルでログインを作成し、個々のデータベースへのマッピングを使用して、データリーダーなどのやや細かい権限を付与します。

理想的には、すべてのアプリケーションアクセスはストアドプロシージャ*を介して行う必要があるため、そのデータベース内のストアドプロシージャに対する実行権限のみが必要です。

*セキュリティの観点から、特定のユーザーが特定のデータを表示できるようにするには、プロシージャを作成し、そのプロシージャに対するexecuteパーミッションのみをユーザーに付与します。ユーザーが直接クエリできるようにすることは、関係するすべてのテーブルにselect権限を与えることを意味します。また、プロシージャの操作やデバッグも簡単です。

ストアドプロシージャは、テーブルアクセスを抽象化し、アクセスを制限します。 DBAのタイプにとっては、「すべてのインスタンス変数を表示させてください:メソッド、ゲッター、セッターを使いたくない」のようなものです。

4
Peter Schofield

ユーザーがSQLでSysadmin権限を持つDOMAIN\SecurityGroupのメンバーである場合、データベースにアクセスするときにそれが使用されます。それ以外の場合は、各データベースでどのDOMAIN\SecurityGroup(s)に権限が付与されているかを確認する必要があります。ユーザーが2つのSecurityGroupsのメンバーであり、SecGroupAに選択権限があり、SecGroupBに挿入権限がある場合、ユーザーは選択して挿入できます。

1
Piyush Agrawal