認證並授權 Autonomous Database 的 Microsoft Azure Active Directory 使用者

您可以為 Microsoft Azure AD 使用者設定 Oracle Autonomous Database on Dedicated Exadata Infrastructure 執行處理,以使用 Azure OAuth2 存取權杖進行連線。

關於將 Oracle Autonomous Database on Dedicated Exadata Infrastructure 與 Microsoft Azure AD 整合

您可以將 Oracle Autonomous 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 和更新版本
  • Oracle Autonomous Database on Shared Exadata Infrastructure
  • Oracle Autonomous Database on Dedicated Exadata Infrastructure
  • Oracle Base Database Service
  • Oracle Exadata Cloud Service (Oracle ExaCS)

設定 Azure AD 的指示使用 "Oracle Database" 一詞來涵蓋這些環境。

此類型的整合可讓 Azure AD 使用者存取 Oracle Autonomous Database on Dedicated Exadata Infrastructure 執行處理。Azure AD 使用者和應用程式可以使用 Azure AD 單一登入 (SSO) 證明資料登入,以取得要傳送至資料庫的 Azure AD OAuth2 存取權杖。

Azure AD 管理員可使用 Azure AD 建立並註冊 Oracle Autonomous Database on Dedicated Exadata Infrastructure 。在 Azure AD 中,這稱為應用程式註冊,這對於應用程式註冊來說很短。這是 Azure AD 對於使用 Azure AD 的軟體必須瞭解的數位資訊。Azure AD 管理員也會為在 Azure AD 中註冊資料庫 App 建立應用程式 (應用程式) 角色。App 角色會將 Azure 使用者、群組和應用程式連線至資料庫綱要和角色。Azure AD 管理員可將 Azure AD 使用者、群組或應用程式指派給應用程式角色。這些 App 角色會對應至資料庫全域綱要或全域角色,或同時對應至綱要和角色。指派給 App 角色的 Azure AD 使用者、群組或應用程式將會對應至資料庫全域綱要、全域角色,或同時對應至綱要和角色。Oracle 全域綱要也可以單獨對應至 Azure AD 使用者。Azure AD 來賓使用者 (非組織使用者) 或 Azure AD 服務主體 (應用程式) 只能透過 Azure AD App 角色對應至資料庫全域綱要。Oracle 全域角色只能從 Azure App 角色對應,而且無法從 Azure 使用者對應。

Oracle Autonomous Database on Dedicated Exadata Infrastructure 工具 (包括 Oracle APEX、Database Actions、Oracle Graph Studio 及 Oracle Database API for MongoDB) 與使用 Azure AD 權杖連線至資料庫不相容。

