使用 Kerberos Amazon RDS for Microsoft SQL Server 的身分驗證 - Amazon Relational Database Service

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

使用 Kerberos Amazon RDS for Microsoft SQL Server 的身分驗證

您可以使用 Kerberos 身分驗證,在使用者連線到 MySQL 資料庫執行個體時對其進行身分驗證。資料庫執行個體使用 AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) 來啟用 Kerberos 身分驗證。當使用者使用加入信任網域的 MySQL 資料庫執行個體進行身分驗證時,身分驗證請求會轉送。轉送的請求會移至您使用 建立的網域目錄 AWS Directory Service。

將您的所有登入資料保留在相同目錄可以節省您的時間和精力。透過這種方式,這樣您就有一個集中的位置來存放及管理多個資料庫執行個體的登入資料。使用目錄也可以改善您的整體安全性描述檔。

區域和版本可用性

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需RDS使用 Kerberos 身分驗證的 Amazon 版本和區域可用性的詳細資訊,請參閱 Amazon 中 Kerberos 身分驗證支援的區域和資料庫引擎 RDS

為 MySQL 資料庫執行個體設定 Kerberos 身分驗證的概觀

若要設定 MySQL 資料庫執行個體的 Kerberos 身分驗證,請完成下列一般步驟,稍後會更詳細地說明:

  1. 使用 AWS Managed Microsoft AD 建立 AWS Managed Microsoft AD 目錄。您可以使用 AWS Management Console、 AWS CLI或 AWS Directory Service 來建立目錄。如需執行此操作的詳細資訊,請參閱 AWS Directory Service 管理指南 中的建立 AWS Managed Microsoft AD 目錄

  2. 建立使用 受管IAM政策 的 AWS Identity and Access Management (IAM) 角色AmazonRDSDirectoryServiceAccess。此角色允許 Amazon RDS呼叫您的目錄。

    若要讓角色允許存取,必須在 AWS 區域 您 AWS 帳戶的 中啟用 AWS Security Token Service (AWS STS) 端點。所有 中的 AWS STS 端點預設處於作用中狀態 AWS 區域,而且您可以使用它們,而不需要任何進一步的動作。如需詳細資訊,請參閱 使用者指南 AWS STS 中的啟用和停用 AWS 區域IAM

  3. 使用 Microsoft Active Directory 工具在 AWS Managed Microsoft AD 目錄中建立和設定使用者。如需在 Active Directory 中建立使用者的詳細資訊,請參閱 AWS Directory Service 管理指南 中的管理 AWS 受管 Microsoft AD 中的使用者和群組

  4. 建立或修改 MySQL 資料庫執行個體。如果您在建立請求RDSAPI中使用 CLI或 ,請使用 Domain 參數指定網域識別符。使用您在建立目錄時產生的 d-* 識別符,以及您建立的角色名稱。

    如果您修改現有的 MySQL 資料庫執行個體以使用 Kerberos 身分驗證,請設定資料庫執行個體的網域和IAM角色參數。在與VPC網域目錄相同的 中尋找資料庫執行個體。

  5. 使用 Amazon RDS主要使用者憑證來連線至 MySQL 資料庫執行個體。使用 CREATE USER 子句在 MySQL 中建立使用者IDENTIFIED WITH 'auth_pam'。您以此方式建立的使用者可以使用 Kerberos 身分驗證登入我的SQL資料庫執行個體。

設定 MySQL 資料庫執行個體的 Kerberos 身分驗證

您可以使用 AWS Managed Microsoft AD 來設定 MySQL 資料庫執行個體的 Kerberos 身分驗證。如要設定 Kerberos 身分驗證,您可以採取下列步驟。

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

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

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

  • 在 中設定 Active DirectoryVPC。

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

    注意

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

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

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

使用 AWS Managed Microsoft AD 目錄建立的管理員帳戶具有 OU 最常見管理活動的許可:

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

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

  • 建立其他 OUs和 容器

  • 委派授權

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

  • 在 Active Directory Web Service 上執行 AD 和 DNS Windows PowerShell 模組

管理員帳戶也有權執行下列全網域活動:

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

  • 檢視DNS事件日誌

  • 檢視安全事件日誌

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

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

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

  4. 輸入下列資訊:

    目錄DNS名稱

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

    Directory NetBIOS 名稱

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

    目錄描述

    (選用) 目錄的描述。

    管理員密碼

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

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

    • 小寫字母 (a–z)

    • 大寫字母 (A–Z)

    • 數字 (0–9)

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

    Confirm password (確認密碼)

    重新輸入的管理員密碼。

  5. 選擇 Next (下一步)

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

    VPC

    目錄VPC的 。在此相同的 中建立 MySQL 資料庫執行個體VPC。

    子網

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

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

    在 AWS Directory Service 主控台中建立目錄期間的檢閱和建立視窗。

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

