Autonomous AI Database用のMicrosoft Azure Active Directoryユーザーの認証と認可

Oracle Autonomous AI Database on Dedicated Exadata Infrastructureインスタンスでは、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からリクエストするAzure AD OAuth2アクセス・トークンを使用して行われます。このOAuth2アクセス・トークンには、ユーザーIDおよびデータベース・アクセス情報が含まれ、データベースに送信されます。マルチファクタ認証およびパスワードレス認証の構成の詳細は、Microsoft社の記事Azure Active Directoryのパスワードレス認証オプションを参照してください。

この統合は、次のOracle Database環境で実行できます:

Azure ADを構成する手順では、これらの環境を包含するために「Oracle Database」という用語を使用します。

このタイプの統合により、Azure ADユーザーはOracle Autonomous AI Database on Dedicated Exadata Infrastructureインスタンスにアクセスできます。Azure ADユーザーおよびアプリケーションは、Azure ADシングル・サインオン(SSO)資格証明を使用してログインし、Azure AD OAuth2アクセス・トークンを取得してデータベースに送信できます。

Azure AD管理者は、Oracle Autonomous AI Database on Dedicated Exadata Infrastructureを作成してAzure ADに登録します。Azure AD内では、これはアプリ登録と呼ばれ、アプリケーション登録の略です。これは、Azure ADを使用しているソフトウェアについてAzure ADが理解しておく必要があるデジタル情報です。Azure AD管理者は、Azure ADでデータベース・アプリを登録するためのアプリケーション(アプリ)ロールも作成します。アプリケーション・ロールは、Azureユーザー、グループおよびアプリケーションをデータベース・スキーマおよびロールに接続します。Azure AD管理者は、Azure ADユーザー、グループ、またはアプリケーションをアプリケーションのロールに割り当てます。これらのアプリケーション・ロールは、データベース・グローバル・スキーマ、グローバル・ロール、またはスキーマとロールの両方にマップされます。アプリケーション・ロールに割り当てられたAzure ADユーザー、グループ、またはアプリケーションは、データベース・グローバル・スキーマ、グローバル・ロール、あるいはスキーマとロールの両方にマップされます。Oracleグローバル・スキーマは、Azure ADユーザーに排他的にマップすることもできます。Azure ADゲスト・ユーザー(組織ユーザー以外)またはAzure ADサービス・プリンシパル(アプリケーション)のみ、Azure ADアプリケーション・ロールを介してデータベース・グローバル・スキーマにマップできます。Oracleグローバル・ロールはAzureアプリケーション・ロールからのみマップでき、Azureユーザーからはマッピングできません。

Oracle APEX、Database Actions、Oracle Graph Studio、Oracle Database API for MongoDBなどのOracle Autonomous AI Database on Dedicated Exadata Infrastructureツールは、Azure ADトークンを使用してデータベースに接続することと互換性がありません。

Azure ADトークンをサポートするように更新されたツールおよびアプリケーションは、Azure ADでユーザーを直接認証し、データベース・アクセス・トークンをOracle Autonomous AI Database on Dedicated Exadata Infrastructureインスタンスに渡すことができます。ファイルの場所からAzure ADトークンを使用するように、SQL*Plusなどの既存のデータベース・ツールを構成できます。このような場合、Azure ADトークンは、Microsoft PowerShellやAzure CLIなどのツールを使用して取得し、ファイルの場所に配置できます。Azure AD OAuth2データベース・アクセス・トークンは、有効期限付きで発行されます。Oracle Databaseクライアント・ドライバは、トークンが有効な形式であり、期限が切れていないことを確認してからデータベースに渡します。トークンのスコープはデータベースです。つまり、そのトークンが使用されるデータベースに関する情報がトークン内に存在します。データベースAzure ADアプリ登録でAzure ADプリンシパルが割り当てられたアプリケーション・ロールは、アクセス・トークンの一部として含められます。Azure ADトークンのディレクトリの場所には、ユーザーがトークン・ファイルをその場所に書き込み、データベース・クライアントがこれらのファイルを取得するために十分な権限のみ(ユーザーによる読取りおよび書込みのみなど)を付与する必要があります。トークンによってデータベースへのアクセスが許可されるため、トークンはファイル・システム内で保護される必要があります。

Azure ADユーザーは、いくつかの方法を使用してAzure ADからトークンをリクエストし、Azureログイン・ウィンドウを開いてAzure AD資格証明を入力できます。

Oracle Autonomous AI Database on Dedicated Exadata Infrastructureは、次のAzure ADプリンシパルを表すトークンを受け入れます:

Oracle Autonomous AI Database on Dedicated Exadata Infrastructureでは、次のAzure AD認証フローがサポートされています。

