如何使用 AWS Managed Microsoft AD 進行 RDS for SQL Server Windows 身份驗證問題的疑難排解?

3 分的閱讀內容
0

我為我的 AWS 帳戶設定 Microsoft Active Directory 的 AWS Directory Service。我在為 Microsoft SQL Server 資料庫執行個體建立 Amazon Relational Database Service (Amazon RDS) 時遇到問題。

簡短說明

建立適用於 Amazon RDS for SQL Server 資料庫執行個體時,您可能會遇到下列其中一個問題:

  • Managed Microsoft AD 無法使用。
  • 我收到 "Failed to join a host to a domain" (無法將主機加入網域) 的錯誤訊息,或 RDS 主控台上的目錄狀態顯示 "Failed" (失敗)。
  • 我無法使用 Windows 驗證登入資料庫執行個體。

適用於 RDS for SQL Server 資料庫執行個體的 Windows 驗證可支援跨多個 AWS 帳戶和多個 Amazon Virtual Private Cloud (Amazon VPC)。單一 AWS Managed Microsoft Active Directory 可以跨多個 AWS 帳戶和多個 VPC 共用,以輕鬆管理目錄感知資料庫工作負載。但是,只有當 RDS for SQL Server 與 AWS Managed Microsoft AD 位於相同的 AWS 區域時,才會發生此情況。

解決方案

**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確定您使用的是最新的 AWS CLI 版本

建立資料庫執行個體時,AWS Managed Microsoft AD 未列出或無法使用

**重要事項:**受管網域類型必須是 AWS 受管作用中的目錄,才能列在 Amazon RDS 主控台中的 AWS Managed Microsoft AD。

當 AWS Managed Microsoft AD 與執行個體位於不同的區域時,建立或修改資料庫執行個體時不會列出該目錄。若要解決此問題,請確定資料庫執行個體與 Directory Service 位於相同的 AWS 區域。

確認 RDS 資料庫執行個體和 Directory Service 位於相同的區域:

1.    開啟 Amazon RDS 主控台,然後從導覽窗格中選擇資料庫

2.    選擇您要連線至目錄的資料庫執行個體。

3.    在摘要區段中,檢閱與資料庫執行個體相關聯的區域

4.    檢查 AWS Directory Service 主控台,以確認 Directory Service 與資料庫執行個體位於相同 AWS 區域。

如果您的 AWS Managed Microsoft AD 與資料庫執行個體位於不同的 AWS 帳戶,請與 AWS 帳戶共用 Microsoft Managed AD。然後,您可以在建立或修改資料庫執行個體時列出 Directory Service。

1.    開始與將在其中建立資料庫執行個體的 AWS 帳戶共用目錄。請遵循 AWS Directory Service 管理指南共用 AWS Managed Microsoft AD 目錄以順暢加入 EC2 網域的步驟。

2.    使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台。請先確認網域具有已共用狀態,然後再繼續。

3.    使用資料庫執行個體的帳戶 (而非目錄 ID 值) 登入 AWS Directory Service 主控台。使用此目錄 ID 將資料庫執行個體加入網域。

將資料庫執行個體加入網域或 RDS 主控台上的目錄狀態顯示 "Failed" (失敗) 時會收到錯誤

將資料庫執行個體加入網域時,您可能會收到下列錯誤訊息:

"Failed to join a host to a domain.Domain membership status for instance XXXXXXX has been set to Failed." (無法將主機加入網域。執行個體 XXXXXXX 的網域成員資格狀態已設定為失敗。)

或者,目錄狀態可能會顯示為失敗

1.    確認 RDS for SQL Server 執行個體安全群組已設定為允許正確的傳出流量。

  • TCP 和 UDP 連接埠 53
  • TCP 和 UDP 連接埠 88
  • TCP 和 UDP 連接埠 135
  • TCP 和 UDP 連接埠 389
  • TCP 和 UDP 連接埠 445
  • TCP 和 UDP 連接埠 464
  • TCP 連接埠 636
  • TCP 連接埠 3268
  • TCP 連接埠 3269
  • TCP 連接埠 9389
  • TCP 連接埠 49152-65535
  • UDP 連接埠 123
  • UDP 連接埠 138

2.    確認 AWS Managed Microsoft AD 安全群組已設定為允許正確的傳入流量。當您建立 AWS Managed Microsoft AD 時,便會建立安全群組。如需新增至此安全群組的傳入和傳出規則清單,請參閱AWS Directory Service 管理指南中的建立內容

3.    您可能會將資料庫執行個體和 AWS Managed Microsoft AD 放在不同的 VPC 或不同的帳戶中。如果是這樣,請確定與 AWS Managed Microsoft AD 連線的資料庫執行個體路由正確。此外,請確定與資料庫執行個體連線的 Microsoft Managed AD 路由正確。如需詳細資訊,請參閱RDS Support for cross-account and cross-VPC domain joins (跨帳戶和跨 VPC 網域加入的 RDS 支援) (影片)。

在識別並解決網域加入失敗的潛在原因之後,請執行下列動作以取消加入,然後將網域加入資料庫執行個體:

1.    開啟 Amazon RDS 主控台,然後從導覽窗格中選擇資料庫

2.    選取無法加入網域的資料庫執行個體,然後選擇修改

3.    從 Microsoft SQL Server Windows 身份驗證區段中,選擇目錄,然後選擇

4.    選擇立即套用。修改完成後,資料庫執行個體會自動重新啟動。

5.    若要重新加入目錄,請從導覽窗格中選擇資料庫

6.    選取資料庫執行個體,然後選擇修改

7.    從Microsoft SQL Server Windows 身份驗證區段中,針對目錄,從清單中選擇您的目錄。

8.    選擇立即套用。修改完成後,資料庫執行個體會再次重新啟動。

呼叫 ModifyDBInstance 作業時發生錯誤 (InvalidParameterCombination): 提供的 IAM 角色無效,請檢查角色是否存在且具有正確的政策

使用 AWS CLI 將 Directory Service 附加到資料庫執行個體時,請使用預設 IAM 角色 rds-directoryservice-access-role。如果您使用自訂角色,請將預設政策 AmazonRDSDirectoryServiceAccess 附加至自訂角色。執行此作業後,便可解決IAM role provided is not valid (提供的 IAM 角色無效) 錯誤。

無法使用 Windows 身份驗證登入資料庫執行個體

使用 Windows 身份驗證登入時,需要在 AWS Managed Microsoft AD 使用者或群組的執行個體上登入 SQL。SQL 登入會使用資料庫執行個體的主要使用者憑證。如果您在內部部署 Microsoft Active Directory 中使用群組或使用者,則必須建立信任關係

1.    使用 SQL Server Management Studio (SSMS) 以主要使用者身分登入您的資料庫執行個體。

2.    使用 T-SQL 以建立 Windows 身份驗證登入:

CREATE LOGIN [Domain Name\user or group] FROM WINDOWS WITH DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english];

**注意事項:**只有在使用 T-SQL 時,才支援在 RDS for SQL Server 執行個體上建立 Windows 身份驗證登入。您無法使用 GUI 在 SQL Server Management Studio 中建立登入。

3.    使用 Windows 身份驗證連線到資料庫執行個體。


相關資訊

將 Windows 身份驗證與 Amazon RDS for SQL Server 資料庫執行個體搭配使用

使用安全群組控制存取權

無法連線至 Amazon RDS 資料庫執行個體

將跨帳戶的 Amazon RDS 資料庫執行個體加入單一共用網域

將 Microsoft SQL Server 資料庫遷移至 AWS Cloud