設定 Amazon RDS for Db2 資料庫執行個體的Kerberos身分驗證 - Amazon Relational Database Service

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

設定 Amazon RDS for Db2 資料庫執行個體的Kerberos身分驗證

您可以使用 AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) 來設定 RDS for Db2 資料庫執行個體的Kerberos身分驗證。若要設定Kerberos身分驗證,請依照下列步驟進行:

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

AWS Directory Service 在 Active Directory中建立完全受管的 AWS 雲端。當您建立 AWS Managed Microsoft AD 目錄時, 會為您 AWS Directory Service 建立兩個網域控制站和 DNS 伺服器。目錄伺服器是在 VPC 的不同子網路中建立。此備援可協助確保即使失敗,仍能存取您的目錄。

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

  • 在 VPC Active Directory中設定 。

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

    重要

    請務必儲存此密碼。 AWS Directory Service 不會儲存此密碼,也無法擷取或重設。

  • 建立目錄控制器的安全群組。安全群組必須允許與 RDS for Db2 資料庫執行個體通訊。

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

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

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

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

  • 建立額外的 OU 和容器。

  • 委派授權。

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

  • 在 Windows PowerShell上執行 Active Directory和網域名稱服務 (DNS) 模組 AWS Directory Service。

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

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

  • 檢視 DNS 事件日誌。

  • 檢視安全事件日誌。

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

  2. 選擇設定目錄

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

  4. 選擇下一步

  5. Enter directory information (輸入目錄資訊) 頁面上,提供下列資訊:

    • 版本 – 選擇符合您需求的版本。

    • 目錄 DNS 名稱 – 目錄的完整名稱,例如 corp.example.com

    • Directory NetBIOS 名稱 – 目錄的選用簡短名稱,例如 CORP

    • 目錄描述 – 目錄的選用描述。

    • 管理員密碼 – 目錄管理員的密碼。目錄建立程序會使用使用者名稱Admin和此密碼建立管理員帳戶。

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

      • 小寫字母 (a–z)

      • 大寫字母 (A–Z)

      • 數字 (0–9)

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

      • 確認密碼 – 重新輸入管理員密碼。

        重要

        請確定您儲存此密碼。 AWS Directory Service 不會儲存此密碼,而且無法擷取或重設。

  6. 選擇下一步

  7. Choose VPC and subnets (選擇 VPC 和子網路) 頁面上,提供下列資訊:

    • VPC – 選擇目錄的 VPC。您可以在相同的 VPC 或不同的 VPC 中建立 RDS for Db2 資料庫執行個體。

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

  8. 選擇 Next (下一步)

  9. 檢閱目錄資訊。如果需要變更,請選擇 Previous (上一步),然後進行變更。若資訊無誤,請選擇 Create directory (建立目錄)

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

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

若要查看目錄的相關資訊,請選擇目錄 ID 下的目錄 ID。請記下 Directory ID (目錄 ID) 值,建立或修改 RDS for Db2 資料庫執行個體時,您需要此值。

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

步驟 2:為 Amazon RDS 建立存取的 IAM 角色 AWS Directory Service

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

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

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

注意

用於 RDS for RDS for Db2 身分Windows驗證的 IAM 角色Microsoft SQL Server無法用於 RDS for Db2。 Db2

作為使用 AmazonRDSDirectoryServiceAccess 受管政策的替代方案,您可以建立具有必要許可的政策。在此情況下,IAM 角色必須具有下列 IAM 信任政策:

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

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

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

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

您可以使用 Active Directory Users and Computers工具來建立使用者。這是 Active Directory Domain Services和 Active Directory Lightweight Directory Services工具之一。如需詳細資訊,請參閱 Microsoft 文件中的將使用者和電腦新增至Active Directory網域。在此情況下,使用者是屬於網域且其身分正在 目錄中維護的個人或其他實體,例如其電腦。

若要在 AWS Directory Service 目錄中建立使用者,您必須連線到以 Windows為基礎的 Amazon EC2 執行個體,該執行個體是 AWS Directory Service 目錄的成員。同時,您必須以具有建立使用者權限的使用者身分登入。如需詳細資訊,請參閱《AWS Directory Service 管理指南》中的建立使用者

步驟 4:在 中建立 Db2 管理員群組的 RDS AWS Managed Microsoft AD

RDS for Db2 不支援主要使用者或兩個 Amazon RDS 預留使用者 rdsdb和 的Kerberos身分驗證rdsadmin。相反地,您需要建立一個名為 masterdba 的新群組 AWS Managed Microsoft AD。如需詳細資訊,請參閱 Microsoft 文件中的在 中建立群組帳戶Active Directory。您新增至此群組的任何使用者都將具有主要使用者權限。

啟用Kerberos身分驗證後,主要使用者會失去該masterdba角色。因此,除非您停用Kerberos身分驗證,否則主要使用者將無法存取執行個體本機使用者群組成員資格。若要繼續使用具有密碼登入的主要使用者,請在 上建立 AWS Managed Microsoft AD 與主要使用者同名的使用者。然後,將該使用者新增至群組 masterdba

步驟 5:建立或修改 RDS for Db2 資料庫執行個體

建立或修改 RDS for Db2 資料庫執行個體,以搭配您的目錄使用。您可以使用 AWS Management Console、 AWS CLI或 RDS API,將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做:

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

當您使用主控台建立、修改或還原資料庫執行個體時,請在資料庫Kerberos身分驗證區段中選擇密碼和身分驗證。 然後選擇 Browse Directory (瀏覽目錄)。選取目錄,或選擇建立目錄以使用 Directory Service。

在 Amazon RDS 主控台中選取密碼和 Kerberos 身分驗證的 Databate 身分驗證區段。

當您使用 時 AWS CLI,資料庫執行個體需要下列參數,才能使用您建立的目錄:

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

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

下列範例會修改資料庫執行個體以使用目錄。將範例中的下列預留位置取代為您自己的值:

  • db_instance_name – RDS for Db2 資料庫執行個體的名稱。

  • directory_id – 您建立的 AWS Directory Service for Microsoft Active Directory 目錄 ID。

  • role_name – 您建立的 IAM 角色名稱。

aws rds modify-db-instance --db-instance-identifier db_instance_name --domain d-directory_id --domain-iam-role-name role_name
重要

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

步驟 6:設定 Db2 用戶端

設定 Db2 用戶端
  1. 建立 /etc/krb5.conf 檔案 (或同等檔案) 以指向網域。

    注意

    對於 Windows 作業系統,建立 C:\windows\krb5.ini 檔案。

  2. 確認流量可以在用戶端主機與 之間流動 AWS Directory Service。將 等網路公用程式Netcat用於下列任務:

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

    2. 驗證連接埠 53 和 的 TCP/UDP 流量Kerberos,其中包含連接埠 88 和 464 AWS Directory Service。

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

下列範例是 的 /etc/krb5.conf 檔案內容 AWS Managed Microsoft AD:

[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