

# AD セキュリティグループメンバーシップの権限の使用
<a name="babelfish-kerberos-securityad-privileges"></a>

## サーバーレベルの権限の継承
<a name="babelfish-kerberos-securityad-inheritpriv-server"></a>

 特定の AD セキュリティグループのメンバーである AD ユーザーは、マッピングされた Windows グループログインに付与されたサーバーレベルの権限を継承します。例えば、Babelfish の `sysadmin` サーバーロールにメンバーシップが付与されている `accounts-group` AD セキュリティグループを考えてみましょう。次のコマンドを使用して、サーバーレベルの権限を継承できます。

```
1> ALTER SERVER ROLE sysadmin ADD MEMBER [corp\accounts-group];
```

 したがって、`accounts-group` AD セキュリティグループのメンバーである Active Directory ユーザーは、`sysadmin` ロールに関連付けられたサーバーレベルの権限を継承します。つまり、`accounts-group` のメンバーである `corp\user1` のようなユーザーは、Babelfish 内でサーバーレベルのオペレーションを実行できるようになります。

**注記**  
 サーバーレベルの DDL を実行するには、個々の AD ユーザーの Windows ログインが存在している必要があります。詳細については、「[制限](babelfish-kerberos-securityad-limitations.md)」を参照してください。

## データベースレベルの権限の継承
<a name="babelfish-kerberos-securityad-inheritpriv-database"></a>

 データベースレベルの権限を付与するには、データベースユーザーを作成し、Windows グループログインとマッピングする必要があります。特定の AD セキュリティグループのメンバーである AD ユーザーは、そのデータベースユーザーに付与されたデータベースレベルの権限を継承します。次の例では、Windows グループ [corp\\accounts-group] のデータベースレベルの権限がどのように割り当てられているかを確認できます。

```
1> CREATE DATABASE db1; 
2> GO
1> USE db1;
2> GO
Changed database context to 'db1'.
1> CREATE TABLE dbo.t1(a int);
2> GO
```

 Windows グループログイン [corp\\accounts-group] 用のデータベースユーザー [corp\\sales-group] を作成します。このステップを実行するには、sysadmin のメンバーであるログインを使用して TDS エンドポイント経由で接続します。

```
1> CREATE USER [corp\accounts-group] FOR LOGIN [corp\accounts-group];
2> GO
```

 次に、AD ユーザー user1 として接続し、テーブル t1 へのアクセスを確認します。データベースレベルの権限をまだ付与していないため、アクセス許可の拒否エラーが発生します。

```
1> SELECT * FROM dbo.t1;
2> GO
Msg 33557097, Level 16, State 1, Server db-inst, Line 1
permission denied for table t1
```

データベースユーザー [corp\\accounts-group] にテーブル t1 の SELECT を付与します。このステップを実行するには、sysadmin のメンバーであるログインを使用して TDS エンドポイント経由で接続します。

```
1> GRANT SELECT ON dbo.t1 TO [corp\accounts-group];
2> GO
```

 AD ユーザー user1 として接続し、アクセスを検証します。

```
1> SELECT * FROM dbo.t1;
2> GO
a
-----------

(0 rows affected)
```