使用 Kerberos 認證自治式 AI 資料庫使用者

您可以將專用 Exadata 基礎架構上的自治式 AI 資料庫設定為使用 Kerberos 網路認證協定來認證資料庫使用者。Kerberos 是強式網路認證協定。它使用私密金鑰加密,以提供使用者對伺服器的認證方式啟用強式認證。

  • Kerberos 的專用 Exadata 基礎架構上的自治式 AI 資料庫支援為 Oracle 使用者提供單一登入和集中式認證的優點。Kerberos 是信任的第三方認證系統,依賴共用密碼。它假定第三方是安全的,並且提供單一登入功能、集中式密碼儲存、資料庫連結認證和增強的 PC 安全。它會透過 Kerberos 認證伺服器來進行。

  • Kerberos 系統圍繞著票證的概念發展。票證是一組可識別使用者或服務的電子資訊。票證會識別您和您的網路存取權限。

  • 在以 Kerberos 為基礎的認證中,您會將票證要求通透地傳送至 Key Distribution Center (KDC)。Key Distribution Center 會驗證您,並授予您存取資料庫的票證。

Kerberos 認證系統的元件

提供 Kerberos 認證系統的簡介。

  • 範圍會建立認證管理網域。每個範圍都有自己的 Kerberos 資料庫,其中包含該特定管理網域的使用者和服務。

  • 票證由 Key Distribution Center (KDC) 發出。用戶端向資料庫伺服器出示票證,以展示其身份的真實性。每個票券都有到期和更新時間。

  • Keytabs 會儲存一或多個主要項目的長期關鍵碼。keytab 檔案是透過呼叫工具 kadmin.local (適用於 MIT Key Distribution Center) 或 ktpass (適用於 Active Directory Key Distribution Center) 來產生。

  • 主參與者是 Key Distribution Center 資料庫中的項目。每個使用者、主機或服務都會指定一個主體。主要項目是金鑰分配中心可指定回報項目的唯一識別。

  • Autonomous AI Database 中的 Kerberos 支援會針對構成服務主要項目名稱的各種元件使用這些值:

服務主要項目的元件 Autonomous AI Database 的價值
kinstance

您可以從 V$PDBSCLOUD_IDENTITY 資料欄中的屬性 PUBLIC_DOMAIN_NAME 取得此值。這個值與專用端點上資料庫的完整網域名稱 (FQDN) 不同。

使用下列查詢取得 kinstance

SELECT json_value(cloud_identity, '$.PUBLIC_DOMAIN_NAME') "KINSTANCE" FROM v$pdbs;

附註:

這將會是 TNS 連線字串中找到之 host 參數的值。
kservice

Autonomous AI Database 上,您有兩個 kservice 值選項:

  • 使用資料庫 GUID:如果您未提供含有 DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION 的 Kerberos 服務名稱,則使用的預設服務名稱是 Autonomous AI Database 執行處理的 GUID。在此情況下,當您建立 keytab 檔案時,請使用 GUID 作為服務名稱的值。

    由於在預設情況下,Keytab 檔案使用的服務名稱是 GUID (實例特定),因此當您使用預設服務名稱時,您必須為每個 Autonomous AI Database 實例產生不同的 Keytab 檔案。

    使用下列命令取得 GUID (大小寫很重要):

    SELECT GUID FROM v$pdbs;
  • 使用自訂名稱:若要在多個 Autonomous AI Database 執行處理上使用相同的 Keytab 檔案,請設定服務名稱。使用自訂名稱時,您不需要為每個 Autonomous AI Database 實例建立和上傳不同的 Keytab 檔案。使用自訂名稱時,您必須將 params kerberos_service_name 參數指定為 DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION 。當您使用服務名稱的 GUID 時,不需要指定此參數。

在您的 Autonomous AI Database 執行處理上啟用 Kerberos 之後,請使用下列查詢來檢視 Kerberos 服務名稱:

SELECT SYS_CONTEXT('USERENV', 'KERBEROS_SERVICE_NAME') FROM DUAL;
REALM KDC 支援的任何範圍。REALM 必須一律為大寫。

若要為您的 Autonomous AI Database 啟用 Kerberos 認證,您必須備妥 Kerberos 組態檔 (krb.conf) 和服務金鑰表檔案 (v5srvtab)。如需有關這些檔案和取得這些檔案之步驟的詳細資訊,請參閱設定 Kerberos 認證

Autonomous AI Database 上的 Kerberos 認證注意事項

