在基準資料庫服務使用識別與存取管理認證
您可以在基準資料庫服務中設定 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 與 Base Database Service 的整合支援資料庫密碼驗證程式認證和權杖型驗證。如需在基準資料庫服務上使用 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 主控台密碼不同。Using an IAM user with a password verifier you can login to the database with any supported database client as long as the database client supports Oracle Database 12c password verifiers.
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 Cloud 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 的詳細資訊,請參閱設定傳輸層安全認證。
如果您選擇使用自行簽署憑證,以及其他公事包相關作業,請參閱「資料庫安全指南」中的 orapki
命令行介面 (CLI) 參考指南。請參閱 Managing Public Key Infrastructure (PKI) Elements 。
變更外部身分識別提供者
本主題描述將外部身分識別提供者從集中管理使用者 (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 認證與授權中所述。
- 按照使用 Microsoft Active Directory 設定集中管理的使用者中的說明設定 CMU-AD。
停用 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 群組或使用者執行這些步驟。
附註:
即使資料庫已啟用 IAM 認證,但非IDENTIFIED GLOBALLY
的資料庫使用者仍可繼續登入。
獨佔地將本機 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
敘述句設定資料庫角色的資料庫授權,並包含IDENTIFIED GLOBALLY AS
子句,指定 IAM 群組名稱。請使用下列語法將全域角色對應至 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 資料庫記號的詳細資訊,請參閱設定 IAM for Oracle DBaaS 。
如需有關 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 Cloud 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
- 使用 OCI CLI 擷取含有
如需詳細資訊,請參閱必要的金鑰和 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
設定值。例如,針對連線字串,假設記號位於預設位置 (Linux 的~/.oci/db-token
):(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 。
設定 Proxy 認證
代理主機認證可讓 IAM 使用者代理主機至資料庫綱要,以進行應用程式維護等作業。
代理主機認證通常用來認證真實使用者,然後授權他們使用具有綱要權限和角色的資料庫綱要來管理應用程式。共用應用程式綱要密碼之類的替代方法被視為不安全,因此無法稽核哪些實際使用者執行動作。
使用案例可以位於指定 IAM 使用者 (身為應用程式資料庫管理員) 可以使用其證明資料認證,然後代理給資料庫綱要使用者 (例如 hrapp
) 的環境中。此認證可讓 IAM 管理員使用 hrapp
權限和角色作為使用者 hrapp
,以執行應用程式維護,但仍使用他們的 IAM 證明資料進行認證。應用程式資料庫管理員可以登入資料庫,然後代理應用程式綱要來管理此綱要。
您可以設定密碼認證和記號認證方法的代理主機認證。
設定 IAM 使用者的代理主機認證
若要設定 IAM 使用者的代理主機認證,IAM 使用者必須已經對應至全域綱要 (獨佔或共用對應)。IAM 使用者要代理主機的個別資料庫綱要也必須可供使用。
在您確定具有此類型的使用者之後,請更改資料庫使用者,讓 IAM 使用者代理主機。
- 以具有
ALTER USER
系統權限的使用者身分登入資料庫執行處理。 - 將 IAM 使用者代理主機的權限授予本機資料庫使用者帳戶。無法在命令中參照 IAM 使用者,因此必須在資料庫全域使用者 (對應至 IAM 使用者) 和目標資料庫之間建立代理主機 user.In 下列範例:
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 使用者位於預設網域:
使用資料庫連結搭配 IAM 認證的使用者
您可以使用資料庫連結,以 OCI IAM 使用者身分從一個資料庫執行處理連線至另一個資料庫執行處理。
您可以使用連線的使用者或固定使用者資料庫連結,以 OCI IAM 使用者身分連線至資料庫。
附註:
以 OCI IAM 使用者身分連線至基準資料庫服務中的資料庫時,不支援目前的使用者資料庫連結。-
連線的使用者資料庫連結:對於連線的使用者資料庫連結,IAM 使用者必須同時對應至資料庫連結所連線之來源和目標資料庫中的綱要。您可以使用資料庫密碼驗證程式或 IAM 資料庫記號,使用連線的使用者資料庫連結。
-
固定使用者資料庫連結:您可以使用資料庫使用者或 IAM 使用者建立固定的使用者資料庫連結。使用 IAM 使用者作為固定使用者資料庫連結時,IAM 使用者必須在目標資料庫中具有綱要對應。資料庫連結的 IAM 使用者只能設定密碼驗證程式。