

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

# 搭配使用自我管理 Active Directory 與 Amazon RDS for SQL Server 資料庫執行個體
<a name="USER_SQLServer_SelfManagedActiveDirectory"></a>

Amazon RDS for SQL Server 可與您的自我管理 Active Directory (AD) 網域密切整合，無論您的 AD 託管位置是在資料中心、Amazon EC2，還是與其他雲端供應商。此整合可讓您透過 NTLM 或 Kerberos 通訊協定進行直接使用者身分驗證，無需複雜的中繼網域或樹系信任。當您連線至 RDS SQL Server 資料庫執行個體時，身分驗證要求會安全地轉送至您指定的 AD 網域，以維護您現有的身分管理結構，同時運用 Amazon RDS 的受管資料庫功能。

**Topics**
+ [區域和版本可用性](#USER_SQLServer_SelfManagedActiveDirectory.RegionVersionAvailability)
+ [要求](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md)
+ [考量事項](#USER_SQLServer_SelfManagedActiveDirectory.Limitations)
+ [設定自我管理 Active Directory](USER_SQLServer_SelfManagedActiveDirectory.SettingUp.md)
+ [將資料庫執行個體加入自我管理 Active Directory](USER_SQLServer_SelfManagedActiveDirectory.Joining.md)
+ [在自我管理 Active Directory 網域中管理資料庫執行個體](USER_SQLServer_SelfManagedActiveDirectory.Managing.md)
+ [了解自我管理 Active Directory 網域成員資格](#USER_SQLServer_SelfManagedActiveDirectory.Understanding)
+ [對自我管理 Active Directory 進行疑難排解](USER_SQLServer_SelfManagedActiveDirectory.TroubleshootingSelfManagedActiveDirectory.md)
+ [還原 SQL Server 資料庫執行個體，然後將其新增至自我管理 Active Directory 網域](#USER_SQLServer_SelfManagedActiveDirectory.Restore)

## 區域和版本可用性
<a name="USER_SQLServer_SelfManagedActiveDirectory.RegionVersionAvailability"></a>

Amazon RDS 支援在所有商業 AWS 區域 和 中使用 NTLM 和 Kerberos 的自我管理 AD for SQL Server AWS GovCloud (US) Regions。

# 要求
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements"></a>

在將 RDS for SQL Server 資料庫執行個體加入自我管理 AD 網域之前，請確定您已符合下列需求。

**Topics**
+ [設定內部部署 AD](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.OnPremConfig)
+ [設定您的網路連線能力](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig)
+ [設定您的 AD 網域服務帳戶](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig)
+ [設定透過 LDAPS 的安全通訊](#USER_SQLServer_SelfManagedActiveDirectory.Requirements.LDAPS)

## 設定內部部署 AD
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.OnPremConfig"></a>

請確定您具有可以將 Amazon RDS for SQL Server 執行個體加入其中的內部部署或其他自我管理 Microsoft AD。您的內部部署 AD 應該具有下列組態：
+ 如果您已定義 AD 網站，請確定 VPC 中與您的 RDS for SQL Server 資料庫執行個體相關聯的子網路已定義在您的 AD 網站中。確認 VPC 中的子網路與其他 AD 網站中的子網路之間沒有任何衝突。
+ 您的 AD 網域控制器具有 Windows Server 2008 R2 或更新版本的網域功能層級。
+ 您的 AD 網域名稱不能採用單一標籤網域 (SLD) 格式。RDS for SQL Server 不支援 SLD 網域。
+ AD 的完整網域名稱 (FQDN) 不得超過 47 個字元。

## 設定您的網路連線能力
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig"></a>

請確定您已符合下列網路組態：
+ 在您想要建立 RDS for SQL Server 資料庫執行個體和自我管理 AD 的 Amazon VPC 之間設定連線能力。您可以使用 AWS Direct Connect、 AWS VPN、VPC 對等互連或 AWS Transit Gateway 設定連線。
+ 對於 VPC 安全群組，預設 Amazon VPC 的預設安全群組已新增至主控台中的 RDS for SQL Server 資料庫執行個體。請確定您要在其中建立 RDS for SQL Server 資料庫執行個體之子網路的安全群組和 VPC 網路 ACL 允許連接埠上的流量，並依下圖所示的方向前進。  
![\[自我管理 AD 網路組態連接埠規則。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/SQLServer_SelfManagedActiveDirectory_Requirements_NetworkConfig.png)

  下表識別每個連接埠的角色。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/USER_SQLServer_SelfManagedActiveDirectory.Requirements.html)
+ 一般而言，網域 DNS 伺服器位於 AD 網域控制器中。您不需要設定 VPC DHCP 選項集，即可使用此功能。如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的 [DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。

**重要**  
如果使用 VPC 網路 ACL，您也必須允許動態連接埠 (49152-65535) 上來自 RDS for SQL Server 資料庫執行個體的傳出流量。請確定也會在適用於每個 AD 網域控制器、DNS 伺服器和 RDS for SQL Server 資料庫執行個體的防火牆上鏡像這些流量規則。  
雖然 VPC 安全群組只需要以網路流量起始的方向開啟連接埠，但大多數 Windows 防火牆和 VPC 網路 ACL 都需要雙向開啟連接埠。

## 設定您的 AD 網域服務帳戶
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig"></a>

請確定您已符合 AD 網域服務帳戶的下列需求：
+ 確定您在自我管理 AD 網域中具有網域服務帳戶，且該帳戶具有將電腦加入網域的委派許可。網域服務帳戶是自我管理 AD 中的使用者帳戶，其已獲委派執行特定任務的許可。
+ 在您正要將 RDS for SQL Server 資料庫執行個體加入其中的組織單位 (OU) 中，網域服務帳戶必須獲得委派下列許可：
  + 已驗證能夠寫入 DNS 主機名稱
  + 已驗證能夠寫入服務主體名稱
  + 建立和刪除電腦物件

  這些代表將電腦物件加入自我管理 AD 所需的最低許可集。如需詳細資訊，請參閱 Microsoft Windows Server 文件中的[嘗試將電腦加入網域時發生錯誤](https://learn.microsoft.com/en-US/troubleshoot/windows-server/identity/access-denied-when-joining-computers)。
+ 若要使用 Kerberos 身分驗證，您必須將服務主體名稱 (SPN) 和 DNS 許可提供給 AD 網域服務帳戶：
  + **寫入 SPN**：在您需要加入 RDS for SQL Server 資料庫執行個體的 OU 中，將**寫入 SPN** 許可委派給 AD 網域服務帳戶。此許可與已驗證的寫入 SPN 不同。
  + **DNS 許可**：在網域控制站的伺服器層級，透過 DNS 管理員將下列許可提供給 AD 網域服務帳戶：
    + 列出內容
    + 讀取所有屬性
    + 讀取許可

**重要**  
在建立資料庫執行個體之後，請不要移動 RDS for SQL Server 在組織單位中建立的電腦物件。移動相關聯的物件會導致 RDS for SQL Server 資料庫執行個體設定錯誤。如果您需要移動 Amazon RDS 所建立的電腦物件，請使用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 操作，透過所需的電腦物件位置修改網域參數。

## 設定透過 LDAPS 的安全通訊
<a name="USER_SQLServer_SelfManagedActiveDirectory.Requirements.LDAPS"></a>

對於 RDS 建議透過 LDAPS 進行通訊，以查詢和存取網域控制站中的電腦物件和 SPNs。若要使用安全 LDAP，請使用您的網域控制站上符合安全 LDAPS 需求的有效 SSL 憑證。如果網域控制站上不存在有效的 SSL 憑證，RDS for SQL Server 資料庫執行個體會預設為使用 LDAP。如需憑證有效性的詳細資訊，請參閱 [LDAPS 憑證的需求](https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/enable-ldap-over-ssl-3rd-certification-authority#requirements-for-an-ldaps-certificate)。

## 考量事項
<a name="USER_SQLServer_SelfManagedActiveDirectory.Limitations"></a>

將 RDS for SQL Server 資料庫執行個體新增至自我管理 AD 時，請考量下列事項：
+ 您的資料庫執行個體會與 AWS NTP 服務同步，而非 AD 網域的時間伺服器。對於 AD 網域中連結的 SQL Server 執行個體之間的資料庫連線，您只能進行 SQL 身分驗證，而不是 Windows 身分驗證。
+ 來自自我管理 AD 網域的群組政策物件設定不會傳播到您的 RDS for SQL Server 執行個體。

# 設定自我管理 Active Directory
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp"></a>

若要設定自我管理 AD，請採取下列步驟。

**Topics**
+ [步驟 1：在您的 AD 中建立組織單位](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateOU)
+ [步驟 2：在您的 AD 中建立 AD 網域服務帳戶](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateADuser)
+ [步驟 3：將控制權委派給 AD 網域服務帳戶](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.DelegateControl)
+ [步驟 4：建立AWS KMS金鑰](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateKMSkey)
+ [步驟 5：建立AWS秘密](#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateSecret)

## 步驟 1：在您的 AD 中建立組織單位
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateOU"></a>

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

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

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

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

1. 在網域上按一下滑鼠右鍵，然後選擇**新增**，再選擇**組織單位**。

1. 輸入 OU 的名稱。

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

1. 按一下 **OK (確定)**。您的新 OU 會出現在您的網域下方。

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

網域服務帳戶登入資料將用於 AWSSecrets Manager 中的秘密。

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

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

1. 在**使用者**上按一下滑鼠右鍵，然後選擇**新增**，再選擇**使用者**。

1. 輸入使用者的名字、姓氏和登入名稱。按一下 **Next (下一步)**。

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

1. 按一下 **OK (確定)**。您的新使用者會出現在您的網域下方。

## 步驟 3：將控制權委派給 AD 網域服務帳戶
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.DelegateControl"></a>

**將控制權委派給網域中的 AD 網域服務帳戶**

1. 開啟 **Active Directory 使用者和電腦** MMC 嵌入式管理單元，然後選取您要在其中建立使用者的網域。

1. 在您先前建立的 OU 上按一下滑鼠右鍵，然後選擇**委派控制權**。

1. 在**委派控制權精靈**頁面上，按**下一步**。

1. 在**使用者或群組**區段上，按一下**新增**。

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

1. 在**使用者或群組**區段上，確認已新增您的 AD 網域服務帳戶，然後按**下一步**。

1. 在**要委派的任務**區段上，選取**建立要委派的自訂任務**，然後按**下一步**。

1. 在 **Active Directory 物件類型**區段上：

   1. 選擇**僅限資料夾中的下列物件**。

   1. 選取**電腦物件**。

   1. 選取**在此資料夾中建立選取的物件**。

   1. 選取**刪除此資料夾中選取的物件**，然後按**下一步**。

1. 在**許可**區段上：

   1. 保持選取**一般**。

   1. 選取**已驗證寫入 DNS 主機名稱**。

   1. 選取**已驗證寫入服務主體名稱**，然後按**下一步**。

   1. 若要啟用 Kerberos 身分驗證，請保持選取**屬性特定**，然後從清單中選取**寫入 servicePrincipalName**。

1. 對於**完成委派控制權精靈**，請檢閱並確認您的設定，然後按一下**完成**。

1. 針對 Kerberos 身分驗證，開啟 DNS Manager，並開啟**伺服器**屬性。

   1. 在 Windows 對話方塊中，輸入 `dnsmgmt.msc`。

   1. 在**安全性**索引標籤底下新增 AD 網域服務帳戶。

   1. 選取**讀取**許可，並套用您的變更。

## 步驟 4：建立AWS KMS金鑰
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateKMSkey"></a>

KMS 金鑰用於加密您的AWS秘密。

**建立AWS KMS金鑰**
**注意**  
 對於**加密金鑰**，請勿使用AWS預設 KMS 金鑰。請務必在相同AWS帳戶中建立AWS KMS金鑰，其中包含您要加入自我管理 AD 的 RDS for SQL Server 資料庫執行個體。

1. 在 AWS KMS主控台中，選擇**建立金鑰**。

1. 對於**金鑰類型**，選擇**對稱**。

1. 對於**金鑰用途**，選擇**加密和解密**。

1. 針對 **Advanced options (進階選項)**：

   1. 對於**金鑰材料來源**，選擇 **KMS**。

   1. 對於**區域性**，選擇**單一區域金鑰**，然後按**下一步**。

1. 對於**別名**，提供 KMS 金鑰的名稱。

1. (選用) 對於**描述**，提供 KMS 金鑰的描述。

1. (選用) 對於**標籤**，提供 KMS 金鑰的標籤，然後按**下一步**。

1. 對於**金鑰管理員**，提供 IAM 使用者的名稱，然後選取該名稱。

1. 對於**金鑰刪除**，保持選取**允許金鑰管理員刪除此金鑰**的方塊，然後按**下一步**。

1. 對於**金鑰使用者**，提供上一個步驟中相同的 IAM 使用者，然後選取該使用者。按一下 **Next (下一步)**。

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="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateSecret"></a>

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

1. 在 AWSSecrets 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 SQL Server 資料庫執行個體 ARN`aws:sourceArn`。如需詳細資訊，請參閱[防止跨服務混淆代理人問題](cross-service-confused-deputy-prevention.md)。

------
#### [ JSON ]

****  

   ```
   {
       "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。

# 將資料庫執行個體加入自我管理 Active Directory
<a name="USER_SQLServer_SelfManagedActiveDirectory.Joining"></a>

若要將 RDS for SQL Server 資料庫執行個體加入自我管理 AD，請遵循下列步驟：

## 步驟 1：建立或修改 SQL Server 資料庫執行個體
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateModify"></a>

您可以使用主控台、CLI 或 RDS API，將 RDS for SQL Server 資料庫執行個體與自我管理 AD 網域建立關聯。您可採用下列其中一種方式來這麼做：
+ 使用主控台、[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) CLI 命令，或 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) RDS API 操作，建立新的 SQL Server 資料庫執行個體。

  如需說明，請參閱「[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)」。
+ 使用主控台、[modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令，或 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 操作，修改現有的 SQL Server 資料庫執行個體。

  如需說明，請參閱「[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)」。
+ 使用主控台、[restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) CLI 命令，或 [RestoreDBInstanceFromDBSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html) RDS API 操作，從資料庫快照還原 SQL Server 資料庫執行個體。

  如需說明，請參閱「[還原至資料庫執行個體](USER_RestoreFromSnapshot.md)」。
+ 使用主控台、[restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) CLI 命令，或 [RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) RDS API 操作，將 SQL Server 資料庫執行個體還原至某個時間點。

  如需說明，請參閱[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.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 命令說明如何建立、修改及移除具有自我管理 AD 網域的 RDS for SQL Server 資料庫執行個體。

**重要**  
如果您修改資料庫執行個體，以將其加入自我管理 AD 網域或從中移除，則需要重新啟動資料庫執行個體，修改才會生效。您可以選擇立即套用變更，也可以等到下一個維護時段。選擇**立即套用**選項會導致單一可用區域資料庫執行個體停機。多可用區域資料庫執行個體將在完成重新啟動之前執行容錯移轉。如需詳細資訊，請參閱[使用排程修改設定](USER_ModifyInstance.ApplyImmediately.md)。

下列 CLI 命令會建立新的 RDS for SQL Server 資料庫執行個體，並將其加入自我管理 AD 網域。

針對 Linux、macOS 或 Unix：

```
aws rds create-db-instance \
    --db-instance-identifier my-DB-instance \
    --db-instance-class db.m5.xlarge \
    --allocated-storage 50 \
    --engine sqlserver-se \
    --engine-version 15.00.4043.16.v1 \
    --license-model license-included \
    --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.m5.xlarge ^
    --allocated-storage 50 ^
    --engine sqlserver-se ^
    --engine-version 15.00.4043.16.v1 ^
    --license-model license-included ^
    --master-username my-master-username ^
    --master-user-password my-master-password ^
    --domain-fqdn my-AD-test.my-AD.mydomain ^
    --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"
```

下列 CLI 命令會修改現有的 RDS for SQL Server 資料庫執行個體，以使用自我管理 AD 網域。

針對 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier my-DB-instance \
    --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 modify-db-instance ^
    --db-instance-identifier my-DBinstance ^
    --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"
```

下列 CLI 命令會從自我管理 AD 網域中移除 RDS for SQL Server 資料庫執行個體。

針對 Linux、macOS 或 Unix：

```
aws rds modify-db-instance \
    --db-instance-identifier my-DB-instance \
    --disable-domain
```

在 Windows 中：

```
aws rds modify-db-instance ^
    --db-instance-identifier my-DB-instance ^
    --disable-domain
```

## 步驟 2：使用 Kerberos 或 NTLM 身分驗證
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.KerbNTLM"></a>

### NTLM 身分驗證
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.KerbNTLM.NTLM"></a>

每個 Amazon RDS 資料庫執行個體都有端點，並且每個端點有資料庫執行個體的 DNS 名稱和連接埠號碼。若要使用 SQL 用戶端應用程式連線至您的資料庫執行個體，您需要資料庫執行個體的 DNS 名稱和連接埠號碼。若要使用 NTLM 身分驗證進行驗證，如果您使用多可用區域部署，則必須連線至 RDS 端點或接聽程式端點。

在規劃的資料庫維護或未規劃的服務中斷期間，Amazon RDS 會自動容錯移轉到最新的次要資料庫，以便操作可以很快繼續執行，而無須人為介入。主要與次要執行個體會使用相同的端點，其實體網路會處理轉換至次要的作業，做為容錯移轉程序的一部分。當容錯移轉發生時，您不必重新設定應用程式。

### Kerberos 身分驗證
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.Kerb"></a>

RDS for SQL Server 的 Kerberos 型身分驗證需要提供特定服務主體名稱 (SPN) 的連線。不過，容錯移轉事件之後，應用程式可能不知道新的 SPN。為了解決此問題，RDS for SQL Server 提供了 Kerberos 型端點。

Kerberos 型端點遵循特定格式。如果您的 RDS 端點為 `rds-instance-name.account-region-hash.aws-region.rds.amazonaws.com`，則對應的 Kerberos 型端點將為 `rds-instance-name.account-region-hash.aws-region.awsrds.fully qualified domain name (FQDN)`。

例如，如果 RDS 端點為 `ad-test.cocv6zwtircu.us-east-1.rds.amazonaws.com`，且網域名稱為 `corp-ad.company.com`，則 Kerberos 型端點將為 `ad-test.cocv6zwtircu.us-east-1.awsrds.corp-ad.company.com`。

此 Kerberos 型端點可以使用 Kerberos 與 SQL Server 執行個體進行驗證，即使在容錯移轉事件之後也一樣，因為端點會自動更新，以指向主要 SQL Server 執行個體的新 SPN。

### 尋找您的 CNAME
<a name="USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CNAME"></a>

若要尋找 CNAME，請連線至您的網域控制站，並開啟 **DNS Manager**。導覽至**轉送查詢區域**和您的 FQDN。

導覽 **awsrds**、**aws-region** 以及**帳戶和區域特定的雜湊**。

![\[修改資料庫執行個體的儲存量\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/kerb-endpoint-selfManagedAD-RDSMS.png)


如果從遠端用戶端連線 CNAME 之後傳回 NTLM 連線，請檢查是否允許列出必要的連接埠。

如果要檢查您的連線使用的是 Kerberos，請執行下列查詢：

```
SELECT net_transport, auth_scheme
    FROM sys.dm_exec_connections
    WHERE session_id = @@SSPID;
```

如果執行個體在您連線至 Kerberos 端點時傳回 NTLM 連線，請驗證您的網路組態和使用者組態。請參閱 [設定您的網路連線能力](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig)。

## 步驟 3：建立 Windows 身分驗證 SQL Server 登入
<a name="USER_SQLServer_SelfManagedActiveDirectory.CreateLogins"></a>

使用 Amazon RDS 主要使用者憑證來連線至 SQL Server 資料庫執行個體，如同您對任何其他資料庫執行個體所做一般。因為資料庫執行個體已加入自我管理 AD 網域，所以您可以佈建 SQL Server 登入和使用者。您可以從自我管理 AD 網域中的 AD 使用者和群組公用程式執行此操作。您可透過對這些 Windows 登入授予和撤銷的標準 SQL Server 許可來管理資料庫許可。

為了讓自我管理 AD 網域服務帳戶向 SQL Server 進行身分驗證，自我管理 AD 網域服務帳戶或使用者所屬的自我管理 AD 群組必須要有 SQL Server Windows 登入存在。精細定義的存取控制是透過授予和撤銷這些 SQL Server 登入的許可來處理。自我管理 AD 網域服務帳戶若沒有 SQL Server 登入，或不屬於具有此類登入的自我管理 AD 群組，則無法存取 SQL Server 資料庫執行個體。

需要 ALTER ANY LOGIN 許可，才能建立自我管理 AD SQL Server 登入。如果您尚未使用此許可建立任何登入，請使用 SQL Server 身分驗證，以資料庫執行個體的主要使用者身分連線，並在主要使用者的內容下建立自我管理 AD SQL Server 登入。

您可以執行如下的資料定義語言 (DDL) 命令，為自我管理 AD 網域服務帳戶或群組建立 SQL Server 登入。

**注意**  
使用 Windows 2000 前版的登入名稱，以格式 `my_AD_domain\my_AD_domain_user` 來指定使用者和群組。您無法使用格式為 *`my_AD_domain_user`*`@`*`my_AD_domain`* 的使用者原則名稱 (UPN)。

```
USE [master]
GO
CREATE LOGIN [my_AD_domain\my_AD_domain_user] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];
GO
```

如需詳細資訊，請參閱 Microsoft 開發人員網路文件中的[ 建立登入 (Transact-SQL)](https://msdn.microsoft.com/en-us/library/ms189751.aspx)。

來自您網域的使用者 (人員和應用程式兩者) 現在可以使用 Windows 身分驗證，從加入自我管理 AD 網域的用戶端機器連線至 RDS for SQL Server Active 執行個體。

# 在自我管理 Active Directory 網域中管理資料庫執行個體
<a name="USER_SQLServer_SelfManagedActiveDirectory.Managing"></a>

 您可以使用 主控台 AWS CLI或 Amazon RDS API 來管理資料庫執行個體及其與自我管理 AD 網域的關係。例如，您可以將資料庫執行個體移入、移出或移至網域之間。

 例如，使用 Amazon RDS API，您可以執行下列動作：
+ 若要針對失敗的成員資格重新嘗試自我管理網域加入，請使用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) API 操作，並指定相同的參數集：
  + `--domain-fqdn`
  + `--domain-dns-ips`
  + `--domain-ou`
  + `--domain-auth-secret-arn`
+ 若要從自我管理網域中移除資料庫執行個體，請使用 `ModifyDBInstance` API 操作，並針對網域參數指定 `--disable-domain`。
+ 若要將資料庫執行個體從某個自我管理網域移至另一個網域，請使用 `ModifyDBInstance` API 操作，並指定新網域的網域參數。
  + `--domain-fqdn`
  + `--domain-dns-ips`
  + `--domain-ou`
  + `--domain-auth-secret-arn`
+ 若要列出每個資料庫執行個體的自我管理 AD 網域成員資格，請使用 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/DescribeDBInstances.html) API 操作。

## 了解自我管理 Active Directory 網域成員資格
<a name="USER_SQLServer_SelfManagedActiveDirectory.Understanding"></a>

您在指定 AD 詳細資訊時建立或修改資料庫執行個體之後，該執行個體會成為自我管理 AD 網域的成員。 AWS 主控台會指出資料庫執行個體自我管理 Active Directory 網域成員資格的狀態。資料庫執行個體的狀態可以是下列其中一個：
+  **已加入** – 執行個體是 AD 網域的成員。
+  **加入中** – 執行個體正處於成為 AD 網域成員的過程中。
+  **加入待定** – 執行個體成員資格待定。
+  **pending-maintenance-join** – AWS 將嘗試在下一個排定的維護時段，讓執行個體成為 AD 網域的成員。
+  **移除待定** – 從 AD 網域移除執行個體待定。
+  **pending-maintenance-removal** – AWS 將在下一個排定的維護時段嘗試從 AD 網域移除執行個體。
+  **失敗** – 組態問題讓執行個體無法加入 AD 網域。請在重新發出執行個體修改命令之前檢查並修正您的組態。
+  **移除中** – 正在從自我管理 AD 網域移除執行個體。

**重要**  
因為網路連線問題，所以成為自我管理 AD 網域成員的請求可能失敗。例如，您可以建立一個資料庫執行個體或修改現有執行個體，並嘗試讓資料庫執行個體失敗，以便成為自我管理 AD 網域的成員。在此情況下，請重新發出命令以建立或修改資料庫執行個體，或修改新建立的執行個體以加入自我管理 AD 網域。

# 對自我管理 Active Directory 進行疑難排解
<a name="USER_SQLServer_SelfManagedActiveDirectory.TroubleshootingSelfManagedActiveDirectory"></a>

以下是您在設定或修改自我管理 AD 時可能會遇到的問題。


****  

| 錯誤程式碼 | 說明 | 常見原因 | 故障診斷建議 | 
| --- | --- | --- | --- | 
| 錯誤 2 / 0x2 | 系統找不到指定的檔案。 | 使用 `—domain-ou` 參數指定的組織單位 (OU) 的格式或位置無效。透過 AWS Secrets Manager 指定的網域服務帳戶缺少加入 OU 所需的許可。 | 檢閱 `—domain-ou` 參數。確定網域服務帳戶具有 OU 的正確許可。如需詳細資訊，請參閱[設定您的 AD 網域服務帳戶](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig)。 | 
| 錯誤 5 / 0x5 | 存取遭拒。 | 網域服務帳戶的許可設定錯誤，或網域中已存在電腦帳戶。 | 檢閱網域中的網域服務帳戶許可，並確認網域中沒有重複的 RDS 電腦帳戶。您可以在 RDS for SQL Server 資料庫執行個體上執行 `SELECT @@SERVERNAME`，以驗證 RDS 電腦帳戶的名稱。如果您使用多可用區域，請嘗試透過容錯移轉重新開機，然後再次驗證 RDS 電腦帳戶。如需詳細資訊，請參閱[在資料庫執行個體](USER_RebootInstance.md)。 | 
| 錯誤 87 / 0x57 | 參數不正確。 | 透過 AWS Secrets Manager 指定的網域服務帳戶沒有正確的許可。使用者設定檔也可能已損毀。 | 檢閱網域服務帳戶的需求。如需詳細資訊，請參閱[設定您的 AD 網域服務帳戶](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.DomainAccountConfig)。 | 
| 錯誤 234 / 0xEA | 指定的組織單位 (OU) 不存在。 | 使用 `—domain-ou` 參數指定的 OU 不存在於自我管理 AD 中。 | 檢閱 `—domain-ou` 參數，並確保指定的 OU 存在於您的自我管理 AD 中。 | 
| 錯誤 1326 / 0x52E | 使用者名稱或密碼不正確。 |  AWS Secrets Manager 中提供的網域服務帳戶登入資料包含未知的使用者名稱或錯誤密碼。也可能在您的自我管理 AD 中停用了網域帳戶。 | 請確定 AWS Secrets Manager 中提供的憑證是正確的，而且網域帳戶已在自我管理 AD 中啟用。 | 
| 錯誤 1355 / 0x54B | 指定的網域不存在或無法聯絡。 | 網域已關閉、指定的 DNS IP 集無法連線，或指定的 FQDN 無法連線。 | 檢閱 `—domain-dns-ips` 和 `—domain-fqdn` 參數以確定其正確無誤。檢閱 RDS for SQL Server 資料庫執行個體的網路組態，並確定可連線到您的自我管理 AD。如需詳細資訊，請參閱[設定您的網路連線能力](USER_SQLServer_SelfManagedActiveDirectory.Requirements.md#USER_SQLServer_SelfManagedActiveDirectory.Requirements.NetworkConfig)。 | 
| 錯誤 1722 / 0x6BA | RPC 伺服器無法使用。 | 連線 AD 網域的 RPC 服務時發生問題。這可能是服務或網路問題。 | 驗證 RPC 服務是否正在您的網域控制器上執行，以及 TCP 連接埠 `135` 和 `49152-65535` 是否可在網域上，從 RDS for SQL Server 資料庫執行個體進行連線。 | 
|  錯誤 1727 / 0x6BF  |  遠端程序呼叫失敗且未執行。  |  網路連線問題或防火牆限制封鎖了與網域控制站的 RPC 通訊。  |  如果使用跨 VPC 網域加入，請驗證是否已使用 VPC 對等互連或 Transit Gateway 正確設定跨 VPC 通訊。請確定可在您的網域上從 RDS for SQL Server 資料庫執行個體連線到 TCP 高連接埠 `49152-65535`，包括任何可能的防火牆限制。  | 
| 錯誤 2224 / 0x8B0 | 使用者帳戶已存在。 | 嘗試新增至自我管理 AD 的電腦帳戶已存在。 | 在 RDS for SQL Server 資料庫執行個體上執行 `SELECT @@SERVERNAME`，來識別電腦帳戶，然後小心地將其從自我管理 AD 中移除。 | 
| 錯誤 2242 / 0x8c2 | 此使用者的密碼已過期。 | 透過 AWS Secrets Manager 指定的網域服務帳戶密碼已過期。 | 更新網域服務帳戶的密碼，此帳戶用來將 RDS for SQL Server 資料庫執行個體加入自我管理 AD。 | 

將您的資料庫執行個體加入自我管理 Active Directory 網域之後，您可能會收到與網域運作狀態相關的 RDS 事件。

```
Unhealthy domain state detected while attempt to verify or 
configure your Kerberos endpoint in your domain on 
node node_n. message
```

對於多可用區域執行個體，您可能會看到 node1 和 node2 的錯誤報告，這表示執行個體的 Kerberos 組態尚未做好容錯移轉的準備。如果發生容錯移轉，您在使用 Kerberos 時可能會遇到身分驗證問題。請解決組態問題，以確保 Kerberos 設定有效且是最新的。就多可用區域執行個體而言，只要所有網路和許可都已設定妥當，即可直接在新的主要主機上使用 Kerberos 身分驗證，無需任何動作。

對於單一可用區域執行個體，node1 是主節點。如果您的 Kerberos 身分驗證未如預期運作，請檢查執行個體事件並解決組態問題，以確保 Kerberos 設定有效且是最新的。

## 還原 SQL Server 資料庫執行個體，然後將其新增至自我管理 Active Directory 網域
<a name="USER_SQLServer_SelfManagedActiveDirectory.Restore"></a>

您可以還原資料庫快照或為 SQL Server 資料庫執行個體執行時間點復原 (PITR)，然後將其新增至自我管理 Active Directory 網域。一旦還原了資料庫執行個體，請使用[步驟 1：建立或修改 SQL Server 資料庫執行個體](USER_SQLServer_SelfManagedActiveDirectory.Joining.md#USER_SQLServer_SelfManagedActiveDirectory.SettingUp.CreateModify)中說明的程序來修改執行個體，以將資料庫執行個體新增至自我管理 AD 網域。