如要查看您目錄的資訊,請在目錄清單中選擇目錄名稱。請注意目錄 ID 值,因為您在建立或修改 MySQL 資料庫執行個體時需要此值。

AWS Directory Service 主控台中具有目錄 ID 的目錄詳細資訊區段。

步驟 2:建立IAM角色以供 Amazon 使用 RDS

若要RDS讓 Amazon AWS Directory Service 為您呼叫 ,AmazonRDSDirectoryServiceAccess需要使用 受管IAM政策IAM的角色。此角色允許 Amazon RDS呼叫 AWS Directory Service。

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

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

注意

用於 Windows Authentication RDS for SQL Server IAM的角色無法用於 RDS My SQL。

或者,您可以建立具有所需許可的政策,而不是使用 受管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": "*" } ] }

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

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

若要在 AWS Directory Service 目錄中建立使用者,您必須根據 Microsoft Windows 連線到 Amazon EC2執行個體。此執行個體必須是 AWS Directory Service 目錄的成員,並以具有建立使用者權限的使用者身分登入。如需詳細資訊,請參閱《 AWS Managed Microsoft AD Directory Service 管理指南》中的管理AWS 中的使用者和群組

步驟 4:建立或修改 MySQL 資料庫執行個體

建立或修改 MySQL 資料庫執行個體,以搭配您的目錄使用。您可以使用 主控台、 CLI或 RDSAPI將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做:

Kerberos 身分驗證僅支援 中的 MySQL 資料庫執行個體VPC。資料庫執行個體可與目錄VPC位於相同 ,或位於不同的 。 VPC資料庫執行個體必須使用允許目錄 內輸出的安全群組,VPC以便資料庫執行個體可以與目錄通訊。

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

在 Amazon RDS主控台中選取具有密碼和 Kerberos 身分驗證的資料庫身分驗證區段。

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

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

  • 對於 --domain-iam-role-name 參數,請使用您建立的使用 受管IAM政策 的角色AmazonRDSDirectoryServiceAccess

例如,下列CLI命令會修改資料庫執行個體以使用目錄。

用於 Linux, macOS、 或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --domain d-ID \ --domain-iam-role-name role-name

用於 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --domain d-ID ^ --domain-iam-role-name role-name
重要

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

步驟 5:建立 Kerberos 身分驗證 我的SQL登入

使用 Amazon RDS主要使用者登入資料來連線至 MySQL 資料庫執行個體,就像您執行任何其他資料庫執行個體一樣。資料庫執行個體會加入網域 AWS Managed Microsoft AD 。因此,您可以從網域中的 Active Directory 使用者佈建我的SQL登入和使用者。資料庫許可是透過授予這些登入並從中撤銷的標準我的SQL許可進行管理。

您可以允許 Active Directory 使用者使用 My 進行身分驗證SQL。若要執行此操作,請先使用 Amazon RDS主要使用者憑證與任何其他資料庫執行個體一樣,連線至 MySQL 資料庫執行個體。登入後,請執行下列命令,在 MySQL 中使用 PAM(Pluggable Authentication Modules) 建立外部驗證使用者。將 testuser 取代成使用者名稱。

CREATE USER 'testuser'@'%' IDENTIFIED WITH 'auth_pam';

來自您網域的使用者 (人員和應用程式兩者) 現在可以使用 Kerberos 身分驗證從加入網域的用戶端機器連線至資料庫執行個體。

重要

我們強烈建議用戶端在使用PAM身分驗證時使用 SSL/TLS 連線。如果他們不使用 SSL/TLS 連線,在某些情況下密碼可能會以純文字傳送。若要為您的 AD 使用者要求 SSL/TLS 加密連線,請執行下列命令並以testuser使用者名稱取代:

ALTER USER 'testuser'@'%' REQUIRE SSL;

如需詳細資訊,請參閱SSL/TLS 支援 Amazon 上的 MySQL 資料庫執行個體 RDS

管理網域中的資料庫執行個體

您可以使用 CLI或 RDSAPI來管理資料庫執行個體及其與受管 Active Directory 的關係。例如,您可以與適用於 Kerberos 身分驗證的 Active Directory 建立關聯,也可以解除關聯 Active Directory 來停用 Kerberos 身分驗證。您也可以將要由某個 Active Directory 於外部進行身分識別的資料庫執行個體移至另一個 Active Directory。

例如,使用 Amazon RDS API,您可以執行下列動作:

  • 若要為失敗的成員資格重新嘗試啟用 Kerberos 身分驗證,請使用 ModifyDBInstanceAPI操作並指定目前的成員資格目錄 ID。

  • 若要更新成員IAM資格的角色名稱,請使用 ModifyDBInstanceAPI操作並指定目前成員資格的目錄 ID 和新IAM角色。

  • 若要停用資料庫執行個體上的 Kerberos 身分驗證,請使用 ModifyDBInstanceAPI操作並指定 none作為網域參數。

  • 若要將資料庫執行個體從一個網域移至另一個網域,請使用 ModifyDBInstanceAPI操作,並將新網域的網域識別符指定為網域參數。

  • 若要列出每個資料庫執行個體的成員資格,請使用 DescribeDBInstancesAPI操作。

