為 Aurora MySQL 資料庫叢集設定 Kerberos 身分驗證 - Amazon Aurora

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

為 Aurora MySQL 資料庫叢集設定 Kerberos 身分驗證

使用 AWS Managed Microsoft AD 為 Aurora MySQL 資料庫叢集設定 Kerberos 身分驗證。若要設定 Kerberos 身分驗證,請遵循下列步驟。

步驟 1:使用 AWS Managed Microsoft AD 建立目錄

AWS Directory Service 會在 AWS 雲端中建立完全受管的 Active Directory。建立 AWS Managed Microsoft AD 目錄時,AWS Directory Service 會代您建立兩個網域控制站和網域名稱系統 (DNS) 伺服器。目錄伺服器是在 VPC 的不同子網路中建立。此備援有助於確保即使發生故障,您仍然可以存取目錄。

當您建立 AWS Managed Microsoft AD 目錄時,AWS Directory Service 會代您執行下列任務:

  • 在 VPC 內設定 Active Directory。

  • 建立含有使用者名稱 Admin 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。

    注意

    請務必儲存此密碼。AWS Directory Service 不會存放此密碼。您可以重設此密碼,但是無法擷取此密碼。

  • 建立目錄控制器的安全群組。

當您啟動 AWS Managed Microsoft AD 時,AWS 會建立包含您所有目錄物件的組織單位 (OU)。此 OU 有您在建立目錄時所輸入的 NetBIOS 名稱。其位於由 AWS 擁有和管理的根網域中。

透過您的 AWS Managed Microsoft AD 目錄建立的 Admin 帳戶具有您的 OU 最常見管理活動的許可,其中包含:

  • 建立、更新或刪除使用者

  • 將資源 (例如檔案或列印伺服器) 新增至您的網域,然後對您 OU 中的使用者指派這些資源的許可

  • 建立額外的 OU 和容器

  • 委派授權

  • 從 Active Directory 資源回收筒還原已刪除的物件

  • 在活動目錄 Web 服務上運行 AD 和 DNS 視窗 PowerShell 模塊

Admin 帳戶也有權執行下列全網域活動:

  • 管理 DNS 組態 (新增、移除或更新記錄、區域和轉寄站)

  • 檢視 DNS 事件日誌

  • 檢視安全事件日誌

使用 AWS Managed Microsoft AD 建立目錄
  1. 登入 AWS Management Console,並開啟位於 https://console.aws.amazon.com/directoryservicev2/ 的 AWS Directory Service 主控台。

  2. 在導覽窗格中,選擇 Directories (目錄),然後選擇 Set up directory (設定目錄)。

  3. 選擇 AWS Managed Microsoft AD。AWS Managed Microsoft AD 是您目前可搭配 Amazon RDS 使用的唯一選項。

  4. 輸入下列資訊:

    目錄 DNS 名稱

    目錄的完全合格名稱,例如 corp.example.com

    目錄 NetBIOS 名稱

    目錄的簡短名稱,例如:CORP

    目錄描述

    (選用) 目錄的描述。

    管理員密碼

    目錄管理員的密碼。目錄建立程序會建立含有使用者名稱 Admin 與這組密碼的管理員帳戶。

    目錄管理員密碼不得包含 "admin" 字組。密碼區分大小寫,長度須為 8 至 64 個字元。至少須有一位字元屬於以下四種類型中的三類:

    • 小寫字母 (a–z)

    • 大寫字母 (A–Z)

    • 數字 (0–9)

    • 非英數字元 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)

    Confirm password (確認密碼)

    重新輸入的管理員密碼。

  5. 選擇下一步

  6. Networking (聯網) 區段輸入以下資訊,然後選擇 Next (下一步)

    VPC

    目錄的 VPC。在相同的 VPC 中建立 Aurora MySQL 資料庫叢集。

    子網

    目錄伺服器的子網路。這兩個子網路必須位於不同的可用區域。

  7. 檢閱目錄資訊,並進行必要的變更。若資訊無誤,請選擇 Create directory (建立目錄)

    建立期間的目錄詳細資訊頁面

建立目錄需要幾分鐘的時間。成功建立時,Status (狀態) 值會變更為 Active (作用中)

如要查看您目錄的資訊,請在目錄清單中選擇目錄名稱。請記下目錄 ID,因為您在建立或修改 Aurora MySQL 資料庫叢集時將需要這個值。

在目錄詳細資訊頁面上的目錄 ID

步驟 2:(選擇性) 為內部部署 Active Directory 建立信任

如果您不打算使用自己的內部部署 Microsoft Active Directory,請跳至步驟 3:建立供 Amazon Aurora 使用的 IAM 角色.

