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

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

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

您可以使用 AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) 來設定 Kerberos 適用於 Db2 資料庫執行個體RDS的 身分驗證。設定 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 執行下列任務:

  • 設定 Active Directory 在您的 中VPC。

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

    重要

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

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

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

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

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

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

  • 建立其他 OUs和 容器。

  • 委派授權。

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

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

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

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

  • 檢視DNS事件日誌。

  • 檢視安全事件日誌。

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

  2. 選擇設定目錄

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

  4. 選擇 Next (下一步)

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

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

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

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

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

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

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

      • 小寫字母 (a–z)

      • 大寫字母 (A–Z)

      • 數字 (0–9)

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

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

        重要

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

  6. 選擇 Next (下一步)

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

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

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

  8. 選擇 Next (下一步)

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

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

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

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

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

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

若要RDS讓 Amazon AWS Directory Service 為您呼叫 ,您需要使用 受管IAM政策 AWS 帳戶 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 服務

注意

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

作為使用 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 Users and Computers 工具。這是 Active Directory Domain Services 以及 Active Directory Lightweight Directory Services 工具。如需詳細資訊,請參閱將使用者和電腦新增至 Active Directory 中的網域 Microsoft 文件中)。在這種情況下,使用者是屬於網域且其身分在目錄中維護的個人或其他實體,例如其電腦。

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

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

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

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

步驟 5:建立或修改RDS適用於 Db2 資料庫執行個體的

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

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

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

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

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

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

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

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

  • db_instance_name – RDS適用於 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. 驗證連接埠 53 DNS的流量。

    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