專用 Exadata 基礎架構上的自治式 AI 資料庫上繼續進行 Kerberos 認證之前,請複查下列注意事項:

  • 如果您為 Autonomous AI Database 啟用 Kerberos 認證,您仍然可以對資料庫使用密碼型資料庫認證。
  • 您隨時只能對 Autonomous AI Database 使用一種外部驗證方法。也就是說,您只能隨時啟用 Oracle Cloud Infrastructure (IAM)、具備 Active Directory (CMU-AD)、Azure AD 或 Kerberos 認證配置的集中管理使用者。

    附註:

    唯一的例外是,您可以在 CMU-AD 上設定 Kerberos 認證,為 Microsoft Active Directory 使用者提供 CMU-AD Kerberos 認證。
  • 下列工具不支援 Kerberos 認證:
    • Oracle Database API for MongoDB
    • Oracle REST Data Services
    • Oracle Machine Learning
    • APEX
    • Oracle Graph 工作室
    • Oracle Database Actions
  • 您可以啟用 Kerberos 認證來認證 ADMIN 使用者。您可以使用 Oracle Cloud Infrastructure (OCI) 主控台的「重設密碼」功能來重設 ADMIN 使用者的密碼,如果損毀的 keytab 檔案導致 ADMIN 使用者的認證失敗,請重新取得存取權。
  • Autonomous AI Database 版本 19.27 或更新版本的 TCP 通訊協定支援 Kerberos 認證。
  • DB_LINKs 和具備 Autonomous Data Guard 的資料庫不支援 Kerberos 認證。

Autonomous AI Database 上啟用 Kerberos 認證

請依照下列步驟,在專用 Exadata 基礎架構上啟用 Autonomous AI Database 的 Kerberos 認證:
  • 由於在任何指定時間只能對自治式 AI 資料庫啟用一個外部驗證配置,因此請執行 DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION 程序來停用任何已為您的資料庫啟用的外部驗證配置。

    若要執行此程序,您必須以 ADMIN 使用者身分登入,或具備 DBMS_CLOUD_ADMINEXECUTE 權限。
    BEGIN
        DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
    END;
    /
  • 取得 Kerberos 配置檔案:krb.conf 和服務金鑰表檔案 v5srvtab。如需有關這些檔案的詳細資訊及取得這些檔案所需的步驟,請參閱 Oracle Database 19c Security GuideOracle Database 26ai Security Guide 中的 Configuring Kerberos Authentication

  • 將 Kerberos 組態檔 krb.confv5srvtab 複製到您物件存放區中的儲存桶。

    附註:

    Oracle 建議您將 Kerberos 組態檔儲存在您物件存放區的專用儲存桶中。

    如果您使用 Oracle Cloud Infrastructure Object Store,請參閱將資料放入物件儲存,瞭解上傳檔案的詳細資訊。

  • 若要啟用 Kerberos 作為自治式 AI 資料庫外部認證,請執行 DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION 程序,然後使用 params JSON 引數傳入位置 URI。您必須將組態檔 krb.confv5srvtab 放置在 location_uri 參數中指定的物件儲存位置。

    舉例而言:
    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
            type     => 'KERBEROS',
            params   => JSON_OBJECT('location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
                                   'credential_name' value 'my_credential_name')
        );
    END;
    /

    附註:

    若要為 Microsoft Active Directory 使用者提供 CMU-AD Kerberos 認證,您可以在上述範例中將 type 設為 CMU,在 CMU-AD 之上啟用 Kerberos 認證。

    在此範例中,namespace-stringOracle Cloud Infrastructure 物件儲存命名空間,bucketname 是儲存桶名稱。如需詳細資訊,請參閱瞭解 Object Storage 命名空間

    您在此步驟中使用的 credential_name 是「物件存放區」的證明資料。

    如果 location_uri 是預先認證的 URL,則不需要提供 credential_name

    這會在您的資料庫中建立一個名為 KERBEROS_DIR 的目錄物件,並使用證明資料將 Kerberos 組態檔從「物件存放區」位置下載至目錄物件。

    您可以使用 kerberos_service_name 參數來指定 Kerberos 服務名稱。舉例而言:
    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
       type     =>'KERBEROS',
       params   => JSON_OBJECT(
       'location_uri'          value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
       'credential_name'       value 'my_credential_name'
       'kerberos_service_name' value 'oracle' ));
    END;
    /
  • 啟用 Kerberos 認證之後,請移除物件存放區中的組態 krb.confv5srvtab。您可以使用本機「物件存放區」方法來移除這些檔案,或使用 DBMS_CLOUD.DELETE_OBJECT 從「物件存放區」刪除檔案。

如需有關物件儲存的詳細資訊,請參閱瀏覽至 Oracle Cloud Infrastructure Object Storage and Create Bucket

如需詳細資訊,請參閱ENABLE_EXTERNAL_AUTHENTICATION 程序

Autonomous AI Database 上停用 Kerberos 認證

在您的資料庫上啟用任何其他外部認證配置之前,您必須先停用執行 DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION 程序的 Kerberos 認證。

若要執行此程序,您必須以 ADMIN 使用者身分登入,或具備 DBMS_CLOUD_ADMINEXECUTE 權限。
BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/
如需詳細資訊,請參閱DISABLE_EXTERNAL_AUTHENTICATION 程序

附註:

若要為 Microsoft Active Directory 使用者提供 CMU-AD Kerberos 認證,您必須繼續設定 CMU-AD 認證而不停用 Kerberos 認證。