Autonomous AI DatabaseとのMicrosoft Azure AD統合のアーキテクチャ

Microsoft Azure Active Directoryトークンは、OAuth2標準とその拡張に従います。Azure ADトークンを使用したOracleデータベースへのアクセスは、OCI IAMトークンを使用した場合と同様に行われます。詳細は、セキュリティ・ガイドMicrosoft Azure ADとOracle Databaseの統合のアーキテクチャを参照してください。

Azure ADユーザーをAutonomous AIデータベースにマッピング

Microsoft Azureユーザーは、Autonomous AI Databaseインスタンスに対して認証する前に、Autonomous AI Databaseスキーマにマップされ、ロールを介して必要な権限を持っている必要があります。Microsoft Azureでのユーザー、グループおよびアプリケーションの様々なマッピング方法の詳細は、セキュリティ・ガイドAzure ADユーザーによるOracle Databaseへのマッピングを参照してください。

Azure ADを使用したAutonomous AI Databaseへの接続のユース・ケース

Oracle Databaseでは、Microsoft Azure Active Directoryを使用してAutonomous AI Databaseインスタンスに接続するための3種類のユース・ケースがサポートされています。詳細は、Azure ADを使用したOracle Databaseへの接続のユース・ケースを参照してください。

Oracle Autonomous AI Database on Dedicated Exadata Infrastructureを使用したMicrosoft Azure ADアイデンティティの認証の一般的なプロセス

Azure AD OAuth2アクセス・トークンを使用してAzure ADユーザーがデータベースに接続できるように、Oracle Database管理者およびMicrosoft Azure AD管理者がロールを再生します。

一般的なプロセスは次のとおりです:

  1. Oracle Database管理者は、Oracle Database環境が、Microsoft Azure AD統合の要件を満たしていることを保証します。Microsoft Azure AD統合のためのOracle Databaseの要件を参照してください。

  2. Azure AD管理者はデータベースのAzure ADアプリケーション登録を作成し、Oracle Database管理者はデータベース・アクセス用のAzure ADトークンを使用できるようにデータベースを有効にします。

    アプリケーション登録プロセスの一環として、Azure AD管理者は、Azureユーザー、グループおよびアプリケーションとOracle Databaseスキーマおよびロールの間のマッピングに使用するAzureアプリケーション・ロールを作成します。

  3. Oracle Database管理者は、グローバル・スキーマを作成して、Azure ADユーザー(排他的スキーマ・マッピング)またはAzureアプリケーション・ロール(共有スキーマ・マッピング)のいずれかにマップしますAzure ADユーザーまたはアプリケーションを1つのスキーマにマップする必要があります。

  4. オプションで、Oracle管理者はグローバルOracle Databaseロールを作成し、Azureアプリケーション・ロールにマップします。

  5. Oracle Autonomous AI 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 AI Database on Dedicated Exadata Infrastructureインスタンスに接続すると、Azure ADエンド・ユーザーは必要に応じてデータベース操作を実行します。

Autonomous AI DatabaseでのAzure AD認証の有効化

Azure AD管理者およびAutonomous AI Database管理者は、Autonomous AI DatabaseでAzure AD認証を構成するステップを実行します。

前提条件

Microsoft Azure ADとOracle Autonomous AI Database on Dedicated Exadata Infrastructureの統合には、次のものが必要です。

  1. Autonomous AI Databaseは、バージョン19.18以上です。

  2. TLSポート2484のデータベースへの接続。TLS以外の接続はサポートされていません。

  3. データベースによるAzure AD公開キーのリクエストを可能にするAzure ADへのアウトバウンド・ネットワーク接続。

  4. Azure ADに登録されるAutonomous AI Database。

  5. Exadata Cloud@Customerデプロイメントの場合、ご使用の環境のHTTPプロキシ設定で、データベースでAzure ADを使用できるようにする必要があります。

    これらの設定は、コンソールを使用したExadata Database Service on Cloud@Customerのプロビジョニングの説明に従って、Exadata Cloud@Customerインフラストラクチャの作成時にフリート管理者によって定義されます。

ノート: HTTPプロキシを含むネットワーク構成は、Exadataインフラストラクチャが「アクティブ化が必要」状態になるまで編集できます。アクティブ化した後は、これらの設定を編集できません。

すでにプロビジョニングされているExadataインフラストラクチャのHTTPプロキシを設定するには、My Oracle Supportでサービス・リクエスト(SR)が必要です。詳細は、My Oracle Supportでのサービス・リクエストの作成を参照してください。

手順

