Kerberosを使用したAutonomous Databaseユーザーの認証

Kerberosネットワーク認証プロトコルを使用してデータベース・ユーザーを認証するように、専用Exadataインフラストラクチャ上のAutonomous Databaseを構成できます。 Kerberosは、強力なネットワーク認証プロトコルです。秘密キー暗号化を使用して、ユーザーからサーバーへの認証を提供することで強力な認証を有効にします。

  • Autonomous Database on Dedicated Exadata InfrastructureはKerberosをサポートし、Oracleユーザーにシングル・サインオンおよび集中化された認証の利点を提供します。Kerberosは、共有秘密を使用するサード・パーティの認証システムです。Kerberosは、サード・パーティがセキュアであることを保障し、シングル・サインオン機能、集中化されたパスワード・ストレージ、データベース・リンク認証、拡張されたPCセキュリティを提供します。Kerberosは、Kerberos認証サーバーを使用して認証を行います。

  • Kerberosシステムは、チケットの概念を中心に動作します。チケットは、ユーザーやサービスを特定する一連の電子情報です。チケットは、ユーザーとユーザーのネットワーク・アクセス権を識別します。

  • Kerberosベースの認証では、チケットのリクエストをキー配布センター(KDC)に透過的に送信します。キー配布センターによって認証され、データベースにアクセスするためのチケットが付与されます。

Kerberos認証システムのコンポーネント

Kerberos 認証システムの概要について説明します。

  • レルムは認証管理ドメインを確立します。各レルムには、その特定の管理ドメインのユーザーおよびサービスを含む独自のKerberosデータベースがあります。

  • チケットは、キー配布センター(KDC)によって発行されます。クライアントは、IDの信頼性を実証するためにデータベース・サーバーにチケットを提示します。各チケットには有効期限と更新時間があります。

  • keytabには、1つ以上のプリンシパルの長期キーが格納されます。keytabファイルは、ツールkadmin.local (MITキー配布センターの場合)またはktpass (Active Directoryキー配布センターの場合)を呼び出すことによって生成されます。

  • プリンシパルは、キー配布センター・データベースのエントリです。各ユーザー、ホスト、またはサービスにプリンシパルが与えられます。プリンシパルは、キー配布センターがチケットを割り当てることができる一意のIDです。

  • Autonomous DatabaseでのKerberosサポートでは、サービス・プリンシパルの名前を構成する様々なコンポーネントに次の値が使用されます:

サービス・プリンシパルのコンポーネント Autonomous 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 Databaseでは、kservice値に2つのオプションがあります:

  • データベースGUIDの使用: DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATIONでKerberosサービス名を指定しない場合、使用されるデフォルトのサービス名はAutonomous DatabaseインスタンスのGUIDです。この場合、キータブ・ファイルを作成するときに、サービス名の値としてGUIDを使用します。

    デフォルトの場合、Keytabファイルはインスタンス固有のGUIDであるサービス名を使用するため、デフォルトのサービス名を使用する場合は、Autonomous Databaseインスタンスごとに異なるKeytabファイルを生成する必要があります。

    次のコマンドを使用して、GUIDを取得します(大/小文字は重要です)。

    SELECT GUID FROM v$pdbs;
  • カスタム名の使用: 複数のAutonomous Databaseインスタンスで同じキータブ・ファイルを使用する場合、サービス名を設定します。カスタム名を使用する場合、Autonomous Databaseインスタンスごとに異なるキータブ・ファイルを作成してアップロードする必要はありません。カスタム名を使用する場合は、params kerberos_service_nameパラメータをDBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATIONで指定する必要があります。サービス名にGUIDを使用する場合は、このパラメータを指定する必要はありません。

Autonomous DatabaseインスタンスでKerberosを有効にした後、次の問合せを使用してKerberosサービス名を表示します:

SELECT SYS_CONTEXT('USERENV', 'KERBEROS_SERVICE_NAME') FROM DUAL;
REALM KDCでサポートされている任意のレルム。REALMは常に大文字にする必要があります。

Autonomous DatabaseでKerberos認証を有効にするには、Kerberos構成ファイル(krb.conf)およびサービス・キー表ファイル(v5srvtab)を準備しておく必要があります。これらのファイルおよびそれらを取得するステップの詳細は、Kerberos認証の構成に関する項を参照してください。

Autonomous DatabaseでのKerberos認証に関するノート