若要使用內部部署 Active Directory 來使用 Kerberos 身分驗證,您必須使用樹系信任在內部部署 Microsoft Active Directory 與 AWS Managed Microsoft AD 目錄 (建立於 步驟 1:使用 AWS Managed Microsoft AD 建立目錄 中) 之間建立信任網域關係。信任可以是單向的,其中 AWS Managed Microsoft AD 目錄信任內部部署 Microsoft Active Directory。信任也可以是雙向,其中兩個 Active Directory 互相信任。如需使用 AWS Directory Service 設定樹系信任的詳細資訊,請參閱 AWS Directory Service 管理指南中的何時建立信任關係

注意

如果您使用內部部署 Microsoft Active Directory:

  • Windows 用戶端必須使用端點中 AWS Directory Service 的網域名稱進行連線,而不是使用 rds.amazonaws.com。如需詳細資訊,請參閱使用 Kerberos 身分驗證連線至 Aurora MySQL

  • Windows 用戶端無法使用 Aurora 自訂端點進行連線。如需進一步了解,請參閱 Amazon Aurora 連線管理

  • 針對全球資料庫

    • Windows 用戶端只能使用全域資料庫主要 AWS 區域中的執行個體端點或叢集端點進行連線。

    • Windows 用戶端無法使用次要 AWS 區域中的叢集端點進行連線。

請確定您的內部部署 Microsoft Active Directory 網域名稱包含對應至新建立之信任關係的 DNS 尾碼路由。以下螢幕擷取畫面顯示了一個範例。

DNS 路由對應至建立的信任

步驟 3:建立供 Amazon Aurora 使用的 IAM 角色

若要讓 Amazon Aurora 為您呼叫 AWS Directory Service,您需要一個使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess 的 AWS Identity and Access Management (IAM) 角色。此角色允許 Aurora 呼叫 AWS Directory Service。

使用 AWS Management Console 建立資料庫叢集且您具有 iam:CreateRole 權限時,主控台會自動建立此角色。在此情況下,角色名稱為 rds-directoryservice-kerberos-access-role。否則,您必須手動建立 IAM 角色。建立此 IAM 角色時,請選擇 Directory Service,並將 AWS 受管政策 AmazonRDSDirectoryServiceAccess 連接至該角色。

如需為服務建立 IAM 角色的詳細資訊,請參閱 IAM 使用者指南中的建立角色以委派許可給 AWS 服務

您可以選擇性地建立具有必要許可的政策,而不是使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess。在此情況下,IAM 角色必須有以下 IAM 信任政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

此角色也須具有下列 IAM 角色政策:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ds:DescribeDirectories", "ds:AuthorizeApplication", "ds:UnauthorizeApplication", "ds:GetAuthorizedApplicationDetails" ], "Effect": "Allow", "Resource": "*" } ] }

步驟 4:建立和設定使用者

您可以使用 Active Directory 使用者和運算集區來建立使用者。這個工具是 Active Directory Domain Services 和 Active Directory 輕量型目錄服務工具的一部分。使用者代表具有目錄存取權的個人或實體。

若要在 AWS Directory Service 目錄中建立使用者,您可以使用已加入到您的 AWS Directory Service 目錄中,且以 Microsoft Windows 為基礎的內部部署或 Amazon EC2 執行個體。您必須以具有建立使用者之許可的使用者身分來登入執行個體。如需詳細資訊,請參閱《AWS Managed Microsoft AD Directory Service 管理指南》中的管理 AWS 中的使用者和群組

步驟 5:建立或修改 Aurora MySQL 資料庫叢集

建立或修改 Aurora MySQL 資料庫叢集以搭配您的目錄使用。您可以使用主控台、AWS CLI 或 RDS API,將資料庫叢集與目錄建立關聯。您可採用下列其中一種方式來執行此動作:

僅有 VPC 中的 Aurora MySQL 資料庫叢集支援 Kerberos 身分驗證。資料庫叢集可在與目錄相同的 VPC 中,或在不同 VPC 中。資料庫叢集的 VPC 必須具備能允許對目錄進行傳出通訊的 VPC 安全群組。

使用主控台建立、修改或還原資料庫叢集時,請在 Database authentication (資料庫身分驗證) 區段中選擇 Kerberos authentication (Kerberos 身分驗證)。選擇 Browse Directory (瀏覽目錄) 並選取目錄,或是選擇 Create a new directory (建立新目錄)

建立資料庫叢集時的 Kerberos 身分驗證設定

使用 AWS CLI 或 RDS API 時,請將資料庫叢集與目錄建立關聯。資料庫叢集需要下列參數,才能使用您建立的網域目錄:

  • 針對 --domain 參數,使用您建立目錄時產生的網域識別符 ("d-*" 識別符)。

  • 針對 --domain-iam-role-name 參數,使用您建立的規則,其會使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess

