認證及授權自治式 AI 資料庫適用的 Microsoft Azure Active Directory 使用者
您可以在專用 Exadata Infrastructure 執行處理上設定 Oracle Autonomous AI Database,讓 Microsoft Azure AD 使用者使用 Azure OAuth2 存取權杖進行連線。
關於將專用 Exadata 基礎架構上的 Oracle Autonomous AI Database 與 Microsoft Azure AD 整合
您可以設定 Oracle Autonomous AI Database on Dedicated Exadata Infrastructure 和 Microsoft Azure AD,讓使用者和應用程式使用其 Azure AD 證明資料連線至資料庫。
Azure AD 使用者和應用程式可以使用 Azure AD 單一登入 (SSO) 證明資料登入,以存取資料庫。這是使用 Azure AD OAuth2 存取權杖來完成,使用者或應用程式會先從 Azure AD 要求。此 OAuth2 存取權杖包含使用者識別和資料庫存取資訊,然後傳送至資料庫。請參閱 Microsoft 文章 Azure Active Directory 的無密碼認證選項,瞭解有關設定多重因素和無密碼認證的資訊。
您可以在下列 Oracle Database 環境中執行此整合:
-
內部部署 Oracle Database 版本 19.18 和更新版本
-
共用 Exadata 基礎架構上的 Oracle Autonomous AI Database
-
專用 Exadata 基礎架構上的 Oracle Autonomous AI Database
-
Oracle Base Database Service
-
Oracle Exadata Cloud Service (Oracle ExaCS)
設定 Azure AD 的指示使用「Oracle Database」一詞來涵蓋這些環境。
此類型的整合可讓 Azure AD 使用者存取 Oracle Autonomous AI Database on Dedicated Exadata Infrastructure 執行處理。Azure AD 使用者和應用程式可以使用 Azure AD 單一登入 (SSO) 證明資料登入,以取得要傳送至資料庫的 Azure AD OAuth2 存取權杖。
Azure AD 管理員使用 Azure AD 在專用 Exadata 基礎架構上建立並註冊 Oracle Autonomous AI Database。在 Azure AD 中,這稱為應用程式註冊,這對於應用程式註冊而言很短。這是 Azure AD 對於使用 Azure AD 的軟體必須知道的數位資訊。Azure AD 管理員還會為 Azure AD 中的資料庫應用程式註冊建立應用程式 (應用程式) 角色。應用程式角色可將 Azure 使用者、群組和應用程式連線至資料庫綱要和角色。Azure AD 管理員會將 Azure AD 使用者、群組或應用程式指派給應用程式角色。這些 App 角色會對應至資料庫全域綱要或全域角色,或同時對應至綱要和角色。指派給應用程式角色的 Azure AD 使用者、群組或應用程式會對應至資料庫全域綱要、全域角色,或同時對應至綱要和角色。Oracle 全域綱要也可以單獨對應至 Azure AD 使用者。Azure AD 來賓使用者 (非組織使用者) 或 Azure AD 服務主體 (應用程式) 只能透過 Azure AD 應用程式角色對應至資料庫全域綱要。Oracle 全域角色只能從 Azure App 角色對應,無法從 Azure 使用者對應。
Oracle Autonomous AI Database on Dedicated Exadata Infrastructure 工具 (包括 Oracle APEX、Database Actions、Oracle Graph Studio 和 Oracle Database API for MongoDB) 與使用 Azure AD 權杖與資料庫連線不相容。
為了支援 Azure AD 權杖而更新的工具和應用程式,可以直接使用 Azure AD 認證使用者,並將資料庫存取權杖傳送至專用 Exadata 基礎架構執行處理上的 Oracle Autonomous AI Database。您可以將現有資料庫工具 (例如 SQL*Plus) 設定為使用來自檔案位置的 Azure AD 記號。在這些情況下,可以使用 Microsoft PowerShell 或 Azure CLI 等工具擷取 Azure AD 權杖,然後放入檔案位置。Azure AD OAuth2 資料庫存取記號會以到期時間發出。Oracle Database 從屬端驅動程式會確保記號為有效的格式,且記號尚未過期,再傳送到資料庫。資料庫的權杖作用領域,這表示權杖將用於該資料庫的權杖相關資訊。Azure AD 主要項目在資料庫 Azure AD 應用程式註冊中指定給應用程式角色,會包含在存取權杖中。Azure AD 權杖的目錄位置應該只有足夠的權限,讓使用者能夠將權杖檔案寫入位置,以及讓資料庫從屬端擷取這些檔案 (例如由使用者讀取和寫入)。因為記號允許存取資料庫,所以它應該在檔案系統中受到保護。
Azure AD 使用者可以使用多種方法向 Azure AD 要求權杖,以開啟 Azure 登入視窗來輸入其 Azure AD 證明資料。
專用 Exadata 基礎架構上的 Oracle Autonomous AI Database 接受代表下列 Azure AD 主要項目的權杖:
-
已在 Azure AD 租用戶中註冊使用者的 Azure AD 使用者
-
在 Azure AD 租用戶中註冊為來賓使用者的來賓使用者
-
服務是指使用從屬端證明資料流程 (連線集區使用案例) 連線至資料庫的已註冊應用程式
專用 Exadata 基礎架構上的 Oracle Autonomous AI Database 支援下列 Azure AD 認證流程:
-
授權碼,最常用於人工使用者 (非應用程式) 使用瀏覽器在從屬端環境中向 Azure AD 進行認證
-
從屬端證明資料,用於以本身 (而非一般使用者) 連線的資料庫應用程式
-
應用程式代表登入使用者要求存取權杖以傳送至資料庫的半年 (OBO)
-
不建議在生產環境使用資源擁有者密碼證明資料 (ROPC),但可用於難以合併即現式瀏覽器使用者認證的測試環境。ROPC 需要 Azure AD 使用者名稱和密碼證明資料,才能成為權杖要求呼叫的一部分。
Microsoft Azure AD 與 Autonomous AI 資料庫整合的架構
Microsoft Azure Active Directory 記號遵循 OAuth2 標準的副檔名。使用 Azure AD 權杖存取 Oracle 資料庫類似於使用 OCI IAM 權杖。如需詳細說明,請參閱安全指南中的Microsoft Azure AD Integration with an Oracle Database 的架構。
Azure AD 使用者與自治式 AI 資料庫的對應
Microsoft Azure 使用者必須對應至自治式 AI 資料庫綱要,並具備必要權限 (透過角色),才能認證自治式 AI 資料庫執行處理。請參閱安全指南中的 Azure AD Users Mapping to the Oracle Database ,瞭解 Microsoft Azure 中對應使用者、群組和應用程式的不同方法相關資訊。
使用 Azure AD 連線至自治式 AI 資料庫的案例
Oracle Database 支援三種使用案例,可使用 Microsoft Azure Active Directory 連線至 Autonomous AI Database 執行處理。如需詳細資訊,請參閱使用 Azure AD 連線至 Oracle Database 的使用案例。
在專用 Exadata 基礎架構上使用 Oracle Autonomous AI Database 認證 Microsoft Azure AD 身分的一般程序
Oracle Database 管理員和 Microsoft Azure AD 管理員扮演角色,允許 Azure AD 使用者使用 Azure AD OAuth2 存取權杖連線至資料庫。
一般程序如下:
-
Oracle Database 管理員可確保 Oracle Database 環境符合 Microsoft Azure AD 整合的需求。請參閱 Oracle Database Requirements for the Microsoft Azure AD Integration 。
-
Azure AD 管理員會為資料庫建立 Azure AD 應用程式註冊,而 Oracle Database 管理員則可讓資料庫使用 Azure AD 權杖進行資料庫存取。
在應用程式註冊過程中,Azure AD 管理員會建立 Azure 應用程式角色,以用於 Azure 使用者、群組和應用程式與 Oracle Database 綱要和角色之間的對應。
-
Oracle Database 管理員會建立全域綱要並將其對應至 Azure AD 使用者 (不含綱要對應) 或 Azure 應用程式角色 (共用綱要對應)。Azure AD 使用者或應用程式必須對應至一個綱要。
-
Oracle 管理員可以選擇性地建立全域 Oracle Database 角色並將其對應至 Azure App 角色。
-
想要與專用 Exadata 基礎架構執行處理上的 Oracle Autonomous AI Database 連線的 Azure AD 一般使用者,會將從屬端應用程式註冊為 Azure AD 從屬端 (類似於 Oracle 資料庫的註冊方式)。
除非應用程式從屬端是公用,否則 Azure AD 從屬端將會有從屬端識別和從屬端加密密碼。如果應用程式從屬端是公用,則只需要應用程式從屬端識別。
-
Azure AD 一般使用者 (可以是資料庫管理員) 會使用 PowerShell 或 Azure 命令行介面等公用程式連線,以擷取
OAuth2資料庫存取記號並將其儲存在本機檔案目錄中。應用程式也可以直接從 Azure AD 要求 Azure ADOAuth2存取權杖,然後透過資料庫從屬端 API 傳送。如需傳送 Azure ADOAuth2權杖的相關資訊,請參閱下列 Oracle Database 從屬端文件:-
JDBC 精簡型用戶端:Oracle AI Database JDBC Developer's Guide
-
Oracle Call Interface (OCI) :Oracle Call Interface Developer's Guide
-
Oracle Data Provider for .NET (ODP):Oracle Data Provider for .NET Developer's Guide 連線至 Oracle Database
-
-
連線至專用 Exadata 基礎架構上的 Oracle Autonomous AI Database 執行處理之後,Azure AD 一般使用者會視需要執行資料庫作業。
在自治式 AI 資料庫上啟用 Azure AD 認證
Azure AD 管理員和自治式 AI 資料庫管理員會執行在自治式 AI 資料庫上設定 Azure AD 認證的步驟。
必備條件
Microsoft Azure AD 與 Oracle Autonomous AI Database on Dedicated Exadata Infrastructure 的整合需要:
-
要 19.18 版或更高版本的自治式 AI 資料庫。
-
在 TLS 連接埠 2484 上連線至資料庫。不支援非 TLS 連線。
-
Azure AD 的外送網路連線,讓資料庫可以要求 Azure AD 公用金鑰。
-
要在 Azure AD 註冊的自治式 AI 資料庫。
-
對於 Exadata Cloud@Customer 部署,您環境中的 HTTP 代理主機設定值必須允許資料庫使用 Azure AD。
這些設定值是由您的機組管理員在建立 Exadata Cloud@Customer 基礎架構時所定義,如使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務中所述。
注意:只有在 Exadata 基礎架構處於需要啟用狀態時,才能編輯包含 HTTP 代理主機的網路組態。啟用之後,就無法編輯這些設定值。
若為已經佈建的 Exadata 基礎架構設定 HTTP 代理主機,在 My Oracle Support 中需要服務要求 (SR)。請參閱 在 My Oracle Support 中建立服務要求以瞭解詳細資訊。
程序
導入以下任務以設定適用於 Microsoft Azure AD 的 Autonomous AI 資料庫整合。
-
在 Microsoft Azure AD 租用戶註冊自治式 AI 資料庫執行處理:具備 Azure AD 管理員權限的使用者會使用 Microsoft Azure AD,在 Microsoft Azure AD 租用戶註冊 Oracle Database 執行處理。請參閱安全指南中的使用 Microsoft Azure AD 租用戶註冊 Oracle Autonomous AI Database 執行處理。
-
啟用 Microsoft Azure AD v2 存取權杖:如果您的組織使用 Microsoft Azure AD v2 存取權杖 (而非 v1 權杖),則可能需要在 Azure AD 中進行額外變更,以支援權杖中的
upn:宣告。請參閱啟用 Microsoft Azure AD v2 存取權杖和安全指南中的檢查 Azure AD 存取權杖版本。 -
管理 Microsoft Azure AD 中的應用程式角色:在 Azure AD 中,您可以建立及管理將指派給 Azure AD 使用者和群組,以及對應至 Oracle Database 全域綱要和角色的應用程式角色。請參閱安全指南中的管理 Microsoft Azure AD 中的應用程式角色。
-
使用 NAT 閘道設定與 Microsoft Azure AD 的輸出連線:
請依照 Oracle Cloud Infrastructure 文件中 Create a NAT Gateway 的指示,在您自治式 AI 資料庫資源所在的虛擬雲端網路 (VCN) 中建立 NAT 閘道。
建立 NAT 閘道之後,請在自治式 AI 資料庫資源所在的每個子網路 (VCN 中) 新增路由規則和輸出安全規則,讓這些資源能夠使用閘道從您的 Azure AD 執行處理取得公開金鑰:
-
移至子網路的子網路詳細資訊頁面。
-
在子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。
-
在現有路由規則的表格中,檢查是否已有具有下列特性的規則:
-
目的地:0.0.0.0/0
-
目標類型:NAT 閘道
-
目標:您剛剛在 VCN 中建立的 NAT 閘道名稱
如果沒有這樣的規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。
-
-
返回子網路的子網路詳細資訊頁面。
-
在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。
-
在側邊功能表的資源底下,按一下傳出規則。
-
在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:
-
目的地類型: CIDR
-
目的地:0.0.0.0/0
-
IP 協定: TCP
-
來源連接埠範圍:443
-
目的地連接埠範圍:全部
如果沒有這類規則,請按一下新增傳出規則,然後新增含有這些特性的傳出規則。
-
-
-
測試 Entra ID 端點的輔助功能
請依照安全指南中測試 Azure 端點的輔助功能所述的步驟,確定您的 Oracle Database 執行處理可以存取 Entra ID 端點。
如果資料庫無法與 Microsoft Entra ID 端點連線,即使在您設定 ACL 原則之後,請檢查上述先決條件,確認已依照先決條件正確設定網路。如果問題持續存在,請複查您的網路,確定資料庫執行處理可以連線至 MS Entra ID 端點。
-
將 Azure AD 設定為自治式 AI 資料庫的外部身分識別提供者:
依照預設,自治式 AI 資料庫和自治式容器資料庫會設定為使用 Oracle Cloud Infrastructure (IAM) 認證和授權連線使用者。應用程式 DBA 也可以將此變更為其他的外部認證配置,例如使用 Active Directory 的集中管理使用者 (CMU-AD) 或 Kerberos。不過,自治式 AI 資料庫一次只能啟用一個外部認證配置。
若要在自治式 AI 資料庫執行處理上啟用 Azure AD 作為外部身分識別提供者,請執行下列操作:
-
以具備
DBMS_CLOUD_ADMINPL/SQL 套裝程式之EXECUTE權限的使用者身分登入自治式 AI 資料庫執行處理。ADMIN 使用者具有此權限。 -
由於任何指定時間內都只能對自治式 AI 資料庫啟用一個外部認證配置,因此請執行
DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION程序來停用資料庫已啟用的任何外部認證配置。若要執行程序,您必須以 ADMIN 使用者身分登入,或具備
DBMS_CLOUD_ADMIN的EXECUTE權限。BEGIN DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION; END; / -
使用 Azure AD 必要參數執行
DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION程序。BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION( type =>'AZURE_AD', params => JSON_OBJECT('tenant_id' VALUE 'tenant_id', 'application_id' VALUE 'application_id', 'application_id_uri' VALUE 'application_id_uri'), force => TRUE ); END;在此程序中,Azure AD 參數為:
-
type:指定外部驗證提供者。如圖所示,若為 Azure AD,請使用'AZURE_AD'。 -
params:必要 Azure AD 參數的值可從 Azure Active Directory 的應用程式註冊總覽窗格上的 Azure 入口網站取得。Azure AD 的必要params為:-
tenant_id:Azure 帳戶的租用戶 ID。租用戶 ID 指定自治式 AI 資料庫執行處理的 Azure AD 應用程式註冊。 -
application_id:在 Azure AD 中建立的 Azure 應用程式 ID,用於在 Autonomous AI Database 執行處理中指定外部認證的角色 / 綱要對應。 -
application_id_uri:指派給 Azure 應用程式的唯一 URI。這是自治式 AI 資料庫執行處理的 ID。名稱必須是符合網域資格的網域 (這支援跨租用戶資源存取)。
此參數的長度上限為 256 個字元。
-
-
force:如果已為「自治式 AI 資料庫」執行處理設定另一個EXTERNAL AUTHENTICATION方法且要停用該方法,請將此參數設為TRUE。
舉例而言:
BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION( type =>'AZURE_AD', params => JSON_OBJECT('tenant_id' VALUE '29981886-6fb3-44e3-82', 'application_id' VALUE '11aa1a11-aaa', 'application_id_uri' VALUE 'https://example.com/111aa1aa'), force => TRUE ); END;這會設定
IDENTITY_PROVIDER_TYPE系統參數。例如,您可以使用下列項目來驗證
IDENTITY_PROVIDER_TYPE:SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';NAME VALUE ---------------------- -------- identity_provider_type AZURE_AD -
請參閱 ENABLE_EXTERNAL_AUTHENTICATION Procedure 以瞭解詳細資訊。
-
對應 Oracle Database 綱要和角色
Azure AD 使用者將會對應至一個資料庫綱要,並選擇性地對應至一或多個資料庫角色。
您有下列選項可將 Oracle 資料庫綱要和角色對應至 Microsoft Azure AD 使用者:
-
將 Oracle Database 綱要具體對應至 Microsoft Azure AD 使用者:請參閱安全指南中的專用對應 Oracle Database 綱要至 Microsoft Azure AD 使用者。
-
將共用的 Oracle 綱要對應至應用程式角色:請參閱安全指南中的將共用的 Oracle 綱要對應至應用程式角色。
-
將 Oracle Database 全域角色對應至應用程式角色:請參閱安全指南中的將 Oracle Database 全域角色對應至應用程式角色。
設定 Azure AD 的從屬端連線
您可以使用多種方式設定從屬端,以使用 Azure AD 權杖與專用 Exadata 基礎架構執行處理上的 Oracle Autonomous AI Database 連線。
您應該選擇最適合您環境的從屬端連線方法。本指南提供使用不同取得 Azure AD OAuth2 存取記號方法連線 SQL*Plus 的範例。所有 Oracle Database 版本 19c 從屬端都可以接受以檔案形式傳送的記號。JDBC-thin、Instant Client 以及 ODP.net 驅動程式也接受來自應用程式之資料庫從屬端 API 的記號。Oracle Database 工具 (例如 SQL*Plus) 無法直接擷取記號,因此必須使用 PowerShell 或 Azure CLI 等工具來擷取 Azure AD OAuth2 存取記號。若要擷取 Azure AD 權杖,必須透過 Azure AD 應用程式註冊處理作業註冊從屬端。註冊從屬端類似於使用應用程式註冊在 Azure AD 的專用 Exadata 基礎架構伺服器上註冊 Oracle Autonomous AI Database。資料庫和從屬端都必須向 Azure AD 註冊。
必須註冊資料庫,才能讓從屬端取得取得資料庫存取權杖的權限。必須註冊從屬端,Azure AD 才能辨識受信任的從屬端要求存取記號。
注意:在從屬端上,您必須在 sqlnet.ora 檔案中設定 TOKEN_AUTH 和 TOKEN_LOCATION 參數,才能從位置擷取 Azure AD 資料庫存取記號,並在使用 / 斜線登入時使用它。設定 SQL*Plus for Azure AD Access Tokens 中會討論確切的詳細資訊。
請參閱下列 Microsoft Azure 文章,瞭解有關將從屬端連線至 Azure AD 的詳細資訊:
PowerShell 與自治式 AI 資料庫中 SQL*Plus 從屬端連線的作業流程
Azure 使用者、Azure AD 和 Autonomous AI Database 執行處理之間的連線依賴在這些元件中傳遞 OAuth2 記號。
Refer to [Operational Flow for SQLPlus Client Connection in PowerShell to Oracle Database](/pls/topic/lookup?ctx=en/cloud/paas/autonomous-database/dedicated/adbaa&id=DBSEG-GUID-455CDC87-C5A1-4A58-801A-29D216CB66B5) in *Security Guide for an example that shows the use of the Resource Owner Password Credential (ROPC) flow with a public client.
在 Azure AD 應用程式註冊註冊從屬端
此類型的註冊類似於向 Azure AD 應用程式註冊 Autonomous AI Database。如需詳細資訊,請參考下列章節:
-
根據您的使用案例,向 Azure 註冊資料庫從屬端為機密或公用:機密和公用從屬端註冊
-
向 Azure AD 註冊資料庫從屬端 App:向 Azure AD 註冊資料庫從屬端 App
擷取 Azure AD OAuth2 權杖的範例
如需顯示不同擷取 Azure AD OAuth2 記號方式的範例,請參閱 Security Guide 中的 Examples of Retrieving Azure AD OAuth2 Tokens 。
設定 Azure AD 存取權杖的 SQL*Plus
您必須設定 SQL*Plus 從位置擷取 Azure AD 資料庫存取權杖,並在使用 / 斜線登入時使用它。如需詳細指示,請參閱「安全指南」中的 Configuring SQL*Plus for Azure AD Access Tokens 。
疑難排解 Microsoft Entra ID 連線
您可以使用追蹤檔來診斷 Microsoft Entra ID 連線的問題。您也可以輕鬆修復 ORA-12599 和 ORA-03114 錯誤。
-
您可以使用追蹤檔對 Oracle Database 與 Microsoft Azure AD 的整合進行疑難排解。如需相關指引,請參閱 Database Security Guide 中的 Trace Files for Troubleshooting Oracle Database Client Connections with Azure AD 。
-
ORA-12599: TNS: cryptographic checksum mismatch和ORA-03114: not connected to ORACLE錯誤表示您嘗試連線的資料庫受到原生網路加密的保護。當使用記號存取 Oracle 資料庫時,必須建立「傳輸層安全 (TLS)」連線,而非網路原生加密。若要修正這些錯誤,請確定您的資料庫已正確設定 TLS。您應該使用本機資料庫使用者名稱和密碼測試組態,並檢查下列
SYSCONTEXT USERENV參數:-
NETWORK_PROTOCOL -
TLS_VERSION
-
-
您可以使用 JSON Web 權杖網站檢查網站所使用的 Microsoft Azure AD 存取權杖版本。如需相關指引,請參閱資料庫安全指南中的檢查 Azure AD Access Token 版本。