Microsoft Azure AD統合用のAutonomous AI Databaseを構成するには、次のタスクを実装します。

  1. Microsoft Azure ADテナンシへのAutonomous AI Databaseインスタンスの登録: Azure AD管理者権限を持つユーザーは、Microsoft Azure ADを使用して、Microsoft Azure ADテナンシにOracle Databaseインスタンスを登録します。セキュリティ・ガイドMicrosoft Azure ADテナンシへのOracle Autonomous AI Databaseインスタンスの登録を参照してください。

  2. Microsoft Azure AD v2アクセス・トークンの有効化:組織で(v1トークンのかわりに)Microsoft Azure AD v2アクセス・トークンを使用する場合、トークン内のupn:クレームをサポートするために、Azure ADで追加の変更が必要になる場合があります。Microsoft Azure AD v2アクセス・トークンの有効化およびセキュリティ・ガイドAzure ADアクセス・トークン・バージョンの確認を参照してください。

  3. Microsoft Azure ADでのアプリケーション・ロールの管理: Azure ADでは、 Azure ADユーザーおよびグループに割り当てられ、 Oracle Databaseグローバル・スキーマとロールにマップされるアプリケーション・ロールを作成および管理できますセキュリティ・ガイドMicrosoft Azure ADでのアプリケーション・ロールの管理を参照してください。

  4. NATゲートウェイを使用して、Microsoft Azure ADへのアウトバウンド接続を構成します。

    Oracle Cloud InfrastructureドキュメントNAT Gatewayの作成の手順に従って、Autonomous AI Databaseリソースが存在しているVirtual Cloud Network (VCN)にNAT Gatewayを作成します。

    NATゲートウェイを作成したら、Autonomous AI Databaseリソースが存在する各サブネット(VCN内)にルート・ルールおよびエグレス・セキュリティ・ルールを追加して、これらのリソースがゲートウェイを使用してAzure ADインスタンスから公開キーを取得できるようにします:

    1. サブネットの「サブネットの詳細」ページに移動します。

    2. 「サブネット情報」タブで、サブネットの「ルート表」の名前をクリックして、その「ルート表の詳細」ページを表示します。

    3. 既存のルート・ルールの表では、次の特性を持つルールがすでに存在するかどうかを確認します:

      • 宛先: 0.0.0.0/0

      • ターゲット・タイプ: NAT Gateway

      • ターゲット: VCN内に作成したNATゲートウェイの名前

      そのようなルールが存在しない場合は、「ルート・ルールの追加」をクリックし、これらの特性を持つルート・ルールを追加します。

    4. サブネットの「サブネットの詳細」ページに戻ります。

    5. サブネットの「セキュリティ・リスト」表で、サブネット セキュリティ・リストの名前をクリックして、その「セキュリティ・リストの詳細」ページを表示します。

    6. サイド・メニュー内の「リソース」で、「エグレス・ルール」をクリックします。

    7. 既存のエグレス・ルールの表では、次の特性を持つルールがすでに存在するかどうかを確認します:

      • 宛先タイプ:CIDR

      • 宛先:0.0.0.0/0

      • IPプロトコル:TCP

      • ソース・ポート範囲:443

      • 宛先ポート範囲:すべて

      そのようなルールが存在しない場合は、「エグレス・ルールの追加」をクリックし、これらの特性を持つエグレス・ルールを追加します。

  5. Entra IDエンドポイントのアクセシビリティをテストします

    セキュリティ・ガイドAzureエンドポイントのアクセシビリティのテストで概説されているステップに従って、Oracle DatabaseインスタンスがEntra IDエンドポイントにアクセスできることを確認します。

    データベースがMicrosoft Entra IDエンドポイントに接続できない場合は、ACLポリシーを設定した後でも、前述の前提条件をチェックして、前提条件に従ってネットワークを適切に構成したことを確認します。問題が続く場合は、ネットワークを確認して、データベース・インスタンスがMS Entra IDエンドポイントに接続できることを確認してください。

  6. Autonomous AI Databaseの外部アイデンティティ・プロバイダとしてAzure ADを構成します:

    デフォルトでは、Autonomous AI DatabaseおよびAutonomous Container Databaseは、ユーザーをOracle Cloud Infrastructure (IAM)の認証および認可と接続するように構成されています。アプリケーションDBAは、これをActive Directory (CMU-AD)を使用した集中管理ユーザーやKerberosなどの別の外部認証スキームに変更することもできます。ただし、Autonomous AI Databaseでは、一度に1つの外部認証スキームのみを有効にできます。

    Autonomous AI DatabaseインスタンスでAzure ADを外部アイデンティティ・プロバイダとして有効にするには:

    1. Autonomous AI Databaseインスタンスに、DBMS_CLOUD_ADMIN PL/SQLパッケージに対するEXECUTE権限を持つユーザーとしてログインします。ADMINユーザーはこの権限を持ちます。

    2. Autonomous AI Databaseに対して有効にできる外部認証スキームはいつでも1つのみであるため、DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATIONプロシージャを実行して、データベースに対してすでに有効になっている外部認証スキームをすべて無効にします。

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

       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 ADパラメータの値は、Azure Active Directoryのアプリケーション登録の「概要」ペインのAzureポータルから使用できます。Azure ADに必要なparamsは次のとおりです:

        • tenant_id: AzureアカウントのテナントID。テナントIDは、Autonomous AI DatabaseインスタンスのAzure ADアプリケーションの登録を指定します。

        • application_id: Autonomous AI Databaseインスタンスで外部認証用のロール/スキーマ・マッピングを割り当てるためにAzure ADで作成されたAzureアプリケーションID。

        • application_id_uri: Azureアプリケーションに割り当てられた一意のURI。

          これは、Autonomous AI Databaseインスタンスの識別子です。名前はドメイン修飾である必要があります(これにより、クロス・テナンシ・リソース・アクセスがサポートされます)。

          このパラメータの最大長は256文字です。

      • force: 別のEXTERNAL AUTHENTICATIONメソッドがAutonomous AI Databaseインスタンスに対して構成されており、それを無効にする場合は、このパラメータを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ユーザーは、1つのデータベース・スキーマにマップされ、オプションで1つ以上のデータベース・ロールにマップされます。