例如,下列 CLI 命令會修改資料庫叢集來使用目錄。

對於LinuxmacOS、或Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --domain d-ID \ --domain-iam-role-name role-name

在Windows中:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --domain d-ID ^ --domain-iam-role-name role-name
重要

如果您修改資料庫叢集,以啟用 Kerberos 身分驗證,請在進行變更後重新啟動讀取器資料庫執行個體。

步驟 6:建立使用 Kerberos 身分驗證的 Aurora MySQL 使用者

資料庫叢集會加入至 AWS Managed Microsoft AD 網域。因此,您可以從您網域中的 Active Directory 使用者中,建立 Aurora MySQL 使用者。資料庫許可會透過標準 Aurora MySQL 許可管理,並從這些使用者授予及撤銷。

您可以允許 Active Directory 使用者與 Aurora MySQL 進行身分驗證。若要執行此作業,請先使用 Amazon RDS 主要使用者登入資料連線到 Aurora MySQL 資料庫叢集,方法與其他任何的資料庫叢集相同。登入之後,請在 Aurora MySQL 中建立具有 Kerberos 身分驗證的外部身分驗證使用者,如下所示:

CREATE USER user_name@'host_name' IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';
  • 請將 user_name 換成使用者名稱。來自您網域的使用者 (人員和應用程式兩者) 現在可以使用 Kerberos 身分驗證從加入網域的用戶端機器連線至資料庫叢集。

  • 以主機名稱取代 host_name。您可以使用 % 做為萬用字元。您也可以使用特定的 IP 地址做為主機名稱。

  • 以網域的目錄領域名稱取代 realm_name。領域名稱通常是大寫的 DNS 網域名稱,例如 CORP.EXAMPLE.COM。領域是使用相同 Kerberos 金鑰發佈中心的系統群組。

下列範例會建立名為 Admin 的資料庫使用者,該名稱會以領域名稱 MYSQL.LOCAL 對 Active Directory 進行驗證。

CREATE USER Admin@'%' IDENTIFIED WITH 'authentication_kerberos' BY 'MYSQL.LOCAL';

修改現有的 Aurora MySQL 登入

您也可以使用下列語法,修改現有的 Aurora MySQL 登入,以使用 Kerberos 身分驗證:

ALTER USER user_name IDENTIFIED WITH 'authentication_kerberos' BY 'realm_name';

第 7 步:設定 MySQL 用戶端

若要設定 MySQL 用戶端,請執行下列步驟:

  1. 建立可指向網域的 krb5.conf 檔案 (或同等檔案)。

  2. 確定流量可在用戶端主機和 AWS Directory Service 之間往來。請使用 Netcat 等網路公用程式檢查以下各項:

    • 確認透過 DNS 傳送至連接埠 53 的流量。

    • 確認透過 TCP/UDP 傳送至連接埠 53 和 Kerberos 的流量,其中包括用於 AWS Directory Service 的連接埠 88 和 464。

  3. 確定流量可透過資料庫連接埠在用戶端主機和資料庫執行個體之間往來。例如,您可以使用 mysql 來連接和存取資料庫。

以下是 AWS Managed Microsoft AD 的範例 krb5.conf 內容。

[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM

下列是內部部署 Microsoft Active Directory 的範例 krb5.conf 內容。

[libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = example.com admin_server = example.com } ONPREM.COM = { kdc = onprem.com admin_server = onprem.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM .onprem.com = ONPREM.COM onprem.com = ONPREM.COM .rds.amazonaws.com = EXAMPLE.COM .amazonaws.com.cn = EXAMPLE.COM .amazon.com = EXAMPLE.COM

步驟 8:(選用) 設定不區分大小寫的使用者名稱比較

根據預設,MySQL 資料庫使用者名稱的字元大小寫必須符合 Active Directory 登入的字元大小寫。不過,您現在可以搭配 authentication_kerberos 外掛程式使用不區分大小寫的使用者名稱比較。若要這麼做,請將 authentication_kerberos_caseins_cmp 資料庫叢集參數設定為 true

使用不區分大小寫的使用者名稱比較
  1. 建立自訂資料庫叢集參數群組。請遵循建立資料庫叢集參數群組中的程序。

  2. 編輯新的參數群組,將 authentication_kerberos_caseins_cmp 的值設定為 true。請遵循修改資料庫叢集參數群組中的參數中的程序。

  3. 將資料庫叢集參數群組與您的 Aurora MySQL 資料庫叢集建立關聯。請遵循將資料庫叢集參數群組與資料庫叢集建立關聯中的程序。

  4. 重新啟動資料庫叢集。