使用適用於 Db2 的 RDS Kerberos 驗證 - Amazon Relational Database Service

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

使用適用於 Db2 的 RDS Kerberos 驗證

當使用者連線到 Amazon RDS for Db2 資料庫執行個體時,您可以使用身分Kerberos驗證來驗證使用者。您的資料庫執行個體與 AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD) 搭配使用以啟用Kerberos驗證。當使用者透過加入信任網域的 RDS for Db2 資料庫執行個體進行驗證時,驗證要求會轉寄至您使用建立的目錄。AWS Directory Service如需詳細資訊,請參閱《AWS Directory Service 使用者指南》中的什麼是 AWS Directory Service?

首先,建立儲存使用者認證的AWS Managed Microsoft AD目錄。然後,將AWS Managed Microsoft AD目錄的網域和其他資訊新增至您的 RDS for Db2 資料庫執行個體。當使用者透過 RDS for Db2 資料庫執行個體進行驗證時,驗證要求會轉送至目AWS Managed Microsoft AD錄。

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

區域和版本可用性

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

注意

Kerberos針對 Db2 資料庫執行個體已取代 RDS 的資料庫執行個體類別,不支援驗證。如需詳細資訊,請參閱適用於 Db2 執行個體類別的 RDS

適用於 Db2 資料庫執行個體的 RDS Kerberos 驗證概觀

若要設定 RDS for Db2 資料庫執行個體的Kerberos驗證,請完成下列一般步驟,稍後將詳細說明:

  1. 使用 AWS Managed Microsoft AD 來建立 AWS Managed Microsoft AD 目錄。您可以使用AWS Management Console、AWS Command Line Interface (AWS CLI) 或AWS Directory Service來建立目錄。如需詳細資訊,請參閱《AWS Directory Service管理指南》的建立AWS Managed Microsoft AD目錄

  2. 建立使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess 的 AWS Identity and Access Management (IAM) 角色。IAM 角色可讓 Amazon RDS 對您的目錄撥打電話。

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

  3. 使用、或 RDS API 搭配下列其中一種方法AWS Management Console,建立或修改 RDS for Db2 資料庫執行個體:AWS CLI

    您可以在與目錄相同的 Amazon Virtual Private Cloud (VPC) 中找到資料庫執行個體,也可以在不AWS 帳戶同的或 VPC 中找到該資料庫執行個體。當您建立或修改 Db2 資料庫執行個體的 RDS 時,請執行下列工作:

    • 請提供您建立目錄時產生的網域識別符 (d-* 識別符)。

    • 請提供所建立的 IAM 角色名稱。

    • 確認資料庫執行個體安全群組可以接收來自目錄安全群組的輸入流量。

  4. 設定您的 Db2 用戶端,並確認流量可以在用戶端主機和AWS Directory Service下列連接埠之間流動:

    • TCP/UDP 連接埠 53 — DNS

    • 88-Kerberos 認證

    • TCP 389-LDAP

    • 464 — 驗證 Kerberos

為 Db2 資料庫執行個體的 RDS 設定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 會代您執行下列任務:

  • Active Directory在您的 VPC 中設置一個。

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

    重要

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

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

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

隨著您的 Admin 目錄建立的 AWS Managed Microsoft AD 帳戶具有您的 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://console.aws.amazon.com/directoryservicev2/ 的 AWS Directory Service 主控台。

  2. 選擇「設定目錄」。

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

  4. 選擇 Next (下一步)

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

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

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

    • 目錄 NetBIOS 名稱 — 目錄的選擇性簡稱,例如CORP

    • 目錄說明 — 目錄的選擇性描述。

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

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

      • 小寫字母 (a–z)

      • 大寫字母 (A–Z)

      • 數字 (0–9)

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

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

        重要

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

  6. 選擇 Next (下一步)

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

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

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

  8. 選擇 Next (下一步)

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

    在主控台中建立目錄期間的「複查」頁AWS Directory Service面。

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

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

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

步驟 2:為 Amazon RDS 創建 IAM 角色以訪問 AWS Directory Service

若要讓 Amazon RDS AWS Directory Service 為您撥打電話,您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 服務

注意

適用於 RDS 的Windows驗證的身分與存取權管理角色Microsoft SQL Server無法用於適用於 Db2 的 RDS。

作為使用 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工具之一。如需詳細資訊,請參閱Microsoft文件中的將使用者和電腦新增至Active Directory網域。在這種情況下,使用者是個人或其他實體,例如他們的電腦,這些實體屬於網域的一部分,且其識別會維護在目錄中。

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

步驟 4:在中建立適用於 Db2 系統管理群組的 RDS AWS Managed Microsoft AD

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

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

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

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

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

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

選擇Kerberos驗證和識別要使用的目錄。

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

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

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

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

  • 資料庫名稱 — 適用於 Db2 資料庫執行個體的 RDS 名稱。

  • 錄 ID — 您所建立之AWS Directory Service for Microsoft Active Directory目錄的識別碼。

  • 角色名稱 — 您建立的 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 檔案 (或同等檔案) 以指向網域。

    注意

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

  2. 確定流量可在用戶端主機和 AWS Directory Service 之間往來。請使用網路公用程式,Netcat例如執行下列工作:

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

    2. 驗證透過 TCP/UDP 的通訊埠 53 和用於的流量Kerberos,其中包括. 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

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

您可以使用AWS Management ConsoleAWS CLI、或 RDS API 來管理您的資料庫執行個體及其與您的Microsoft Active Directory. 例如,您可以關聯Active Directory以啟用Kerberos驗證。您也可以移除關聯以停Active Directory用Kerberos驗證。您也可以將資料庫執行個體移至另一個執行個Microsoft Active Directory體進行外部驗證。

例如,您可以使用 modify-db-instanceCLI 命令執行下列動作:

  • 透過為--domain選項指定目前成員資格的目錄 ID,重新嘗試啟用失敗成員資格的Kerberos驗證。

  • 透過指定none--domain選項來停用資料庫執行個體的Kerberos驗證。

  • 透過為--domain選項指定新網域的網域識別碼,將資料庫執行個體從一個網域移至另一個網域。

了解網域成員資格

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

  • 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驗證可能會失敗。如果發生這種情況,請確認您使用的是正確的 IAM 角色,然後修改資料庫執行個體以加入網域。

使用驗證連線至適用於 Db2 的 Kerberos RDS

使用驗證連線至適用於 Db2 的 Kerberos RDS
  1. 畫面出現命令提示時,執行下列 命令。在下面的例子中,用您的用戶名替換用Microsoft Active Directory戶名。

    kinit username
  2. 如果 RDS for Db2 資料庫執行個體使用可公開存取的 VPC,請將資料庫執行個體端點的 IP 位址新增到 Amazon EC2 用戶端上的/etc/hosts檔案。下列範例會取得 IP 位址,然後將其新增至/etc/hosts檔案。

    % dig +short Db2-endpoint.AWS-Region.rds.amazonaws.com ;; Truncated, retrying in TCP mode. ec2-34-210-197-118.AWS-Region.compute.amazonaws.com. 34.210.197.118 % echo "34.210.197.118 Db2-endpoint.AWS-Region.rds.amazonaws.com" >> /etc/hosts
  3. 使用下列命令登入與相關聯的 RDS for Db2 資料庫執行個體Active Directory。將資料庫名稱取代為您的 RDS for Db2 資料庫的名稱。

    db2 connect to database_name