

# セルフマネージド Active Directory の設定
<a name="db2-self-managed-active-directory.SettingUp"></a>

セルフマネージド AD を設定するには、次の手順を実行してください。

**Topics**
+ [ステップ 1: AD に組織単位を作成する](#db2-self-managed-active-directory.SettingUp.CreateOU)
+ [ステップ 2: AD に AD ドメインサービスアカウントを作成する](#db2-self-managed-active-directory.SettingUp.CreateADuser)
+ [ステップ 3: AD ドメインサービスアカウントに制御を委任する](#db2-self-managed-active-directory.SettingUp.DelegateControl)
+ [ステップ 4: AWS KMS キーを作成する](#db2-self-managed-active-directory.SettingUp.CreateKMSkey)
+ [ステップ 5: AWS シークレットを作成する](#db2-self-managed-active-directory.SettingUp.CreateSecret)
+ [ステップ 6: Db2 DB インスタンスを作成または変更する](#db2-self-managed-active-directory.SettingUp.CreateModify)

## ステップ 1: AD に組織単位を作成する
<a name="db2-self-managed-active-directory.SettingUp.CreateOU"></a>

**重要**  
セルフマネージド AD ドメインに参加した RDS for Db2 DB インスタンスを所有する AWS アカウントに、専用の OU とその OU を対象とするサービス認証情報を作成することをお勧めします。OU とサービス認証情報を専用にすることで、アクセス許可の競合を回避し、最小特権の原則に従うことができます。

**AD に OU を作成するには**

1. ドメイン管理者として AD ドメインに接続します。

1. **[Active Directory ユーザーとコンピューター]** を開き、OU を作成するドメインを選択します。

1. ドメインのコンテキストメニューを開き、**[新規]** を選択し、**[組織単位]** を選択します。

1. OU の名前を入力します。

1. **[コンテナを誤って削除しないように保護する]** ボックスはオンのままにしてください。

1. [**OK**] を選択してください。新しい OU がドメインの下に表示されます。

## ステップ 2: AD に AD ドメインサービスアカウントを作成する
<a name="db2-self-managed-active-directory.SettingUp.CreateADuser"></a>

ドメインサービスアカウントの認証情報は AWS Secrets Manager のシークレットに使用されます。

**AD に AD ドメインサービスアカウントを作成するには**

1. **[Active Directory ユーザーとコンピューター]** を開き、ユーザーを作成するドメインと OU を選択します。

1. **[ユーザー]** のコンテキストメニューを開き、**[新規]**、**[ユーザー]** の順に選択します。

1. ユーザーの名、姓、およびログオン名を入力します。[**次へ**] を選択します。

1. ユーザーのパスワードを入力します。**[ユーザーは次回のログイン時にパスワードを変更する必要がある]** を選択しないでください。**[アカウントは無効です]** を選択しないでください。[**次へ**] を選択します。

1. [**OK**] を選択してください。新しいユーザーがドメインの下に表示されます。

## ステップ 3: AD ドメインサービスアカウントに制御を委任する
<a name="db2-self-managed-active-directory.SettingUp.DelegateControl"></a>

### パート A: コントロールの委任ウィザードを使用してアクセス許可を委任する
<a name="db2-self-managed-active-directory.SettingUp.DelegateControl.Wizard"></a>

**ドメイン内の AD ドメインサービスアカウントに制御を委任するには**

1. **[Active Directory ユーザーとコンピュータ]** Microsoft 管理コンソール (MMC) スナップインを開き、ユーザーを作成するドメインを選択します。

1. 前に作成した OU のコンテキストメニューを開き、**[コントロールの委任]** を選択します。

1. **[コントロールの委任ウィザード]** で、**[次へ]** を選択します。

1. **[ユーザーまたはグループ]** セクションで、**[追加]** を選択します。

1. **[ユーザー、コンピュータ、またはグループの選択]** セクションで、作成した AD ドメインサービスアカウントを入力し、**[名前を確認]** を選択します。AD ドメインサービスアカウントのチェックが成功したら、**[OK]** を選択します。

1. **[ユーザーまたはグループ]** セクションで、AD ドメインサービスアカウントが追加されたことを確認し、**[次へ]** を選択します。

1. **[委任するタスク]** セクションで、**[委任するカスタムタスクを作成]** を選択し、**[次へ]** を選択します。

1. **[Active Directory オブジェクトタイプ]** セクションで:

   1. **[フォルダ内の次のオブジェクトのみ]** を選択します。

   1. **[ユーザーオブジェクト]** を選択します。

   1. **[このフォルダに選択したオブジェクトを作成]** を選択します。

   1. **[このフォルダ内の選択したオブジェクトを削除]** を選択し、**[次へ]** を選択します。

1. **[アクセス許可]** セクションで:

   1. **[全般]** を選択したままにします。

   1. **[プロパティ固有]** を選択します。

   1. **[特定の子オブジェクトの作成/削除]** を選択します。

   1. **[パスワードのリセット]** を選択します。

   1. **[msDS-SupportedEncryptionTypes の読み取り]** を選択します。

   1. **[msDS-SupportedEncryptionTypes の書き込み]** を選択します。

1. **[コントロールの委任ウィザードの完了]** で設定を確認し、**[完了]** を選択します。

### パート B: PowerShell を使用して servicePrincipalName アクセス許可を委任する
<a name="db2-self-managed-active-directory.SettingUp.DelegateControl.PowerShell"></a>

コントロールの委任ウィザードは、ユーザーオブジェクトの `servicePrincipalName` プロパティを公開しません。ドメインコントローラーで次の PowerShell スクリプトを実行し、AD ドメインサービスアカウントに OU のユーザーオブジェクトの `servicePrincipalName` に対する読み取りおよび書き込みアクセスを許可します。

{{service-account}} をステップ 2 で作成した AD ドメインサービスアカウントの名前に置き換え、ステップ 1 で作成した OU と一致するように OU 識別名を更新します。

```
$ou = "OU={{my-AD-test-OU}},DC={{my-AD-test}},DC={{my-AD}},DC={{my-domain}}"
$user = Get-ADUser "{{service-account}}"
$acl = Get-Acl "AD:\$ou"

$schemaPath = (Get-ADRootDSE).schemaNamingContext
$spnSchema = Get-ADObject -SearchBase $schemaPath -Filter {lDAPDisplayName -eq "servicePrincipalName"} -Properties schemaIDGUID
$spnGuid = New-Object Guid (,$spnSchema.schemaIDGUID)
$userGuid = New-Object Guid "bf967aba-0de6-11d0-a285-00aa003049e2"

$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule(
   $user.SID,
   "ReadProperty,WriteProperty",
   "Allow",
   $spnGuid,
   "Descendents",
   $userGuid
)

$acl.AddAccessRule($ace)
Set-Acl "AD:\$ou" $acl
```

アクセス許可が正しく適用されていることを確認するには、次の PowerShell スクリプトを実行します。

```
$acl = Get-Acl "AD:\$ou"
$acl.Access | Where-Object { $_.IdentityReference -like "*{{service-account}}*" } | Format-List
```

## ステップ 4: AWS KMS キーを作成する
<a name="db2-self-managed-active-directory.SettingUp.CreateKMSkey"></a>

KMS キーは、AWS シークレットを暗号化します。

**注記**  
**[暗号化キー]** として、AWS デフォルトの KMS キーを使用しないでください。AWS KMS キーは、セルフマネージド AD に参加させる RDS for Db2 DB インスタンスを含んでいるのと同じ AWS アカウントに作成してください。

**AWS KMS キーを作成するには**

1. [https://console.aws.amazon.com/kms/](https://console.aws.amazon.com/kms/) で AWS KMS コンソールを開きます。**[Create key]** (キーの作成) を選択します。

1. **[キーの種類]** として、**[対称]** を選択します。

1. **[キーの使用方法]** として、**[暗号化と復号化]** を選択します。

1. [**Advanced options (詳細オプション)**] の場合:

   1. **[キーマテリアルのオリジン]** として、**[KMS]** を選択します。

   1. **[リージョナリティ]** では、**[単一リージョンキー]** を選択し、**[次へ]** を選択します。

1. **[エイリアス]** に、KMS キーの名前を指定します。

1. (オプション) **[説明]** に、KMS キーの説明を入力します。

1. (オプション) **タグ**で、KMS キーのタグを指定し、**次へ**を選択します。

1. **[キー管理者]** として、IAM ユーザーの名前を入力して選択します。

1. **[キーの削除]** で、**[キー管理者にこのキーの削除を許可する]** のボックスをオンのままにして、**[次へ]** を選択します。

1. **[キーユーザー]** として、前のステップと同じ IAM ユーザーを指定して選択します。[**次へ**] を選択します。

1. 設定を確認します。

1. **[キーポリシー]** で、以下をポリシー **[ステートメント]** に含めます。

   ```
   {
       "Sid": "Allow use of the KMS key on behalf of RDS",
       "Effect": "Allow",
       "Principal": {
           "Service": [
               "rds.amazonaws.com"
           ]
       },
       "Action": "kms:Decrypt",
       "Resource": "*"
   }
   ```

1. [**Finish**] を選択してください。

## ステップ 5: AWS シークレットを作成する
<a name="db2-self-managed-active-directory.SettingUp.CreateSecret"></a>

**注記**  
シークレットは、セルフマネージド AD に参加させる RDS for Db2 DB インスタンスを含んでいるのと同じ AWS アカウントに作成してください。

**シークレットを作成する**

1. [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) から AWS Secrets Manager コンソールを開きます。**新しいシークレットを保存** を選択します。

1. **[Secret type] (シークレットタイプ)** で、**[Other type of secret]** (他の種類のシークレット) を選択します。

1. **[キーと値のペア]** として、次の 2 つのキーを追加します。

   1. 最初のキーには、`SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME` と入力します。

   1. 最初のキーの値には、AD ユーザーのユーザー名 (ドメインプレフィックスなし) のみを入力します。ドメイン名を含めないでください。含めると、インスタンスの作成が失敗します。

   1. 2 番目のキーとして、`SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD` と入力します。

   1. 2 番目のキーの値には、ドメインの AD ユーザー用に作成したパスワードを入力します。

1. **[暗号化キー]** で、前のステップで作成した KMS キーを入力し、**[次へ]** を選択します。

1. **[シークレット名]** として、後でシークレットを見つけやすい、わかりやすい名前を入力します。

1. (オプション) **[説明]** として、シークレット名の説明を入力します。

1. **リソース権限**については、**編集**を選択します。

1. 以下のポリシーをアクセス許可ポリシーに追加します。
**注記**  
*Confused Deputy* Problem (混乱した代理の問題) を回避するために、ポリシーの `aws:sourceAccount` および `aws:sourceArn` 条件を使用することをお勧めします。`aws:sourceAccount` の AWS アカウントと `aws:sourceArn` の RDS for Db2 DB インスタンス ARN を使用します。詳細については、「[サービス間での混乱した代理問題の防止](cross-service-confused-deputy-prevention.md)」を参照してください。

   ```
   {
       "Version":"2012-10-17",
       "Statement":
       [
           {
               "Effect": "Allow",
               "Principal":
               {
                   "Service": "rds.amazonaws.com"
               },
               "Action": "secretsmanager:GetSecretValue",
               "Resource": "*",
               "Condition":
               {
                   "StringEquals":
                   {
                       "aws:sourceAccount": "123456789012"
                   },
                   "ArnLike":
                   {
                       "aws:sourceArn": "arn:aws:rds:us-west-2:123456789012:db:*"
                   }
               }
           }
       ]
   }
   ```

1. **[保存]**、**[次へ]** の順に選択します。

1. **[ローテーションの設定]** は、デフォルト値のままにして、**[次へ]** を選択します。

1. シークレットの設定を確認し、**[保存]** を選択します。

1. 作成したシークレットを選択し、**[シークレット ARN]** の値をコピーします。この値を次のステップで使用して、セルフマネージド Active Directory をセットアップします。

## ステップ 6: Db2 DB インスタンスを作成または変更する
<a name="db2-self-managed-active-directory.SettingUp.CreateModify"></a>

AWS CLI を使用して、RDS for Db2 DB インスタンスをセルフマネージド AD ドメインに関連付けることができます。これは、次のいずれかの方法で行うことができます。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) CLI コマンドを使用して、新しい Db2 DB インスタンスを作成します。手順については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。
+ [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI コマンドを使用して、既存の Db2 DB インスタンスを変更します。手順については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

AWS CLI を使用する場合は、DB インスタンスが、作成したセルフマネージド AD ドメインを使用できるように、以下のパラメータが必要です。
+ `--domain-fqdn` パラメータには、セルフマネージド AD の完全修飾ドメイン名 (FQDN) を使用します。
+ `--domain-ou` パラメータには、セルフマネージド AD で作成した OU を使用します。
+ `--domain-auth-secret-arn` パラメータには、前のステップで作成したシークレット ARN の値を使用します。
+ `--domain-dns-ips` パラメータには、セルフマネージド AD の DNS サーバーのプライマリ IPv4 アドレスとセカンダリ IPv4 アドレスを使用します。セカンダリ DNS サーバーの IP アドレスがない場合は、プライマリ IP アドレスを 2 回入力します。

次の CLI コマンドは、新しい RDS for Db2 DB インスタンスを作成し、それをセルフマネージド AD ドメインに参加させます。

Linux、macOS、Unix の場合:

```
aws rds create-db-instance \
    --db-instance-identifier {{my-DB-instance}} \
    --db-instance-class db.m6i.large \
    --allocated-storage 50 \
    --engine db2-se \
    --engine-version 11.5 \
    --master-username {{my-master-username}} \
    --master-user-password {{my-master-password}} \
    --domain-fqdn {{my_AD_domain.my_AD.my_domain}} \
    --domain-ou {{OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain}} \
    --domain-auth-secret-arn "arn:aws:secretsmanager:{{region}}:{{account-number}}:secret:{{my-AD-test-secret-123456}}" \
    --domain-dns-ips "{{10.11.12.13}}" "{{10.11.12.14}}"
```

Windows の場合:

```
aws rds create-db-instance ^
    --db-instance-identifier {{my-DB-instance}} ^
    --db-instance-class db.m6i.large ^
    --allocated-storage 50 ^
    --engine db2-se ^
    --engine-version 11.5 ^
    --master-username {{my-master-username}} ^
    --master-user-password {{my-master-password}} ^
    --domain-fqdn {{my_AD_domain.my_AD.my_domain}} ^
    --domain-ou {{OU=my-AD-test-OU,DC=my-AD-test,DC=my-AD,DC=my-domain}} ^
    --domain-auth-secret-arn "arn:aws:secretsmanager:{{region}}:{{account-number}}:secret:{{my-AD-test-secret-123456}}" ^
    --domain-dns-ips "{{10.11.12.13}}" "{{10.11.12.14}}"
```