設定 Kerberos for Oracle 資料庫執行個體 - Amazon Relational Database Service

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

設定 Kerberos for Oracle 資料庫執行個體

使用 AWS Directory Service for Microsoft Active Directory,也稱為 AWS Managed Microsoft AD,來設定 Oracle 資料庫執行個體的 Kerberos 身分驗證。若要設定 Kerberos 身分驗證,請完成下列步驟:

注意

在設定期間, 會RDS建立名為 的 Oracle 資料庫使用者 managed_service_user@example.com 權限CREATE SESSION,其中 example.com 是您的網域名稱。此使用者對應 Directory Service 在受管 Active Directory 內建立的使用者。定期RDS使用 Directory Service 提供的憑證來登入您的 Oracle 資料庫。之後, 會RDS立即銷毀票證快取。

步驟 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 Management Console、 AWS CLI或 AWS Directory Service API。請務必開啟目錄安全性群組上的相關輸出連接埠,以便目錄可以與 Oracle 資料庫執行個體通訊。

若要使用 建立目錄 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的 。在此相同的 中建立 Oracle 資料庫執行個體VPC。

    子網

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

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

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

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

如要查看您目錄的資訊,請在目錄清單中選擇目錄名稱。請記下 Directory ID (目錄 ID) 值,因為您在建立或修改 Oracle 資料庫執行個體時將需要這個值。

目錄詳細資訊頁面

步驟 2:建立信任

如果您計劃 AWS Managed Microsoft AD 僅使用 ,請移至 步驟 3:設定 Amazon 的IAM許可 RDS

若要使用自我管理的 Active Directory 啟用 Kerberos 身分驗證,您必須在自我管理的 Active Directory 與上一個步驟中 AWS Managed Microsoft AD 建立的 之間建立樹系信任關係。信任可以是單向,其中 AWS Managed Microsoft AD 信任自我管理的 Active Directory。信任也可以是雙向,其中兩個 Active Directory 互相信任。如需使用 設定樹系信任的詳細資訊 AWS Directory Service,請參閱 AWS Directory Service 管理指南 中的何時建立信任關係

步驟 3:設定 Amazon 的IAM許可 RDS

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

注意

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

建立IAM角色

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

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

注意

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

手動建立IAM信任政策

或者,您可以建立具有所需許可的資源政策,而不是使用 受管IAM政策 AmazonRDSDirectoryServiceAccess。同時指定 directoryservice.rds.amazonaws.com.rproxy.goskope.comrds.amazonaws.com 作為主體。

若要限制 Amazon 為特定資源RDS提供其他服務的許可,我們建議您在資源政策中使用 aws:SourceArnaws:SourceAccount 全域條件內容索引鍵。防止混淆代理問題的最有效方法是使用 aws:SourceArn全域條件內容索引鍵搭配 ARNAmazon RDS 資源。如需詳細資訊,請參閱防止跨服務混淆代理人問題

下列範例示範如何在 Amazon 中使用 aws:SourceArnaws:SourceAccount全域條件內容金鑰RDS,以防止混淆代理問題。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:mydbinstance" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

對於選擇加入區域,您還必須採用 的形式包含該區域的服務主體directoryservice.rds.region_name.amazonaws.com。例如,在非洲 (開普敦) 區域中,請使用下列信任政策:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "directoryservice.rds.amazonaws.com", "directoryservice.rds.af-south-1.amazonaws.com", "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:rds:af-south-1:123456789012:db:mydbinstance" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }

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

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

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

您可以使用 Active Directory 使用者和電腦工具 (其為 Active Directory 網域服務和 Active Directory 輕量型目錄服務工具之一) 來建立使用者。在此情況下,使用者 代表具有目錄存取權的個人或實體。

若要在 AWS Directory Service 目錄中建立使用者,您必須連線至屬於 AWS Directory Service 目錄成員的 Windows 型 Amazon EC2執行個體。同時,您必須以具有建立使用者之許可的使用者身分來登入。如需在 Microsoft Active Directory 建立使用者的詳細資訊,請參閱《 AWS Managed Microsoft AD管理指南》中的管理AWS Directory Service 中的使用者和群組

步驟 5:啟用目錄與資料庫執行個體之間的交叉VPC流量

如果您計劃在相同的 中尋找目錄和資料庫執行個體VPC,請略過此步驟並移至 步驟 6:建立或修改 Oracle 資料庫執行個體

如果您計劃在不同 AWS 帳戶或 中尋找目錄和資料庫執行個體VPCs,請使用VPC對等或 AWS Transit Gateway 設定跨VPC流量。下列程序會啟用VPCs使用VPC對等互連之間的流量。請遵循 Amazon Virtual Private Cloud VPC對等指南 中什麼是對等? 中的指示。 Amazon Virtual Private Cloud

使用VPC對等啟用跨VPC流量
  1. 設定適當的VPC路由規則,以確保網路流量可以雙向流動。

  2. 確保資料庫執行個體安全群組可以從目錄的安全群組接收傳入流量。若要取得更多資訊,請參閱《 AWS Managed Microsoft AD管理指南》中的 AWS Directory Service 最佳實務

  3. 確保沒有可封鎖流量的網路存取控制清單 (ACL) 規則。