Oracleデータベース・スキーマおよびロールをMicrosoft Azure ADユーザーにマッピングするには、次のオプションがあります。

Azure ADへのクライアント接続の構成

Azure ADトークンを使用してOracle Autonomous AI Database on Dedicated Exadata Infrastructureインスタンスに接続するようにクライアントを構成するには、様々な方法があります。

現在の環境に最適なクライアント接続方法を選択してください。このガイドでは、Azure AD OAuth2アクセス・トークンを取得する様々な方法でSQL*Plusを接続する例を示します。すべてのOracle Databaseリリース19cクライアントで、ファイルとして渡されるトークンを受け入れることができます。JDBCシン・ドライバ、Instant ClientドライバおよびODP.netドライバも、アプリケーションからデータベース・クライアントAPIを介してトークンを受け入れます。SQL*PlusなどのOracle Databaseツールではトークンを直接取得できないため、PowerShellやAzure CLIなどのツールを使用してAzure AD OAuth2アクセス・トークンを取得する必要があります。Azure ADトークンを取得するには、Azure ADアプリケーション登録プロセスを介してクライアントを登録する必要があります。クライアントの登録は、アプリ登録を使用したAzure ADへのOracle Autonomous AI Database on Dedicated Exadata Infrastructureサーバーの登録と同様です。データベースとクライアントの両方をAzure ADに登録する必要があります。

クライアントがデータベースのアクセス・トークンを取得するための権限を取得できるように、データベースを登録する必要があります。信頼できるクライアントがアクセス・トークンを要求していることをAzure ADで認識できるように、クライアントを登録する必要があります。

ノート:クライアントでは、sqlnet.oraファイルでTOKEN_AUTHおよびTOKEN_LOCATIONパラメータを設定して、Azure ADデータベース・アクセス・トークンを場所から取得し、/スラッシュ・ログインが使用されるときに使用する必要があります。正確な詳細は、Azure ADアクセス・トークン用のSQL*Plusの構成を参照してください。

Azure ADにクライアントを接続する方法の詳細は、次のMicrosoft Azureの記事を参照してください:

PowerShellでのAutonomous AI DatabaseへのSQL*Plusクライアント接続の操作フロー

Azureユーザー、Azure ADおよびAutonomous AI Databaseインスタンスの間の接続では、これらのコンポーネントを通したOAuth2トークンの受渡しが利用されています。

パブリック・クライアントでのリソース所有者パスワード資格証明(ROPC)フローの使用例については、『Plus 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)のSQL操作フローを参照してください。

Azure ADアプリケーション登録へのクライアントの登録

このタイプの登録は、Autonomous AI DatabaseをAzure ADアプリケーション登録に登録するのと同様です。詳細は、次のセクションを参照してください。

Azure AD OAuth2トークンの取得の例

Azure AD OAuth2トークンの取得の例については、セキュリティ・ガイドAzure AD OAuth2トークンの取得の例を参照してください。

Azure ADアクセス・トークン用のSQL*Plusを構成

Azure ADデータベース・アクセス・トークンをある場所から取得し、/スラッシュ・ログイン使用時にそれを使用するようにSQL*Plusを構成する必要があります。詳細な手順は、セキュリティ・ガイドのAzure ADアクセス・トークン用のSQL*Plusの構成を参照してください。

Microsoft Entra ID接続のトラブルシューティング

トレース・ファイルを使用して、Microsoft Entra ID接続の問題を診断できます。ORA-12599およびORA-03114エラーを簡単に修正することもできます。