更新以支援 Azure AD 權杖的工具和應用程式可以直接使用 Azure AD 認證使用者,並將資料庫存取權杖傳送至 Oracle Autonomous Database on Dedicated Exadata Infrastructure 執行處理。您可以將現有的資料庫工具 (例如 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 證明資料。

Oracle Autonomous Database on Dedicated Exadata Infrastructure 接受代表下列 Azure AD 主體的記號:

  • Azure AD 使用者,此使用者已在 Azure AD 租用戶中註冊
  • 在 Azure AD 租用戶中註冊為來賓使用者的來賓使用者
  • 服務:這是以從屬端證明資料流程 (連線集區使用案例) 身分連線至資料庫的已註冊應用程式

Oracle Autonomous Database on Dedicated Exadata Infrastructure 支援下列 Azure AD 認證流程:

  • 授權碼,最常用於人工使用者 (非應用程式) 使用瀏覽器在從屬端環境中認證 Azure AD
  • 從屬端證明資料,適用於以本身 (而非一般使用者) 身分連線的資料庫應用程式
  • On-Behalf-Of (OBO),應用程式會代表登入的使用者要求存取權杖以傳送至資料庫
  • 不建議在生產環境使用資源擁有者密碼證明資料 (ROPC),但可用於難以合併即現式瀏覽器使用者認證的測試環境。ROPC 需要 Azure AD 使用者名稱和密碼證明資料,才能成為權杖要求呼叫的一部分。

Microsoft Azure AD 整合與 Autonomous Database 的架構

Microsoft Azure Active Directory 記號遵循 OAuth2 標準搭配副檔名。使用 Azure AD 權杖存取 Oracle 資料庫的方式與使用 OCI IAM 權杖類似。如需詳細說明,請參閱 Security Guide 中的 Architecture of the Microsoft Azure AD Integration with an Oracle Database

Azure AD 使用者與 Autonomous Database 的對應

Microsoft Azure 使用者必須對應至 Autonomous Database 綱要,並具有必要權限 (透過角色),才能認證至 Autonomous Database 執行處理。請參閱 Security Guide 中的 Azure AD Users Mapping to the Oracle Database ,瞭解在 Microsoft Azure 中對應使用者、群組和應用程式的不同方式的相關資訊。

使用 Azure AD 連線至 Autonomous Database 的使用案例

Oracle Database 支援三種使用案例,可使用 Microsoft Azure Active Directory 連線至 Autonomous Database 執行處理。請參閱使用 Azure AD 連線至 Oracle Database 的使用案例以瞭解詳細資訊。

使用 Oracle Autonomous Database on Dedicated Exadata Infrastructure 認證 Microsoft Azure AD 識別的一般流程

Oracle Database 管理員和 Microsoft Azure AD 管理員扮演角色,允許 Azure AD 使用者使用 Azure AD OAuth2 存取權杖連線至資料庫。

一般程序如下:

  1. Oracle Database 管理員可確保 Oracle Database 環境符合 Microsoft Azure AD 整合的需求。請參閱 Oracle Database Requirements for the Microsoft Azure AD Integration
  2. Azure AD 管理員會為資料庫建立 Azure AD 應用程式註冊,而 Oracle Database 管理員則可讓資料庫使用 Azure AD 權杖來存取資料庫。

    在應用程式註冊過程中,Azure AD 管理員會建立 Azure 應用程式角色,用於 Azure 使用者、群組和應用程式與 Oracle Database 綱要和角色之間的對應。

  3. Oracle Database 管理員建立全域綱要並將其對應至 Azure AD 使用者 (專屬綱要對應) 或 Azure App 角色 (共用綱要對應)。Azure AD 使用者或應用程式必須對應至一個綱要。
  4. Oracle 管理員可以選擇性地建立全域 Oracle Database 角色並將其對應至 Azure App 角色。
  5. 想要與 Oracle Autonomous Database on Dedicated Exadata Infrastructure 執行處理連線的 Azure AD 一般使用者,會將用戶端應用程式登錄為 Azure AD 用戶端 (類似於 Oracle 資料庫註冊方式)。

    除非應用程式從屬端是公用,否則 Azure AD 從屬端將會有從屬端識別和從屬端加密密碼。如果應用程式從屬端是公用,則只需要應用程式從屬端識別。

  6. Azure AD 一般使用者 (可以是資料庫管理員) 使用公用程式 (例如 PowerShell) 或 Azure 命令行介面) 連線,以擷取 OAuth2 資料庫存取記號並將其儲存在本機檔案目錄中。應用程式也可以直接從 Azure AD 要求 Azure AD OAuth2 存取權杖,並透過資料庫從屬端 API 傳送。如需傳送 Azure AD OAuth2 記號的相關資訊,請參閱下列 Oracle Database 用戶端文件:
  7. 連線至 Oracle Autonomous Database on Dedicated Exadata Infrastructure 執行處理之後,Azure AD 一般使用者會視需要執行資料庫作業。

Autonomous Database 上啟用 Azure AD 認證

Azure AD 管理員與 Autonomous Database 管理員執行步驟,在 Autonomous Database 上設定 Azure AD 認證。

必備條件

Oracle Autonomous Database on Dedicated Exadata Infrastructure 的 Microsoft Azure AD 整合需要:
  1. Autonomous Database 版本 19.18 或更新版本。

  2. TLS 連接埠 2484 上的資料庫連線。不支援非 TLS 連線。

  3. Azure AD 的輸出網路連線,讓資料庫可以要求 Azure AD 公開金鑰。

  4. 要在 Azure AD 註冊的 Autonomous Database

  5. 對於 Exadata Cloud@Customer 部署,您環境中的 HTTP 代理主機設定值必須允許資料庫使用 Azure AD。

    這些設定值是由機組管理員在建立 Exadata Cloud@Customer 基礎架構時定義的,如使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務中所述。

    附註:

    必須等到 Exadata 基礎架構為需要啟用狀態後,才能編輯網路組態 (包括 HTTP 代理主機)。啟用之後,您就無法編輯這些設定值。

    在 My Oracle Support 中設定已啟動設定之 Exadata 基礎架構的 HTTP 代理主機時,必須要有服務要求 (SR)。請參閱 在 My Oracle Support 中建立服務要求瞭解詳細資訊。

程序