専用Exadataインフラストラクチャ上のAutonomous DatabaseでKerberos認証を続行する前に、次のノートを確認してください:

  • Autonomous DatabaseでKerberos認証を有効にしても、引き続きデータベースに対してパスワードベースのデータベース認証を使用できます。
  • Autonomous Databaseには、いつでも1つの外部認証方法のみを使用できます。つまり、Oracle Cloud Infrastructure (IAM)、Active Directoryを使用した一元管理ユーザー(CMU-AD)、Azure ADまたはKerberos認証スキームのみをいつでも有効にできます。

    ノート:

    唯一の例外は、Microsoft Active DirectoryユーザーにCMU-AD Kerberos認証を提供するために、CMU-AD上にKerberos認証を構成できることです。
  • 次のツールでは、Kerberos認証はサポートされていません:
    • Oracle Database API for MongoDB
    • Oracle REST Data Services
    • Oracle Machine Learning
    • APEX
    • Oracle Graph Studio
    • Oracle Database Actions
  • Kerberos認証を有効にしてADMINユーザーを認証できます。Oracle Cloud Infrastructure (OCI)コンソールで「パスワードのリセット」機能を使用して、ADMINユーザーのパスワードをリセットし、破損したキータブ・ファイルによってADMINユーザーの認証が失敗した場合にアクセスを再取得できます。
  • Kerberos認証は、Autonomous Databaseバージョン19.27以降のTCPプロトコルでサポートされています。
  • Kerberos認証は、DB_LINKsおよびAutonomous Data Guardを使用するデータベースではサポートされていません。

Autonomous DatabaseでのKerberos認証の有効化

専用Exadataインフラストラクチャ上のAutonomous DatabaseでKerberos認証を有効にするには、次に示すステップに従います:
  • Autonomous Databaseに対して有効化できる外部認証スキームはいつでも1つのみであるため、DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATIONプロシージャを実行して、データベースに対してすでに有効化されている外部認証スキームを無効化します。

    このプロシージャを実行するには、ADMINユーザーでログインするか、DBMS_CLOUD_ADMINに対するEXECUTE権限を持っている必要があります。
    BEGIN
        DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
    END;
    /
  • Kerberos構成ファイルkrb.confおよびサービス・キー表ファイルv5srvtabを取得します。これらのファイルおよび取得に必要なステップの詳細は、『Oracle Database 19cセキュリティ・ガイド』または『Oracle Database 23aiセキュリティ・ガイド』「Kerberos認証の構成」を参照してください。

  • Kerberos構成ファイルkrb.confおよびv5srvtabをオブジェクト・ストア内のバケットにコピーします。

    ノート:

    Oracleでは、Kerberos構成ファイルをオブジェクト・ストアのプライベート・バケットに格納することをお薦めします。

    Oracle Cloud Infrastructure Object Storeを使用している場合は、オブジェクト・ストレージへのデータの配置を参照して、ファイルのアップロードの詳細を確認してください。

  • Autonomous Database外部認証としてKerberosを有効にするには、DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATIONプロシージャを実行し、params JSON引数を使用して場所URIを渡します。構成ファイルkrb.confおよびv5srvtabは、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認証を提供するために、前述の例でtypeCMUに設定することで、CMU-AD上でKerberos認証を有効にできます。

    この例では、namespace-stringOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketnameはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。

    このステップで使用する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.confおよびv5srvtabを削除します。ローカル・オブジェクト・ストア・メソッドを使用してこれらのファイルを削除するか、DBMS_CLOUD.DELETE_OBJECTを使用してオブジェクト・ストアからファイルを削除できます。

オブジェクト・ストレージの詳細は、Oracle Cloud Infrastructure Object Storageへの移動とバケットの作成を参照してください。

詳細は、ENABLE_EXTERNAL_AUTHENTICATIONプロシージャを参照してください。

Autonomous DatabaseでのKerberos認証の無効化

データベースで他の外部認証スキームを有効にする前に、DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATIONプロシージャを実行するKerberos認証を無効にする必要があります。

このプロシージャを実行するには、ADMINユーザーでログインするか、DBMS_CLOUD_ADMINに対するEXECUTE権限を持っている必要があります。
BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/
詳細は、DISABLE_EXTERNAL_AUTHENTICATIONプロシージャを参照してください。

ノート:

Microsoft Active DirectoryユーザーにCMU-AD Kerberos認証を提供するには、Kerberos認証を無効にせずに引き続きCMU-AD認証を構成する必要があります。