

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定自我管理 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 資料庫執行個體](#db2-self-managed-active-directory.SettingUp.CreateModify)

## 步驟 1：在您的 AD 中建立組織單位
<a name="db2-self-managed-active-directory.SettingUp.CreateOU"></a>

**重要**  
我們建議為擁有加入自我管理 AD 網域的 RDS for Db2 資料庫執行個體的任何 AWS 帳戶建立範圍為該 OU 的專用 OU 和服務憑證。透過指定 OU 和服務登入資料，您可以避免衝突的許可，並遵循最低權限原則。

**在您的 AD 中建立 OU**

1. 以網域管理員身分連線至您的 AD 網域。

1. 開啟 **Active Directory 使用者和電腦**，然後選取您要在其中建立 OU 的網域。

1. 開啟網域的內容選單，選擇**新增**，然後選擇**組織單位**。

1. 輸入 OU 的名稱。

1. 保持選取**保護容器免遭意外刪除**的方塊。

1. 選擇**確定**。您的新 OU 會出現在您的網域下方。

## 步驟 2：在您的 AD 中建立 AD 網域服務帳戶
<a name="db2-self-managed-active-directory.SettingUp.CreateADuser"></a>

使用網域服務帳戶登入資料做為 Secrets Manager 中的 AWS 秘密。

**在您的 AD 中建立 AD 網域服務帳戶**

1. 開啟 **Active Directory 使用者和電腦**，然後選取您要在其中建立使用者的網域。

1. 開啟**使用者**的內容選單，選擇**新增**，然後選擇**使用者**。

1. 輸入使用者的名字、姓氏和登入名稱。選擇**下一步**。

1. 輸入使用者的密碼。不要選取 **使用者必須在下次登入時變更密碼**。不選取**帳戶已停用**。選擇**下一步**。

1. 選擇**確定**。您的新使用者會出現在您的網域下。

## 步驟 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) Snap-in，然後選取您要建立使用者的網域。

1. 開啟您先前建立之 OU 的內容選單，然後選擇**委派控制**。

1. 在**控制委派精靈**上，選擇**下一步**。

1. 在**使用者或群組**區段中，選擇**新增**。

1. 在**選取使用者、電腦或群組**區段中，輸入您建立的 AD 網域服務帳戶，然後選擇**檢查名稱**。如果您的 AD 網域服務帳戶檢查成功，請選擇**確定**。

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 網域服務帳戶`servicePrincipalName`對 OU 中使用者物件的讀取和寫入存取權。

以您在步驟 2 中建立的 AD 網域服務帳戶名稱取代 {{service-account}}，並更新 OU 辨別名稱以符合您在步驟 1 中建立的 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 帳戶中建立 AWS KMS 金鑰，其中包含您要加入自我管理 AD 的 RDS for Db2 資料庫執行個體。

**建立 AWS KMS 金鑰**

1. 在 https：//[https://console.aws.amazon.com/kms/](https://console.aws.amazon.com/kms/) 開啟 AWS KMS 主控台。選擇**建立金鑰**。

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. 選擇**完成**。

## 步驟 5：建立 AWS 秘密
<a name="db2-self-managed-active-directory.SettingUp.CreateSecret"></a>

**注意**  
請務必在包含您要加入自我管理 AD 的 RDS for Db2 資料庫執行個體的相同 AWS 帳戶中建立秘密。

**若要建立機密**

1. 在 https：//[https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/) 開啟 AWS Secrets Manager 主控台。選擇**存放新的機密**。

1. 針對**機密類型**，選擇**其他類型的機密**。

1. 對於**金鑰/值對**，新增兩個金鑰：

   1. 對於第一個金鑰，輸入 `SELF_MANAGED_ACTIVE_DIRECTORY_USERNAME`。

   1. 對於第一個金鑰的值，僅輸入 AD 使用者的使用者名稱 (不含網域字首)。請勿包含網域名稱，因為這會導致執行個體建立失敗。

   1. 對於第二個金鑰，輸入 `SELF_MANAGED_ACTIVE_DIRECTORY_PASSWORD`。

   1. 對於第二個金鑰的值，輸入您在網域上為 AD 使用者建立的密碼。

1. 針對**加密金鑰**，輸入您在上一個步驟中建立的 KMS 金鑰，然後選擇**下一步**。

1. 對於**秘密名稱**，輸入可協助您稍後尋找密碼的描述性名稱。

1. (選用) 對於**描述**，輸入秘密名稱的描述。

1. 針對**資源許可**，選擇**編輯**。

1. 請將下列政策新增至許可政策：
**注意**  
建議您使用政策中的 `aws:sourceAccount` 和 `aws:sourceArn` 條件金鑰，保護自己免受*混淆代理人問題*的困擾。使用 的 AWS 帳戶`aws:sourceAccount`和 的 RDS for Db2 資料庫執行個體 ARN`aws:sourceArn`。如需詳細資訊，請參閱[防止跨服務混淆代理人問題](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 資料庫執行個體
<a name="db2-self-managed-active-directory.SettingUp.CreateModify"></a>

您可以使用 AWS CLI 將 RDS for Db2 資料庫執行個體與自我管理 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 資料庫執行個體。如需說明，請參閱[建立 Amazon RDS 資料庫執行個體](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 資料庫執行個體。如需說明，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

當您使用 AWS CLI 時，資料庫執行個體需要下列參數，才能使用您建立的自我管理 AD 網域：
+ 對於 `--domain-fqdn` 參數，使用自我管理 AD 的完整網域名稱 (FQDN)。
+ 對於 `--domain-ou` 參數，使用您在自我管理 AD 中建立的 OU。
+ 對於 `--domain-auth-secret-arn` 參數，請使用您在上一個步驟中建立的秘密 ARN 的值。
+ 對於 `--domain-dns-ips` 參數，針對自我管理 AD 使用 DNS 伺服器的主要和次要 IPv4 地址。如果您沒有次要 DNS 伺服器 IP 地址，請輸入主要 IP 地址兩次。

下列 CLI 命令會建立新的 RDS for Db2 資料庫執行個體，並將其加入自我管理 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}}"
```