導入下列任務以設定您的 Autonomous Database 以進行 Microsoft Azure AD 整合。

  1. 在 Microsoft Azure AD 租用戶註冊 Autonomous Database 執行處理:具備 Azure AD 管理員權限的使用者使用 Microsoft Azure AD 在 Microsoft Azure AD 租用戶註冊 Oracle Database 執行處理。請參閱 Security Guide 中的 Register the Oracle Autonomous Database Instance with a Microsoft Azure AD Tenancy

  2. 啟用 Microsoft Azure AD v2 存取記號:如果您的組織使用 Microsoft Azure AD v2 存取記號 (而非 v1 記號),則您可能需要在 Azure AD 中進行其他變更,以支援記號中的 upn: 宣告。請參閱安全指南中的啟用 Microsoft Azure AD v2 存取權杖檢查 Azure AD 存取權杖版本

  3. 管理 Microsoft Azure AD 中的 App 角色:在 Azure AD 中,您可以建立及管理將指派給 Azure AD 使用者和群組,以及對應至 Oracle Database 全域綱要和角色的應用程式角色。請參閱 Security Guide 中的 Manage App Roles in Microsoft Azure AD

  4. 使用 NAT 閘道設定 Microsoft Azure AD 的輸出連線:

    請依照 Oracle Cloud Infrastructure 文件建立 NAT 閘道的指示,在 Autonomous Database 資源所在的虛擬雲端網路 (VCN) 中建立 NAT 閘道。

    建立 NAT 閘道之後,請在 Autonomous Database 資源所在的每個子網路新增路由規則和傳出安全規則 (在 VCN 中),以便這些資源能夠使用此閘道從您的 Azure AD 執行處理取得公開金鑰:

    1. 移至子網路的子網路詳細資訊頁面。

    2. 子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。

    3. 在現有路由規則的表格中,檢查是否已有具有下列特性的規則:

      • 目標:0.0.0.0/0
      • 目標類型:NAT 閘道
      • 目標:剛在 VCN 中建立的 NAT 閘道名稱

      如果沒有這類規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。

    4. 返回子網路的子網路詳細資訊頁面。

    5. 在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。

    6. 在側邊功能表的資源下,按一下傳出規則

    7. 在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:

      • 目標類型: CIDR
      • 目的地:0.0.0.0/0
      • IP 協定: TCP
      • 來源連接埠範圍: 443
      • 目的地連接埠範圍:全部

      如果該規則不存在,請按一下新增輸出規則,然後新增具有這些特性的輸出規則。

  5. 測試 Entra ID 端點的輔助功能

    請依照 Security GuideTesting the Accessibility of the Azure Endpoint 中所述的步驟,確定您的 Oracle Database 執行處理可以存取 Entra ID 端點。

    如果資料庫無法與 Microsoft Entra ID 端點連線,即使在您設定 ACL 原則之後,請檢查上述的先決條件,確認您已根據先決條件正確設定網路。如果問題持續存在,請複查您的網路,確定資料庫執行處理可以連線至 MS Entra ID 端點。

  6. 將 Azure AD 設定為 Autonomous Database 的外部身分識別提供者:

    依照預設,Autonomous Database 和 Autonomous Container Databases 設定為使用 Oracle Cloud Infrastructure (IAM) 認證和授權來連線使用者。應用程式 DBA 也可以將此變更為其他外部認證配置,例如具有 Active Directory (CMU-AD) 或 Kerberos 的集中管理使用者。不過,Autonomous Database 一次只能啟用一個外部認證配置。

    若要啟用 Azure AD 作為 Autonomous Database 執行處理的外部身分識別提供者,請執行下列操作:

    1. 以具備 DBMS_CLOUD_ADMIN PL/SQL 套裝程式 EXECUTE 權限的使用者身分登入 Autonomous Database 執行處理。ADMIN 使用者具有此權限。
    2. 由於一個 Autonomous Database 在任何指定時間只能啟用一個外部認證配置,因此請執行 DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION 程序來停用任何已為資料庫啟用的外部認證配置。
      若要執行此程序,您必須以 ADMIN 使用者身分登入,或具備 DBMS_CLOUD_ADMINEXECUTE 權限。
      BEGIN
          DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
      END;
      /
    3. 使用 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 Active Directory 應用程式註冊總覽窗格上的 Azure 入口網站取得必要的 Azure AD 參數值。Azure AD 的必要 params 為:
        • tenant_id:Azure 帳戶的用戶 ID。租用戶 ID 指定 Autonomous Database 執行處理的 Azure AD 應用程式註冊。
        • application_id:在 Azure AD 中建立的 Azure 應用程式 ID,用於指派 Autonomous Database 執行處理中外部認證的角色 / 綱要對應。
        • application_id_uri:指派給 Azure 應用程式的唯一 URI。

          這是 Autonomous Database 執行處理的 ID。名稱必須是符合資格的網域 (這支援跨租用戶資源存取)。

          此參數的長度上限為 256 個字元。

      • force:如果已為 Autonomous Database 執行處理設定另一個 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 程序