了解網域成員資格

在您建立或修改資料庫執行個體之後,該執行個體會成為網域的成員。您可以執行 describe-db-instancesCLI命令來檢視資料庫執行個體的網域成員資格狀態。資料庫執行個體的狀態可以是下列其中一個:

  • kerberos-enabled – 資料庫執行個體已啟用 Kerberos 身分驗證。

  • enabling-kerberos – AWS 正在此資料庫執行個體上啟用 Kerberos 身分驗證。

  • pending-enable-kerberos – 啟用 Kerberos 身分驗證的過程正在此資料庫執行個體上遭到擱置。

  • pending-maintenance-enable-kerberos – AWS 將在下一個排定的維護時段嘗試在資料庫執行個體上啟用 Kerberos 身分驗證。

  • pending-disable-kerberos – 停用 Kerberos 身分驗證的過程正在此資料庫執行個體上遭到擱置。

  • pending-maintenance-disable-kerberos – AWS 將在下一個排定的維護時段嘗試停用資料庫執行個體上的 Kerberos 身分驗證。

  • enable-kerberos-failed – 有一個組態問題已禁止 AWS 在資料庫執行個體上啟用 Kerberos 身分驗證。請在重新發出資料庫執行個體修改命令之前檢查並修正您的組態。

  • disabling-kerberos – AWS 正在停用此資料庫執行個體上的 Kerberos 身分驗證。

啟用 Kerberos 身分驗證的請求可能會因網路連線問題或錯誤IAM角色而失敗。例如,假設您建立了資料庫執行個體或修改了現有的資料庫執行個體,並且嘗試啟用 Kerberos 身分驗證失敗。如果發生這種情況,請重新發出修改命令,或修改新建立的資料庫執行個體以加入網域。

使用 Kerberos 身分驗證連線至 MySQL

若要使用 Kerberos 身分驗證連線至 MySQL,您必須使用 Kerberos 身分驗證類型登入。

如要建立您可以使用 Kerberos 身分驗證連線的資料庫使用者,請在 IDENTIFIED WITH 陳述式上使用 CREATE USER 子句。如需說明,請參閱「步驟 5:建立 Kerberos 身分驗證 我的SQL登入」。

為了避免錯誤,請使用 MariaDB mysql 用戶端。您可以在 https://downloads.mariadb.org/ 下載 MariaDB 軟體。

在命令提示中,連線至與 MySQL 資料庫執行個體相關聯的其中一個端點。遵循 連線至執行 MySQL 資料庫引擎的資料庫執行個體 中的一般程序。當系統提示您輸入密碼時,請輸入與該使用者名稱相關聯的 Kerberos 密碼。

還原我的SQL資料庫執行個體並將其新增至網域

您可以還原資料庫快照或完成 point-in-time MySQL 資料庫執行個體的還原,然後將其新增至網域。還原資料庫執行個體後,請使用 步驟 4:建立或修改 MySQL 資料庫執行個體 中說明的程序來修改資料庫執行個體,將資料庫執行個體新增到網域。

Kerberos 身分驗證我的SQL限制

下列限制適用於 My 的 Kerberos 身分驗證SQL:

  • 僅 AWS Managed Microsoft AD 支援 。不過,您可以將 RDS MySQL 資料庫執行個體加入相同 中不同帳戶擁有的共用 Managed Microsoft AD 網域 AWS 區域。

  • 啟用功能後,您必須重新啟動資料庫執行個體。

  • 網域名稱長度不能超過 61 個字元。

  • 您無法同時啟用 Kerberos 身分驗證和IAM身分驗證。為您的 MySQL 資料庫執行個體選擇一種身分驗證方法,或另一種身分驗證方法。

  • 啟用功能後,請勿修改資料庫執行個體連接埠。

  • 請勿搭配僅供讀取複本使用 Kerberos 身分驗證。

  • 如果您為使用 Kerberos 身分驗證的 MySQL 資料庫執行個體開啟了自動次要版本升級,則必須關閉 Kerberos 身分驗證,然後在自動升級後重新開啟。如需自動次要版本升級的詳細資訊,請參閱 適用於 My RDS 的 自動次要版本升級SQL

  • 如要在啟用此功能的情況下刪除資料庫執行個體,請先停用功能。若要這麼做,請使用 資料庫執行個體的 modify-db-instanceCLI命令none,並為 --domain 參數指定 。

    如果您使用 CLI或 RDSAPI刪除已啟用此功能的資料庫執行個體, 預期會延遲。

  • RDS for MySQL 不支援在您的內部部署或自我託管 AD 與 之間的樹系信任之間進行 Kerberos 身分驗證 AWS Managed Microsoft AD。