Autonomous DatabaseでのKerberos認証の構成

Oracle Autonomous Databaseユーザーを認証するようにKerberosを構成する方法について説明します。

Kerberos認証について

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

  • Oracle Autonomous Databaseは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;
kservice

Autonomous Databaseでは、kservice値に対して2つのオプションがあります:

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

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

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

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

Autonomous DatabaseインスタンスでKerberos認証を有効にするステップを示します。

DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATIONを実行するには、ADMINユーザーでログインしているか、DBMS_CLOUD_ADMINに対するEXECUTE権限を持っている必要があります。

DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATIONを使用してKerberos認証を有効にするには:

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

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

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

  2. 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;
    /
    ノート

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

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

    このステップで使用するcredential_nameは、オブジェクト・ストアの資格証明です。

    Creating a credential to access Oracle Cloud Infrastructure Object Store is not required if you enable resource principal credentials.詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。

    location_uriが事前認証済URLの場合、credential_nameを指定する必要はありません。

    これにより、データベースにKERBEROS_DIRという名前のディレクトリ・オブジェクトが作成され、その資格証明を使用して、オブジェクト・ストアの場所からディレクトリ・オブジェクトにKerberos構成ファイルがダウンロードされます。

    params 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;
    /
  3. Kerberos認証を有効にした後、オブジェクト・ストアから構成krb.confおよびv5srvtabを削除します。ローカル・オブジェクト・ストア・メソッドを使用してこれらのファイルを削除するか、DBMS_CLOUD.DELETE_OBJECTを使用してオブジェクト・ストアからファイルを削除できます。

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

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

Autonomous DatabaseでのKerberos認証の無効化

Autonomous DatabaseインスタンスのKerberos認証を無効にするステップを示します。

  1. Kerberos認証を無効にするには、DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATIONプロシージャを実行します。このプロシージャを実行するには、ADMINユーザーとしてログインするか、DBMS_CLOUD_ADMINに対するEXECUTE権限を持っている必要があります。
    BEGIN   
       DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
    END;
    /

    これにより、Oracle Autonomous DatabaseのKerberos認証(または指定された外部認証スキーム)が無効になります。

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

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

Autonomous DatabaseのKerberos認証の使用に関するノートを提供します。

  • Autonomous DatabaseでKerberos認証を有効にしても、引き続きデータベースに対してパスワードベースのデータベース認証を使用できます。

  • 次のツールでは、Kerberos認証はサポートされていません:
    • Oracle Database API for MongoDB

    • Oracle REST Data Services

    • Oracle Machine Learning

    • APEX

    • Oracle Graph Studio

    • Oracle Databaseアクション

  • Kerberos認証を有効にしてADMINユーザーを認証できます。Oracle Cloud Infrastructure Consoleの「パスワードのリセット」機能を使用して、ADMINユーザーのパスワードをリセットし、破損したキータブ・ファイルによってADMINユーザーの認証が失敗した場合にアクセスを取り戻すことができます。

  • Autonomous Databaseの最大クロック・スキューのデフォルト値は、300秒(5分)です。デフォルトのクロック・スキー値は変更できません。