如果不同的 AWS 帳戶擁有目錄,您必須共用目錄。

在 AWS 帳戶之間共用目錄
  1. 請依照 AWS Directory Service 管理指南 中的教學課程:共用您的目錄以無縫加入網域,開始與將在其中建立資料庫執行個體 AWS 的 帳戶共用目錄。 AWS Managed Microsoft AD EC2

  2. 使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台,並確保網域具有 SHARED 狀態,然後再繼續。

  3. 使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台時,請注意目錄 ID 值。您可以使用此目錄 ID,將資料庫執行個體加入網域。

步驟 6:建立或修改 Oracle 資料庫執行個體

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

只有 中的 Oracle 資料庫執行個體才支援 Kerberos 身分驗證VPC。資料庫執行個體可與目錄VPC位於相同 ,或位於不同的 。 VPC當您建立或修改資料庫執行個體時,請執行以下動作:

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

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

  • 確保資料庫執行個體安全群組可以接收來自目錄安全群組的傳入流量,並將傳出流量傳送至目錄。

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

建立資料庫執行個體時的 Kerberos 身分驗證設定

當您使用主控台修改或還原資料庫執行個體時,請選擇 Kerberos authentication (Kerberos 身分驗證) 區段中的目錄,或選擇 Create a new directory (建立新目錄)

修改或還原資料庫執行個體時的 Kerberos 身分驗證設定

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

  • 針對 --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 身分驗證,請在進行變更後重新啟動資料庫執行個體。

注意

MANAGED_SERVICE_USER 是 服務帳戶,其名稱由 Directory Service 隨機產生,適用於 RDS。在 Kerberos 身分驗證設定期間,RDS針對 Oracle 會建立具有相同名稱的使用者,並為其指派CREATE SESSION權限。Oracle 資料庫使用者外部識別為 MANAGED_SERVICE_USER@EXAMPLE.COM其中,EXAMPLE.COM 是您的網域名稱。定期RDS使用 Directory Service 提供的憑證來登入您的 Oracle 資料庫。之後, 會RDS立即銷毀票證快取。

步驟 7:建立 Kerberos 身分驗證 Oracle 登入

使用 Amazon RDS主要使用者登入資料來連線至 Oracle 資料庫執行個體,就像您執行任何其他資料庫執行個體一樣。資料庫執行個體會加入 AWS Managed Microsoft AD 網域。因此,您可以從網域中的 Microsoft Active Directory 使用者和群組佈建 Oracle 登入和使用者。若要管理資料庫許可,請將標準 Oracle 許可授與這些登入,以及撤銷其許可。

允許 Microsoft Active Directory 使用者與 Oracle 進行身分驗證
  1. 使用您的 Amazon RDS主要使用者憑證連線至 Oracle 資料庫執行個體。

  2. 在 Oracle 資料庫中建立外部身分驗證的使用者。

    在下列範例中,以使用者名稱和網域名稱取代 KRBUSER@CORP.EXAMPLE.COM

    CREATE USER "KRBUSER@CORP.EXAMPLE.COM" IDENTIFIED EXTERNALLY; GRANT CREATE SESSION TO "KRBUSER@CORP.EXAMPLE.COM";

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

步驟 8:設定 Oracle 用戶端

若要設定 Oracle 用戶端,必須符合下列需求:

  • 請建立一個名為 krb5.conf (Linux) 或 krb5.ini (Windows) 的組態檔案,以指向該網域。設定 Oracle 用戶端以使用此組態檔案。

  • 確認流量可以在用戶端主機之間透過 TCP/ AWS Directory Service 流經DNS連接埠 53UDP、透過 流經 Kerberos 連接埠 (受管 為 88 和 464 AWS Directory Service)TCP,以及透過 流經LDAP連接埠 389TCP。

  • 確定流量可透過資料庫連接埠在用戶端主機和資料庫執行個體之間往來。

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

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

以下是適用於內部部署 Microsoft AD 的範例內容。在 krb5.conf 或 krb5.ini 檔案中,取代 on-prem-ad-server-name 使用內部部署 AD 伺服器的名稱。

[libdefaults] default_realm = ONPREM.COM [realms] AWSAD.COM = { kdc = awsad.com admin_server = awsad.com } ONPREM.COM = { kdc = on-prem-ad-server-name admin_server = on-prem-ad-server-name } [domain_realm] .awsad.com = AWSAD.COM awsad.com= AWSAD.COM .onprem.com = ONPREM.COM onprem.com= ONPREM.COM
注意

在您設定 krb5.ini 或 krb5.conf 檔案後,我們建議您重新啟動伺服器。

以下是 SQL*Plus 組態的 sqlnet.ora 內容範例:

SQLNET.AUTHENTICATION_SERVICES=(KERBEROS5PRE,KERBEROS5) SQLNET.KERBEROS5_CONF=path_to_krb5.conf_file

如需SQL開發人員組態的範例,請參閱 Oracle Support 的文件 1609359.1