對應 Oracle Database 綱要和角色

Azure AD 使用者將會對應至一個資料庫綱要,並選擇性地對應至一或多個資料庫角色。

您可以使用下列選項將 Oracle 資料庫綱要和角色對應至 Microsoft Azure AD 使用者:

設定 Azure AD 的從屬端連線

您可以使用 Azure AD 權杖設定從屬端與 Oracle Autonomous Database on Dedicated Exadata Infrastructure 執行處理連線的方式有很多。

您應該選擇最適合您環境的用戶端連線方法。本指南提供使用取得 Azure AD OAuth2 存取記號之不同方法來連線 SQL*Plus 的範例。所有 Oracle Database 版本 19c 從屬端都可以接受以檔案方式傳送的記號。JDBC 精簡型、即時用戶端和 ODP.net 驅動程式也可透過應用程式的資料庫用戶端 API 接受記號。Oracle Database 工具 (例如 SQL*Plus) 無法直接擷取記號,因此必須使用 PowerShell 或 Azure CLI 等工具來擷取 Azure AD OAuth2 存取記號。若要擷取 Azure AD 權杖,必須透過 Azure AD 應用程式註冊處理作業註冊從屬端。註冊用戶端類似於使用應用程式註冊在 Azure AD 上向 Oracle Autonomous Database on Dedicated Exadata Infrastructure 伺服器註冊。資料庫和用戶端都必須向 Azure AD 註冊。

必須註冊資料庫,才能讓從屬端取得取得取得資料庫存取權杖的權限。必須註冊從屬端,Azure AD 才能辨識信任的從屬端要求存取記號。

附註:

在用戶端上,您必須在 sqlnet.ora 檔案中設定 TOKEN_AUTHTOKEN_LOCATION 參數,以從位置擷取 Azure AD 資料庫存取記號,並在使用 / 斜線登入時使用它。設定 SQL*Plus for Azure AD 存取記號中會討論精確的詳細資訊。

請參閱下列 Microsoft Azure 文章,瞭解有關將從屬端連線至 Azure AD 的詳細資訊:

PowerShell 中 SQL*Plus 從屬端連線到 Autonomous Database 的作業流程

Azure 使用者、Azure AD 和 Autonomous Database 執行個體之間的連線依賴在這些元件中傳遞 OAuth2 權杖。

請參閱 Security Guide 中的 Operational Flow for SQL*Plus Client Connection in PowerShell to Oracle Database ,瞭解在公用從屬端使用「資源擁有者密碼證明資料 (ROPC)」流程的範例。

在 Azure AD 應用程式註冊從屬端

此類型的註冊類似於在 Azure AD 應用程式註冊中註冊 Autonomous Database 。請參閱下列段落以瞭解詳細資訊:

擷取 Azure AD OAuth2 權杖的範例

如需顯示擷取 Azure AD OAuth2 權杖之不同方式的範例,請參閱安全指南中的擷取 Azure AD OAuth2 權杖的範例

設定 SQL*Plus for Azure AD 存取權杖

您必須設定讓 SQL*Plus 從位置擷取 Azure AD 資料庫存取記號,並在使用 / 斜線登入時使用它。如需詳細指示,請參閱 Security Guide 中的 Configuring SQL*Plus for Azure AD Access Tokens

Microsoft Entra ID 連線疑難排解

您可以使用追蹤檔來診斷 Microsoft Entra ID 連線的問題。您也可以輕鬆修復 ORA-12599ORA-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 mismatchORA-03114: not connected to ORACLE 錯誤代表您嘗試連線的資料庫受到原生網路加密的保護。

    使用記號存取 Oracle 資料庫時,必須建立「傳輸層安全 (TLS)」連線,而非網路原生加密。若要修正這些錯誤,請確定資料庫已正確設定 TLS。您應該使用本機資料庫使用者名稱和密碼來測試組態,並檢查下列 SYSCONTEXT USERENV 參數:

    • NETWORK_PROTOCOL
    • TLS_VERSION
  • 您可以使用 JSON Web Token 網站檢查您網站使用的 Microsoft Azure AD 存取權杖版本。請參閱 Database Security Guide 中的 Checking the Azure AD Access Token Version ,以取得相關指引。