使用基準資料庫服務的識別與存取管理認證
您可以將基準資料庫服務中的 Oracle Database 設定為使用 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 認證和授權,讓 IAM 使用者能夠使用 IAM 證明資料存取資料庫。
注意:Oracle Database 支援 OCI IAM 與識別網域的 Base Database Service 整合,以及不包含識別網域的舊版 IAM。將 IAM 與識別網域搭配使用時,支援預設和非預設網域使用者和群組。
僅支援 Oracle Database 版本 19c、版本 19.21 和更新版本 (但不支援 Oracle Database 版本 21c) 的非預設自訂網域。
關於 IAM 認證
OCI IAM 與基準資料庫服務的整合支援資料庫密碼驗證程式認證和權杖型驗證。如需有關在基準資料庫服務上使用 IAM 使用者之架構的詳細資訊,請參閱認證及授權 Oracle DBaaS 資料庫的 IAM 使用者。
IAM 資料庫密碼認證
您可以啟用 Oracle Database 執行處理,讓使用者能夠存取 OCI IAM 資料庫密碼 (使用密碼驗證程式)。
對於密碼驗證程式資料庫存取,您可以建立 IAM 使用者和 OCI 應用程式與 Oracle Database 執行處理的對應。IAM 使用者帳戶本身是在 IAM 中管理。使用者帳戶和使用者群組可以位於預設網域或自訂的非預設網域中。
注意:所有支援的 12c 和更新版本的資料庫從屬端都可用於 Oracle Database 的 IAM 資料庫密碼存取。
OCI IAM 資料庫密碼可讓 IAM 使用者以 Oracle Database 使用者通常以使用者名稱和密碼登入資料庫執行處理。使用者輸入其 IAM 使用者名稱和 IAM 資料庫密碼。IAM 資料庫密碼與 OCI 主控台密碼不同。使用含密碼驗證器的 IAM 使用者,只要資料庫從屬端支援 Oracle Database 12c 密碼驗證程式,您就可以使用任何支援的資料庫從屬端登入資料庫。
IAM SSO 權杖型驗證
您可以讓 Oracle Database 執行處理使用 OCI IAM SSO 記號。
對於權杖資料庫存取權,您可以建立 IAM 使用者和 OCI 應用程式與 Oracle Database 執行處理的對應。IAM 使用者帳戶本身是在 IAM 中管理。使用者帳戶和使用者群組可以位於預設網域或自訂的非預設網域中。
資料庫從屬端有幾種方式可以取得 IAM 資料庫記號:
-
從屬端應用程式或工具可以向 IAM 要求使用者資料庫記號,而且可以透過從屬端 API 傳送資料庫記號。使用 API 傳送權杖會覆寫資料庫從屬端中的其他設定值。IAM 資料庫權杖用量需為 Oracle Database 從屬端 19.16 和更新版本 (不是 21c)。部分 Oracle Database 從屬端 21.5 和更新版本提供有限 (非完整) 的 IAM 資料庫權杖功能。
-
如果應用程式或工具不支援要求 IAM 資料庫記號並透過從屬端 API 傳送至資料庫,則 IAM 使用者可以先使用 OCI 命令行介面 (CLI) 擷取 IAM 資料庫記號並將其儲存在檔案位置。例如,若要使用此連線方法使用 SQL*Plus 和其他應用程式和工具,您必須先使用 OCI CLI 取得資料庫記號。如果為 IAM 資料庫記號設定資料庫從屬端,當使用者使用斜線登入表單登入時,資料庫驅動程式會使用預設或指定檔案位置中儲存的 IAM 資料庫記號。
-
從屬端應用程式或工具可以使用 OCI IAM 執行處理委派人或資源委派人取得 IAM 資料庫記號,並使用 IAM 資料庫記號向資料庫執行處理進行自我認證。
-
IAM 使用者和 OCI 應用程式可以使用數種方法向 IAM 要求資料庫權杖,包括使用 API 金鑰。
如需有關設定從屬端連線的詳細資訊,請參閱設定使用 IAM 記號之 SQL*Plus 的從屬端連線。如需有關其他方法 (例如在 OCI 雲端 Shell 內使用委派權杖) 的詳細資訊,請參閱驗證和授權 Oracle DBaaS 資料庫的 IAM 使用者。
如果使用者輸入使用者名稱與密碼來登入,則資料庫驅動程式會使用密碼驗證程式方法來存取資料庫作為預設方法。
先決條件
基準資料庫服務上的 IAM 認證需符合以下先決條件。
網路設定
在資料庫上使用 IAM 認證之前,您必須先使用網路服務將服務閘道、路由規則和輸出安全規則新增至您資料庫資源所在的虛擬雲端網路 (VCN) 和子網路。
- 依照建立服務閘道中的指示,在資料庫資源所在的 VCN 中建立服務閘道。
-
建立服務閘道之後,請對資料庫資源所在的每個子網路 (在 VCN 中) 新增路由規則和輸出安全規則,讓這些資源能夠使用閘道使用 IAM 認證:
- 前往子網路的子網路詳細資訊頁面。
- 在子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。
-
在現有路由規則的表格中,檢查是否已有具有下列特性的規則:
- 目的地:Oracle Services Network 中的所有 IAD 服務
- 目標類型:服務閘道
- 目標:您剛剛在 VCN 中建立的服務閘道名稱
如果沒有這樣的規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。
- 返回子網路的子網路詳細資訊頁面。
- 在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。
- 在側邊功能表的資源底下,按一下傳出規則。
-
在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:
- 無狀態:否
- 目的地:Oracle Services Network 中的所有 IAD 服務
- IP 通訊協定:TCP
- 來源港口範圍:
- 目的地連接埠範圍: 443
- 如果沒有這類規則,請按一下新增傳出規則,然後新增含有這些特性的傳出規則。
環境設定值
檢查是否已設定 WALLET_ROOT:
show parameters wallet_root;
NAME TYPE VALUE
------------------ ----------- --------
wallet_root string
如果未顯示 WALLET_ROOT 的目錄位置,您將無法以 IAM 設定此資料庫。下次修正資料庫時,應設定 WALLET_ROOT。新的資料庫將隨附 WALLET_ROOT 集。
TLS 組態
將 IAM 權杖從資料庫從屬端傳送至資料庫伺服器時,必須建立 TLS 連線。具有「基準資料庫服務」執行處理之資料庫憑證的 TLS 公事包必須儲存在 WALLET_ROOT 位置底下。建立一個 tls 目錄,讓它看起來像:WALLET_ROOT/<PDB GUID>/tls
在資料庫從屬端與伺服器之間設定 TLS 時,需要考慮數個選項。
- 使用自行簽署的資料庫伺服器憑證與由通用已知的憑證授權機構簽署的資料庫伺服器憑證。
- 單向 TLS (TLS) 與雙向或雙向 TLS (mTLS)。
- 有或沒有公事包的從屬端。
自行簽署憑證:使用自行簽署的憑證是內部 IT 資源的常見做法,因為您可以自行建立這些憑證,而且是免費的。資源 (在我們的案例中,資料庫伺服器) 將具有自行簽署的憑證,以向資料庫從屬端進行認證。自我簽署的憑證和根憑證將會儲存在資料庫伺服器公事包中。為了讓資料庫從屬端能夠辨識資料庫伺服器憑證,從屬端上也需要根憑證的複本。此自行建立的根憑證可以儲存在從屬端公事包中,或安裝在從屬端系統預設憑證存放區中 (僅限 Windows 和 Linux)。建立階段作業時,資料庫從屬端會檢查資料庫伺服器所傳送的憑證是否已由相同的根憑證簽署。
已知的憑證授權機構:使用常見的根憑證授權機構有一些優點,即根憑證最有可能已經儲存在用戶端系統預設憑證儲存庫中。如果用戶端是共同根憑證,則沒有儲存根憑證的額外步驟。不利之處在於,這通常具有相關的成本。
單向 TLS :在標準 TLS 階段作業中,只有伺服器會提供憑證給從屬端進行認證。用戶端不需要有個別的用戶端憑證就能向伺服器進行自我驗證 (類似於如何建立 HTTPS 階段作業)。雖然資料庫需要一個公事包來儲存伺服器憑證,但從屬端唯一需要的是用來簽署伺服器憑證的根憑證。
雙向 TLS (也稱為雙向 TLS、mTLS) :在 mTLS 中,從屬端和伺服器都具有彼此呈現的識別憑證。在大多數情況下,相同的根憑證會同時簽署這兩個憑證,因此資料庫伺服器和從屬端可以使用相同的根憑證來認證其他憑證。因為資料庫伺服器透過憑證認證使用者識別,所以有時會使用 mTLS 來認證使用者。這不是傳遞 IAM 權杖的必要項目,但可以在傳遞 IAM 權杖時使用。
使用公事包的從屬端:使用 mTLS 儲存從屬端憑證時,必須要有從屬端公事包。不過,根憑證可以儲存在相同的公事包或系統預設憑證存放區中。
沒有公事包的從屬端:在下列情況下使用 TLS 時,可以設定沒有公事包的從屬端:
- 正在設定單向 TLS,其中從屬端沒有自己的憑證,而且
- 簽署資料庫伺服器憑證的根憑證會儲存在系統預設憑證儲存庫中。如果伺服器憑證是由通用憑證授權機構所簽署,根憑證最有可能已經是該憑證。如果是自行簽署的憑證,則必須將根憑證安裝在系統預設憑證存放區中,以避免使用從屬端公事包。
如需如何設定資料庫從屬端與資料庫伺服器之間的 TLS (包括上述選項) 的詳細資訊,請參閱設定傳輸層安全認證。
如果您選擇使用自行簽署憑證和其他公事包相關作業,請參閱「資料庫安全指南」中的 orapki 命令行介面 (CLI) 參考指南。請參閱管理公用金鑰基礎架構 (PKI) 元素。
變更外部身分識別提供者
本主題描述將外部身分識別提供者從「集中管理的使用者 (CMU)」變更為 OCI IAM 認證與授權的步驟,反之亦然。
預設不會對新佈建的資料庫啟用使用者的 OCI IAM 認證和授權。另一個外部認證選項是將「集中管理的使用者」與 Active Directory (CMU-AD) 搭配使用。在任何指定時間只能啟用一個外部認證配置。
啟用 OCI IAM 認證與授權
請執行下列步驟以啟用 OCI IAM 認證和授權。
-
使用
ALTER SYSTEM命令啟用 OCI IAM 認證和授權。ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=OCI_IAM SCOPE=BOTH; -
驗證
IDENTITY_PROVIDER_TYPE系統參數的值。SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';NAME VALUE ---------------------- ------- identity_provider_type OCI_IAM -
檢查是否已設定
IDENTITY_PROVIDER_CONFIG參數。SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_config'; -
如果已設定
IDENTITY_PROVIDER_CONFIG參數,則重設此參數。ALTER SYSTEM RESET IDENTITY_PROVIDER_CONFIG SCOPE=BOTH;
停用 OCI IAM 認證與授權
請執行下列步驟以停用 OCI IAM 認證和授權。
-
使用
ALTER SYSTEM命令停用 OCI IAM 整合。ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;
啟用 CMU-AD
執行下列步驟,讓 Active Directory (AD) 使用者使用 CMU 連線至資料庫:
- 停用 IAM 整合,如停用 OCI IAM 認證與授權中所述。
- 設定 CMU-AD,如使用 Microsoft Active Directory 設定集中管理的使用者中所述。
停用 CMU-AD
執行下列步驟以停用 CMU-AD:
-
使用
ALTER SYSTEM命令停用 CMU-AD。ALTER SYSTEM SET LDAP_DIRECTORY_ACCESS = 'NONE';
重新啟用 OCI IAM 認證與授權
執行下列步驟以重新啟用 IAM 使用者,以使用 OCI IAM 認證與授權連線至資料庫:
- 停用 CMU-AD,如停用 CMU-AD 中所述。
- 啟用 OCI IAM 認證和授權,如啟用 OCI IAM 認證和授權中所述。
為 IAM 使用者建立 IAM 群組和原則
本主題描述撰寫 IAM 群組原則敘述句的步驟,讓 IAM 使用者能夠存取 OCI 資源 (特別是資料庫執行處理)。
原則是一組敘述句,指定誰可以存取特定資源以及如何存取。可以授予整個租用戶、區間中的資料庫或個別資料庫的存取權。這表示您可以撰寫原則敘述句,讓特定群組可以特定類型存取特定區間內的特定資源。
注意:若要使用 IAM 記號存取資料庫,必須定義原則。使用 IAM 資料庫密碼存取資料庫時,不需要原則。
若要讓資料庫允許 IAM 使用者使用 IAM 權杖連線至資料庫,請執行下列動作:
-
建立群組並將使用者新增至群組,以執行 OCI IAM 先決條件。
例如,建立
sales_dbusers群組。如需詳細資訊,請參閱管理群組。
-
撰寫原則敘述句以啟用對 OCI 資源的存取。
- 在 OCI 主控台中,按一下身分識別與安全性,然後按一下原則。
- 若要寫入原則,請按一下建立原則,然後輸入名稱和描述。
-
使用 Policy Builder 建立原則。
例如,建立允許 IAM 群組
DBUsers中使用者存取其租用戶中任何資料庫的原則:Allow group DBUsers to use database-connections in tenancy例如,建立限制
DBUsers群組成員只能存取testing_compartment區間中資料庫的原則:allow group DBUsers to use database-connections in compartment testing_compartment例如,若要建立原則,限制對區間中單一資料庫的群組存取:
allow group DBUsers to use database-connections in compartment testing_compartment where target.database.id = 'ocid1.database.oc1.iad.aabbcc' -
按一下建立。
如需有關原則的詳細資訊,請參閱管理原則。
備註:
若要在「基準資料庫服務」的資料庫上建立與 IAM 使用者搭配使用的原則,必須符合下列條件。
-
原則可讓 IAM 使用者存取整個租用戶、區間中的資料庫執行處理,或限制對單一資料庫執行處理的存取。
-
您可以使用執行處理主體或資源主體來擷取資料庫記號,以建立從應用程式到資料庫執行處理的連線。如果您使用執行處理主體或資源主體,則必須對應動態群組。因此,您無法只對應執行處理和資源主體;您只能透過共用對應來對應執行處理和資源主體,然後將該執行處理或資源執行處理放在 IAM 動態群組中。
您可以在建立以存取 OCI 的原則中建立動態群組及參照動態群組。
如需詳細資訊,請參閱管理動態群組。
新增 IAM 使用者
若要新增允許存取資料庫的 IAM 使用者,請將資料庫全域使用者對應至 IAM 群組,或使用 CREATE USER 或 ALTER USER 敘述句 (使用 IDENTIFIED GLOBALLY AS 子句) 的使用者。
將資料庫全域使用者 (綱要) 對應至 IAM 使用者 (獨佔對應) 或 IAM 群組 (共用綱要對應),即可將 IAM 使用者授權至資料庫執行處理。
授權資料庫執行處理上的 IAM 使用者:
執行下列步驟以授權資料庫執行處理上的 IAM 使用者。
- 以 ADMIN 使用者身分登入已啟用使用 IAM 的資料庫 (ADMIN 使用者擁有這些步驟所需的必要
CREATE USER和ALTER USER系統權限)。 -
建立資料庫使用者 (綱要) 與
CREATE USER或ALTER USER敘述句之間的對應,並包含IDENTIFIED GLOBALLY AS子句 (指定 IAM 群組名稱)。使用下列語法將全域使用者對應至 IAM 群組:
CREATE USER global_user IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_NAME';例如,若要將名為
db_sales_group的 IAM 群組對應至名為sales_group的共用資料庫全域使用者:CREATE USER sales_group IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=db_sales_group';這會建立共用的全域使用者對應。對映 (全域使用者
sales_group) 對 IAM 群組中的所有使用者有效。因此,db_sales_group中的任何人都可以使用其 IAM 證明資料登入資料庫 (透過sales_group全域使用者的共用對應)。下列範例顯示如何針對非預設網域
sales_domain完成此作業:CREATE USER shared_sales_schema IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=sales_domain/db_sales_group'; - 若要建立其他 IAM 群組或使用者的其他全域使用者對應,請針對每個 IAM 群組或使用者遵循這些步驟。
注意:非 IDENTIFIED GLOBALLY 的資料庫使用者可以像之前一樣繼續登入,即使資料庫已啟用 IAM 認證。
專門將本機 IAM 使用者對應至 Oracle Database 全域使用者:
執行下列步驟,以明確地將本機 IAM 使用者對應至 Oracle Database 全域使用者。
- 以 ADMIN 使用者身分登入已啟用使用 IAM 的資料庫 (ADMIN 使用者擁有這些步驟所需的必要
CREATE USER和ALTER USER系統權限)。 -
建立資料庫使用者 (綱要) 與
CREATE USER或ALTER USER敘述句之間的對應,並包含IDENTIFIED GLOBALLY AS子句,指定 IAM 本機 IAM 使用者名稱。例如,若要建立名為
peter_fitch的新資料庫全域使用者,並將此使用者對應至名為peterfitch的現有本機 IAM 使用者:CREATE USER peter_fitch IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=peterfitch'下列範例顯示如何透過指定非預設網域
sales_domain來建立使用者:CREATE USER peter_fitch2 IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=sales_domain/peterfitch';
新增 IAM 角色
選擇性地建立全域角色,以便在多個 IAM 使用者對應至相同的共用全域使用者時,提供額外的資料庫角色和權限給 IAM 使用者。
對於具有資料庫使用者 (綱要) 獨佔 IAM 對應的 IAM 使用者而言,建立全域角色是選擇性的。當 IAM 對應至共用綱要時,建立全域角色也是選擇性的。例如,可以將所有權限和角色授予共用綱要,而對應至共用綱要的所有 IAM 使用者,都會被授予指派給共用綱要的權限和角色。
使用全域角色可以選擇性地區分使用相同共用綱要的使用者。例如,一組使用者可以擁有相同的共用綱要,而共用綱要則可以有 CREATE SESSION 權限。然後全域角色可以用來提供差異化的權限,以及指派給所有使用相同共用綱要之不同使用者群組的角色。
將資料庫全域角色對應至 IAM 群組,即可將其他角色授予 IAM 使用者。
將資料庫全域角色對應至 IAM 群組:
執行下列步驟,將資料庫全域角色對應至 IAM 群組。
- 以 ADMIN 使用者身分登入已啟用使用 IAM 的資料庫 (ADMIN 使用者擁有這些步驟所需的必要
CREATE USER和ALTER USER系統權限)。 -
使用
CREATE ROLE或ALTER ROLE敘述句設定資料庫角色的資料庫授權,並包括指定 IAM 群組名稱的IDENTIFIED GLOBALLY AS子句。使用下列語法將全域角色對應至 IAM 群組:
CREATE ROLE global_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_of_WHICH_the_IAM_USER_IS_a_MEMBER';例如,若要將名為
ExporterGroup的 IAM 群組對應至名為export_role的共用資料庫全域角色:CREATE ROLE export_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=ExporterGroup';下列範例顯示如何透過指定非預設網域
sales_domain來建立角色:CREATE ROLE export_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=sales_domain/ExporterGroup';sales_domain網域中ExporterGroup的所有成員在登入資料庫時,都會以資料庫全域角色export_role授權。 -
您可以使用
GRANT敘述句,將必要的權限或其他角色授與全域角色。GRANT CREATE SESSION TO export_role; GRANT DWROLE TO export_role; -
若要讓現有的資料庫角色與 IAM 群組關聯,請使用
ALTER ROLE敘述句更改現有的資料庫角色,將角色對應至 IAM 群組。請使用下列語法更改現有的資料庫角色,將其對應至 IAM 群組:ALTER ROLE existing_database_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_Group_Name';
若要為其他 IAM 群組新增其他全域角色對應,請依照上述每個 IAM 群組的步驟進行。
建立 IAM 使用者的 IAM 資料庫密碼
若要新增 IAM 使用者並允許 IAM 使用者透過提供使用者名稱和密碼來登入資料庫,您必須建立 IAM 資料庫密碼。IAM 使用者名稱和 IAM 資料庫密碼有兩種使用方式之一。
- IAM 使用者可以在存取資料庫時輸入 IAM 使用者名稱和 IAM 資料庫密碼。依照預設,資料庫從屬端會遵循資料庫的一般密碼認證機制,而資料庫會從 IAM 擷取 IAM 資料庫密碼驗證程式。
- 您可以設定讓資料庫從屬端使用 IAM 使用者名稱和 IAM 資料庫密碼取得 IAM 資料庫權杖。資料庫從屬端會將此資料庫權杖傳送至資料庫以供使用者存取。
如需有關使用 IAM 使用者名稱和 IAM 資料庫密碼取得 IAM 資料庫權杖的詳細資訊,請參閱設定 Oracle DBaaS 的 IAM 。
如需有關 IAM 資料庫密碼的詳細資訊,請參閱管理使用者證明資料中的使用 IAM 資料庫使用者名稱和密碼。
以 IAM 認證連線資料庫
資料庫 ADMIN 使用者將全域使用者和全域角色對應至 IAM 使用者和 IAM 群組之後,使用者需使用其 OCI IAM 證明資料登入資料庫執行處理,或透過 OCI IAM 資料庫權杖存取資料庫。
您仍然可以使用本機資料庫帳戶使用者名稱和密碼 (非全域資料庫使用者帳戶) 登入資料庫。
您可以使用資料庫從屬端,以 OCI IAM 使用者身分存取資料庫執行處理。若要使用具備 OCI IAM 使用者名稱和密碼證明資料以及密碼驗證程式的從屬端,資料庫從屬端必須是 12c 或更新的版本。
IAM 資料庫權杖用量需為 Oracle Database 從屬端 19.16 和更新版本 (不是 21c)。部分 Oracle Database 從屬端 21.5 和更新版本提供有限 (非完整) 的 IAM 資料庫權杖功能。
注意:如果您的資料庫執行處理處於「限制模式」,則只有具備 RESTRICTED SESSION 權限 (例如 ADMIN) 的使用者才能連線至資料庫。
關於使用 IAM 連線至資料庫執行處理
IAM 使用者可以使用 IAM 資料庫密碼驗證程式或 IAM 權杖來連線至資料庫執行處理。
使用 IAM 資料庫密碼驗證程式與資料庫密碼驗證處理作業類似。不過,驗證程式會改為儲存在 OCI IAM 使用者設定檔中,而不是儲存在資料庫中的密碼驗證程式 (密碼的加密雜湊)。
第二個連線方法會針對資料庫使用 IAM 記號。使用權杖型存取權較適用於基礎資料庫服務中的 Oracle 資料庫等雲端資源。權杖是以 IAM 端點可強制實行的強度為基礎。這可以是多重因素認證,比只使用密碼還要強。使用記號的另一個優點是,密碼驗證程式 (被視為機密) 一律不會儲存在記憶體中或儲存在記憶體中。使用權杖進行資料庫存取時,需要 TCPS (TLS) 連線。
注意:傳遞 IAM 權杖時,您無法設定原生網路加密。僅支援「傳輸層安全 (TLS)」,不支援使用 TLS 進行原生網路加密或原生網路加密。
使用 IAM 資料庫密碼驗證程式的從屬端連線
設定 IAM 使用者所需的授權之後,此使用者就可以使用現有的從屬端應用程式 (例如 SQL*Plus 或 SQLcl) 登入,而不需要進行其他組態設定。
IAM 使用者使用任何目前支援的資料庫從屬端,輸入 IAM 使用者名稱和 IAM 資料庫密碼 (不是 OCI 主控台密碼)。唯一的限制條件是資料庫從屬端版本為 Oracle Database 版本 12.1.0.2 或更新版本,以使用 Oracle Database 12c 密碼。資料庫從屬端必須能夠使用 12c 密碼驗證程式。IAM 不支援使用 11g 驗證器加密。IAM 使用者不需要特殊從屬端或工具組態,即可連線至資料庫。
資料庫從屬端也可以使用 IAM 使用者名稱和 IAM 資料庫密碼,直接向 IAM 要求記號。如需有關設定從屬端以取得記號的詳細資訊,請參閱使用 IAM 使用者名稱和資料庫密碼要求之記號的從屬端連線。
使用記號的從屬端連線
若要讓 IAM 權杖存取資料庫,從屬端應用程式或工具會向 IAM 使用者要求資料庫權杖。
從屬端應用程式會透過資料庫從屬端 API 將資料庫權杖直接傳送給資料庫從屬端。
如果尚未更新應用程式或工具來要求 IAM 權杖,則 IAM 使用者可以使用 OCI CLI 來要求和儲存資料庫權杖。您可以使用下列證明資料要求資料庫存取記號 (db-token):
- 安全記號 (使用 IAM 認證)、委派記號 (在 OCI 雲端 Shell 中) 和
API-keys,這是代表啟用認證之 IAM 使用者的證明資料。 - IAM 使用者名稱和 IAM 資料庫密碼,資料庫從屬端可以在設定時,直接擷取 IAM 資料庫權杖。
- 執行處理主要項目記號,可讓執行處理成為授權動作者 (或主要項目) 在認證後對服務資源執行動作。
- 資源主體權杖,此證明資料可讓應用程式向其他 OCI 服務進行本身認證。
- 使用 IAM 使用者名稱和 IAM 資料庫密碼 (資料庫從屬端只能要求此密碼)。
當 IAM 使用者以斜線 / 登入並設定 OCI_IAM 參數 (sqlnet.ora、tnsnames.ora 或作為連線字串的一部分) 登入從屬端時,資料庫從屬端便會從檔案擷取資料庫記號。如果 IAM 使用者送出使用者名稱和密碼,連線將會使用針對使用 IAM 資料庫密碼驗證程式之從屬端連線所描述的 IAM 資料庫驗證程式存取權,除非資料庫從屬端設定為使用 IAM 使用者名稱和 IAM 資料庫密碼從 IAM 擷取資料庫權杖。本主題中的指示顯示如何使用 OCI CLI 作為資料庫權杖的協助程式。如果應用程式或工具已更新為使用 IAM,請遵循應用程式或工具的指示。部分常見使用案例包括:SQL Plus 內部部署、SQLcl 內部部署、Cloud Shell 中的 SQL Plus 或使用 SEP 公事包的應用程式。
下列主題說明如何:
設定使用 IAM 資料庫密碼之 SQL*Plus 的從屬端連線
您可以設定 SQL*Plus 使用 IAM 資料庫密碼。
以 IAM 使用者身分,使用下列語法登入資料庫:
CONNECT user_name@db_connect_string
Enter password: password
在此規格中,user_name 是 IAM 使用者名稱。合併的 domain_name/user_name 有 128 個位元組的限制。
下列範例顯示 IAM 使用者 peter_fitch 如何登入資料庫執行處理。
sqlplus /nolog
connect peter_fitch@db_connect_string
Enter password: password
某些特殊字元需要在 user_name 和 password 前後加上雙引號。舉例而言:
"peter_fitch@example.com"@db_connect_string
"IAM database password"
設定使用 IAM 權杖之 SQL*Plus 的從屬端連線
執行下列步驟,為使用 IAM 權杖的 SQL*Plus 設定從屬端連線。
- 請確定您有 IAM 使用者帳戶。
- 請洽詢 IAM 管理員和資料庫管理員,確定您有一個可讓您存取區間或租用戶中資料庫的原則,且已將您對應至資料庫中的全域綱要。
- 如果您的應用程式或工具不支援直接 IAM 整合,請下載、安裝及設定 OCI CLI。如需有關安裝和設定 OCI CLI 的詳細資訊,請參閱快速入門。
-
在 OCI CLI 組態中設定 API 金鑰,並選取預設值。
- 設定 IAM 使用者的 API 金鑰存取權。
-
擷取
db-token。舉例而言:-
使用 OCI CLI 擷取含有
API-key的db-token:oci iam db-token get -
擷取具有安全性 (或階段作業) 權杖的
db-token:oci iam db-token get --auth security_token如果安全權杖已過期,將會顯示一個視窗,讓使用者能夠再次登入 OCI。這會產生使用者的安全權杖。OCI CLI 將使用此重新整理的權杖取得
db-token。 -
使用委派記號擷取
db-token:當您登入 Cloud Shell 時,委派記號會自動產生並放置在/etc目錄中。若要取得此權杖,請在 OCI CLI 中執行下列命令:oci iam db-token get -
使用 OCI CLI 擷取執行處理權杖:
oci iam db-token get --auth instance_principal
-
如需詳細資訊,請參閱必要的金鑰和 OCID 。
-
此組態僅適用於 Oracle Database 19c 從屬端。請確定您正在使用此用戶端的最新發行版本更新。
注意:Oracle Database 從屬端版本 21c 提供有限的 IAM 權杖功能。
-
依照現有的處理作業從資料庫下載公事包,然後依照指示設定公事包以搭配 SQL*Plus 使用。
- 透過在
sqlnet.ora中尋找SSL_SERVER_DN_MATCH=ON來確認已啟用 DN 比對。 - 將
TOKEN_AUTH=OCI_TOKEN新增至sqlnet.ora檔案,將資料庫從屬端設定為使用 IAM 記號。因為您將使用資料庫記號檔案的預設位置,所以您不需要包括記號位置。
tnsnames.ora連線字串中的TOKEN_AUTH和TOKEN_LOCATION值優先於該連線的sqlnet.ora設定值。例如,針對連線字串,假設記號位於預設位置 (~/.oci/db-token代表 Linux):(description= (retry_count=20)(retry_delay=3) (address=(protocol=tcps)(port=1522) (host=example.us-phoenix-1.oraclecloud.com)) (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com)) (security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com, OU=Oracle BMCS US, O=Example Corporation, L=Redwood City, ST=California, C=US") (TOKEN_AUTH=OCI_TOKEN))) - 透過在
以 TOKEN_AUTH 參數更新連線字串之後,IAM 使用者可以執行下列命令來啟動 SQL*Plus,以登入資料庫執行處理。您可以包括連線描述區本身,或使用 tnsnames.ora 檔案的描述區名稱。
connect /@exampledb_high
或:
connect /@(description=
(retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1522)
(host=example.us-phoenix-1.oraclecloud.com))
(connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
(security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com,
OU=Oracle BMCS US, O=Example Corporation,
L=Redwood City, ST=California, C=US")
(TOKEN_AUTH=OCI_TOKEN)))
資料庫從屬端已經設定為取得 db-token,因為已經透過 sqlnet.ora 檔案或連線字串設定 TOKEN_AUTH。資料庫從屬端會取得 db-token 並使用私密金鑰簽署,然後將記號傳送給資料庫。如果指定 IAM 使用者名稱和 IAM 資料庫密碼而非斜線 /,除非指定其他參數,否則資料庫從屬端將會使用密碼而非使用 db-token 來連線:PASSWORD_AUTH = OCI_TOKEN。這會指示資料庫從屬端使用 IAM 使用者名稱和 IAM 資料庫密碼,從 IAM 取得權杖。除了設定 PASSWORD_AUTH, 之外,您還需要設定 OCI_IAM_URL、OCI_TENANCY 以及選擇性的 OCI_COMPARTMENT 和 OCI_DATABASE。
使用執行處理主體存取具有 IAM 認證的資料庫
在 ADMIN 使用者啟用資料庫上的 OCI IAM 之後,應用程式便可使用執行處理主體透過 OCI IAM 資料庫權杖存取資料庫。
如需詳細資訊,請參閱使用執行處理主體存取 Oracle Cloud Infrastructure API 。
設定代理主機認證
代理主機認證可讓 IAM 使用者代理主機至資料庫綱要,以進行應用程式維護等工作。
代理主機認證通常用來認證真實使用者,然後授權他們使用具有綱要權限和角色的資料庫綱要來管理應用程式。共用應用程式綱要密碼等替代方法被視為不安全,無法稽核實際的使用者執行動作。
使用案例可在應用程式資料庫管理員的具名 IAM 使用者使用其證明資料進行認證,然後代理資料庫綱要使用者 (例如 hrapp) 進行認證的環境中。此認證可讓 IAM 管理員以 hrapp 使用者身分使用 hrapp 權限和角色來執行應用程式維護,但仍可使用其 IAM 證明資料進行認證。應用程式資料庫管理員可以登入資料庫,然後代理應用程式綱要來管理此綱要。
您可以設定密碼認證和權杖認證方法的代理主機認證。
設定 IAM 使用者的代理主機認證
若要設定 IAM 使用者的代理主機認證,IAM 使用者必須已經有全域綱要 (專用或共用對應) 的對應。IAM 使用者要代理的個別資料庫綱要也必須可供使用。
確定您擁有此類型的使用者之後,請更改資料庫使用者,讓 IAM 使用者代理該使用者。
- 以具有
ALTER USER系統權限的使用者身分登入資料庫執行處理。 -
授予 IAM 使用者代理本機資料庫使用者帳戶的權限。IAM 使用者無法在命令中參照,因此必須在資料庫全域使用者 (對應至 IAM 使用者) 與目標資料庫使用者之間建立代理主機。在下列範例中,
hrapp是要代理的資料庫綱要,而peterfitch_schema是資料庫全域使用者,專門對應至使用者peterfitch。ALTER USER hrapp GRANT CONNECT THROUGH peterfitch_schema;
在此階段,IAM 使用者可以使用代理主機登入資料庫執行處理。舉例而言:
若要使用密碼驗證程式連線,請執行下列動作:
CONNECT peterfitch[hrapp]@connect_string
Enter password: password
使用記號連線:
CONNECT [hrapp]/@connect_string
驗證 IAM 使用者代理主機認證
您可以驗證密碼和權杖認證方法的 IAM 使用者代理主機組態。
- 以具有
CREATE USER和ALTER USER系統權限的使用者身分登入資料庫執行處理。 -
在 IAM 使用者連線,然後執行
SHOW USER和SELECT SYS_CONTEXT命令。例如,假設當 IAM 使用者peterfitch代理資料庫使用者hrapp時,您要檢查其代理主機認證。您將需要使用此處顯示的不同認證方法類型來連線資料庫,但是您執行的命令輸出會與所有類型相同的。-
若為密碼認證,假設 IAM 使用者位於預設網域中:
CONNECT peterfitch[hrapp]/password!@connect_string SHOW USER; --The output should be USER is "HRAPP" SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL; --The output should be "PASSWORD_GLOBAL_PROXY" SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL; --The output should be "PETERFITCH_SCHEMA" SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL; --The output should be "HRAPP" -
對於權杖認證,對於位於非預設網域的使用者,
sales_domain:CONNECT [hrapp]/@connect_string SHOW USER; --The output should be USER is "HRAPP " SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL; --The output should be "TOKEN_GLOBAL_PROXY" SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL; --The output should be "PETERFITCH_SCHEMA" SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL; --The output should be "HRAPP"
-
使用資料庫連結搭配 IAM 認證的使用者
您可以使用資料庫連結,以 OCI IAM 使用者身分從一個資料庫執行處理連線至另一個資料庫執行處理。
您可以使用連線的使用者或固定使用者資料庫連結,以 OCI IAM 使用者身分連線至資料庫。
注意: 目前的使用者資料庫連結不支援以 OCI IAM 使用者身分連線至 Base Database Service 中的資料庫。
- 連線的使用者資料庫連結:如果是連線的使用者資料庫連結,IAM 使用者必須對應至資料庫連結所連線之來源和目標資料庫中的綱要。您可以使用資料庫密碼驗證程式或 IAM 資料庫記號來使用連線的使用者資料庫連結。
- 固定使用者資料庫連結:您可以使用資料庫使用者或 IAM 使用者來建立固定使用者資料庫連結。當使用 IAM 使用者作為固定使用者資料庫連結時,IAM 使用者必須在目標資料庫中擁有綱要對應。資料庫連結的 IAM 使用者只能使用密碼驗證程式設定。
停用 IAM 認證
您可以使用 ALTER SYSTEM 命令停用資料庫執行處理的 IAM 使用者存取,如下所示:
ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;
如果您也想要從資源更新對 IAM 的存取,您可能需要移除或修改 IAM 群組,以及您設定為允許從這些資源存取 IAM 的原則。