本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Kerberos for Oracle 資料庫執行個體
使用 AWS Directory Service for Microsoft Active Directory AWS Managed Microsoft AD來設定 Oracle 資料庫執行個體的 Kerberos 身分驗證。若要設定 Kerberos 身分驗證,請完成下列步驟:
注意
在安裝期間,RDS 會建立名稱為 managed_service_user
@example.com
且擁有 CREATE SESSION
權限的 Oracle 資料庫使用者,其中 example.com
是您的網域名稱。此使用者對應 Directory Service 在受管 Active Directory 內建立的使用者。RDS 會定期使用 Directory Service 提供的登入資料登入 Oracle 資料庫。之後,RDS 會立即銷毀票證快取。
步驟 1:使用 建立目錄 AWS Managed Microsoft AD
AWS Directory Service 在 AWS 雲端中建立全受管 Active Directory。當您建立 AWS Managed Microsoft AD 目錄時, 會代表您 AWS Directory Service 建立兩個網域控制站和網域名稱系統 (DNS) 伺服器。目錄伺服器是在 VPC 的不同子網路中建立。此備援有助於確保即使發生故障,您仍然可以存取目錄。
當您建立 AWS Managed Microsoft AD 目錄時, 會代表您 AWS Directory Service 執行下列任務:
-
在 VPC 內設定 Active Directory。
-
建立含有使用者名稱 Admin 與指定密碼的目錄管理員帳戶。您可以使用此帳戶來管理目錄。
注意
請務必儲存此密碼。 AWS Directory Service 不會儲存它。您可以重設此密碼,但是無法擷取此密碼。
-
建立目錄控制器的安全群組。
當您啟動 時 AWS Managed Microsoft AD, 會 AWS 建立組織單位 (OU),其中包含您目錄的所有物件。此 OU 有您在建立目錄時所輸入的 NetBIOS 名稱,且位於根網域中。網域根由 擁有和管理 AWS。
使用 AWS Managed Microsoft AD 目錄建立的管理員帳戶具有 OU 最常見管理活動的許可:
-
建立、更新或刪除使用者
-
將資源 (例如檔案或列印伺服器) 新增至您的網域,然後對您 OU 中的使用者指派這些資源的許可
-
建立額外的 OU 和容器
-
委派授權
-
從 Active Directory 資源回收筒還原已刪除的物件
-
在 Active Directory Web 服務上執行 AD 和 DNS Windows PowerShell 模組
管理員帳戶也有權執行下列全網域活動:
-
管理 DNS 組態 (新增、移除或更新記錄、區域和轉寄站)
-
檢視 DNS 事件日誌
-
檢視安全事件日誌
若要建立目錄,請使用 AWS Management Console AWS CLI、 或 AWS Directory Service API。請務必開啟目錄安全性群組上的相關輸出連接埠,以便目錄可以與 Oracle 資料庫執行個體通訊。
使用 建立目錄 AWS Managed Microsoft AD
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/directoryservicev2/
開啟 AWS Directory Service 主控台。 -
在導覽窗格中,選擇 Directories (目錄),然後選擇 Set up directory (設定目錄)。
-
選擇 AWS Managed Microsoft AD。 AWS Managed Microsoft AD 是您目前可與 Amazon RDS 搭配使用的唯一選項。
-
輸入下列資訊:
- 目錄 DNS 名稱
-
目錄的完全合格名稱,例如
corp.example.com
。 - 目錄 NetBIOS 名稱
-
目錄的簡短名稱,例如:
CORP
。 - 目錄描述
-
(選用) 目錄的描述。
- 管理員密碼
-
目錄管理員的密碼。目錄建立程序會建立含有使用者名稱 Admin 與這組密碼的管理員帳戶。
目錄管理員密碼不得包含 "admin" 字組。密碼區分大小寫,長度須為 8 至 64 個字元。至少須有一位字元屬於以下四種類型中的三類:
-
小寫字母 (a–z)
-
大寫字母 (A–Z)
-
數字 (0–9)
-
非英數字元 (~!@#$%^&*_-+=`|\(){}[]:;"'<>,.?/)
-
- Confirm password (確認密碼)
-
重新輸入的管理員密碼。
-
選擇 Next (下一步)。
-
在 Networking (聯網) 區段輸入以下資訊,然後選擇 Next (下一步)。
- VPC
-
目錄的 VPC。在相同 VPC 中建立 Oracle 資料庫執行個體。
- 子網路
-
目錄伺服器的子網路。這兩個子網路必須位於不同的可用區域。
-
檢閱目錄資訊,並進行必要的變更。若資訊無誤,請選擇 Create directory (建立目錄)。
建立目錄需要幾分鐘的時間。成功建立時,Status (狀態) 值會變更為 Active (作用中)。
如要查看您目錄的資訊,請在目錄清單中選擇目錄名稱。請記下 Directory ID (目錄 ID) 值,因為您在建立或修改 Oracle 資料庫執行個體時將需要這個值。

步驟 2:建立信任
如果您計劃 AWS Managed Microsoft AD 只使用 ,請移至 步驟 3:設定 Amazon RDS 的 IAM 許可。
若要使用自我管理的 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 RDS 的 IAM 許可
若要 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 《IAM 使用者指南》中的啟用和停用 AWS 區域。
建立 IAM 角色
當您使用 建立資料庫執行個體 AWS Management Console,且主控台使用者具有 iam:CreateRole
許可時,主控台rds-directoryservice-kerberos-access-role
會自動建立 。否則,您必須手動建立 IAM 角色。當您手動建立 IAM 角色時,請選擇 Directory Service
,然後將 AWS 受管政策連接至AmazonRDSDirectoryServiceAccess
該角色。
如需為 服務建立 IAM 角色的詳細資訊,請參閱《IAM 使用者指南》中的建立角色以將許可委派給 AWS 服務。
注意
用於 Windows Authentication for RDS for Microsoft SQL Server 的 IAM 角色不可用於 RDS for Oracle。
手動建立 IAM 信任政策
您可以選擇性地建立具有必要許可的資源政策,而不是使用受管 IAM 政策 AmazonRDSDirectoryServiceAccess
。同時指定 directoryservice.rds.amazonaws.com
和 rds.amazonaws.com
作為主體。
若要限制 Amazon RDS 為特定資源提供另一項服務的許可,建議在資源政策中使用 aws:SourceArn
和 aws:SourceAccount
全域條件內容索引鍵。防範混淆代理人問題的最有效方法是使用 aws:SourceArn
全域條件內容索引鍵,以及 Amazon RDS 資源的完整 ARN。如需詳細資訊,請參閱防止跨服務混淆代理人問題。
下列範例示範如何使用 Amazon RDS 中的 aws:SourceArn
和 aws:SourceAccount
全域條件內容索引鍵,來預防混淆代理人問題。
{ "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 ECAmazon EC2 執行個體。同時,您必須以具有建立使用者之許可的使用者身分來登入。如需在 Microsoft Active Directory 建立使用者的詳細資訊,請參閱《 AWS Managed Microsoft AD管理指南》中的管理AWS Directory Service 中的使用者和群組。
步驟 5:啟用目錄和資料庫執行個體之間的跨 VPC 流量
如果您打算在相同 VPC 中尋找目錄和資料庫執行個體,請略過本步驟,並移至步驟 6:建立或修改 Oracle 資料庫執行個體。
如果您計劃在不同 AWS 帳戶或 VPCs 中尋找目錄和資料庫執行個體,請使用 VPC 對等互連或 AWS Transit Gateway 設定跨 VPC 流量。下列程序會使用 VPC 互連來啟用 VPC 之間的流量。請遵循《Amazon Virtual Private Cloud 互連指南》中什麼是 VPC 互連?的指示。
使用 VPC 互連以啟用跨 VPC 流量
-
設定適當的 VPC 路由規則,以確保網路流量可以雙向對流。
-
確保資料庫執行個體安全群組可以從目錄的安全群組接收傳入流量。若要取得更多資訊,請參閱《 AWS Managed Microsoft AD管理指南》中的 AWS Directory Service 最佳實務。
-
確保沒有網路存取控制清單 (ACL) 規則來封鎖流量。
如果另一個 AWS 帳戶擁有目錄,您必須共用目錄。
在 AWS 帳戶之間共用目錄
-
遵循 AWS Directory Service 管理指南中的教學課程:共用您的目錄以進行無縫 EC2 網域加入,開始與將在其中建立資料庫執行個體 AWS 的帳戶共用目錄。 AWS Managed Microsoft AD EC2
-
使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台,並確保網域具有
SHARED
狀態,然後再繼續。 -
使用資料庫執行個體的帳戶登入 AWS Directory Service 主控台時,請注意目錄 ID 值。您可以使用此目錄 ID,將資料庫執行個體加入網域。
步驟 6:建立或修改 Oracle 資料庫執行個體
建立或修改要搭配您目錄使用的 Oracle 資料庫執行個體。您可以使用主控台、CLI 或 RDS API,將資料庫執行個體與目錄建立關聯。您可採用下列其中一種方式來這麼做:
-
使用主控台、 create-db-instance CLI 命令,或 CreateDBInstance RDS API 操作,建立新的 Oracle 資料庫執行個體。
如需說明,請參閱「建立 Amazon RDS 資料庫執行個體」。
-
使用主控台、modify-db-instance CLI 命令,或 ModifyDBInstance RDS API 操作,修改現有的 Oracle 資料庫執行個體。
如需說明,請參閱「修改 Amazon RDS 資料庫執行個體」。
-
使用主控台、 restore-db-instance-from-db-snapshot CLI 命令,或 RestoreDBInstanceFromDBSnapshot RDS API 操作,從資料庫快照還原 Oracle 資料庫執行個體。
如需說明,請參閱「還原至資料庫執行個體」。
-
使用主控台、 restore-db-instance-to-point-in-time CLI 命令,或 RestoreDBInstanceToPointInTime RDS API 操作,將 Oracle 資料庫執行個體還原至時間點。
如需說明,請參閱「將資料庫執行個體還原至 Amazon RDS 的指定時間」。
僅 VPC 中的 Oracle 資料庫執行個體支援 Kerberos 身分驗證。資料庫執行個體可在與目錄相同的 VPC 中,或在不同 VPC 中。當您建立或修改資料庫執行個體時,請執行以下動作:
-
請提供您建立目錄時產生的網域識別符 (
d-*
識別符)。 -
請提供所建立的 IAM 角色名稱。
-
確保資料庫執行個體安全群組可以接收來自目錄安全群組的傳入流量,並將傳出流量傳送至目錄。
使用主控台建立資料庫執行個體時,請在 Database authentication (資料庫身分驗證) 區段中選擇 Password and Kerberos authentication (密碼和 Kerberos 身分驗證)。選擇 Browse Directory (瀏覽目錄) 並選取目錄,或是選擇 Create a new directory (建立新目錄)。

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

當您使用 時 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-namerole-name
在 Windows 中:
aws rds modify-db-instance ^ --db-instance-identifier
mydbinstance
^ --domain d-ID
^ --domain-iam-role-namerole-name
重要
如果您修改資料庫執行個體,以啟用 Kerberos 身分驗證,請在進行變更後重新啟動資料庫執行個體。
注意
MANAGED_SERVICE_USER
是一個服務帳戶,其名稱是由 RDS 的 Directory Service 隨機產生。在 Kerberos 身分驗證設定期間,RDS for 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 進行身分驗證
-
使用 Amazon RDS 主要使用者登入資料來連線至 Oracle 資料庫執行個體。
-
在 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/UDP 在用戶端主機和 AWS Directory Service 透過 DNS 連接埠 53、透過 TCP 的 Kerberos 連接埠 (88 和 464 用於受管 AWS Directory Service) 和透過 TCP 的 LDAP 連接埠 389 之間流動。
-
確定流量可透過資料庫連接埠在用戶端主機和資料庫執行個體之間往來。
以下是 的範例內容 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 檔案中,以內部部署 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 Developer 組態的範例,請參閱 Oracle Support 的文件 1609359.1