自律型AIデータベースのMicrosoft Azure Active Directoryユーザーの認証および認可

Microsoft Azure ADユーザーがAzure OAuth2アクセス・トークンを使用して接続するように、Oracle Autonomous AI Database on Dedicated Exadata Infrastructureインスタンスを構成できます。

Oracle Autonomous AI Database on Dedicated Exadata InfrastructureとMicrosoft Azure ADの統合について

専用Exadataインフラストラクチャ上のOracle Autonomous AI DatabaseおよびMicrosoft Azure ADは、ユーザーおよびアプリケーションがAzure AD資格証明を使用してデータベースに接続できるように構成できます。

Azure ADのユーザーおよびアプリケーションは、Azure ADシングル・サインオン(SSO)資格証明を使用してログインし、データベースにアクセスできます。これは、ユーザーまたはアプリケーションが最初にAzure ADからリクエストするAzure AD OAuth2アクセス・トークンを使用して行われます。このOAuth2アクセス・トークンには、ユーザーIDおよびデータベース・アクセス情報が含まれ、データベースに送信されます。マルチファクタ認証の構成の詳細は、Microsoft社の記事Azure Active Directoryのパスワードレス認証オプションを参照してください。

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

  • オンプレミスOracle Databaseリリース19.18以降
  • 共有Exadataインフラストラクチャ上のOracle Autonomous AI Database
  • Oracle Autonomous AI Database on Dedicated Exadata Infrastructure
  • Oracle Base Database Service
  • Oracle Exadata Cloud Service(Oracle ExaCS)

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

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

Azure AD管理者は、専用Exadataインフラストラクチャ上のOracle Autonomous AI Databaseを作成して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でユーザーを直接認証し、データベース・アクセス・トークンを専用Exadataインフラストラクチャ上のOracle Autonomous AI Databaseインスタンスに渡すことができます。ファイルの場所から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資格証明を入力できます。

専用Exadataインフラストラクチャ上のOracle Autonomous AI Databaseは、次のAzure ADプリンシパルを表すトークンを受け入れます:

  • Azure ADユーザー。これは、Azure ADテナンシに登録されているユーザーです
  • ゲスト・ユーザー。これは、Azure ADテナンシにゲスト・ユーザーとして登録されています
  • サービス。これは、クライアント資格証明フローを使用してデータベースに自身で接続する登録されたアプリケーションです(接続プールのユース・ケース)

専用Exadataインフラストラクチャ上のOracle Autonomous AI Databaseでは、次のAzure AD認証フローがサポートされています:

  • 認証コード。ブラウザを使用して、クライアント環境のAzure ADへの認証に使用する、(アプリケーションではなく)人間のユーザーに最も一般的に使用されます
  • クライアント資格証明。(エンド・ユーザーとしてではなく)それ自体として接続するデータベース・アプリケーションで使用されます
  • On-Behalf-Of (OBO)。ログイン・ユーザーのかわりにアプリケーションがアクセス・トークンをリクエストして、データベースに送信します
  • リソース所有者パスワード資格証明(ROPC)。本番環境での使用は推奨されませんが、ポップアップ・ブラウザでのユーザー認証の組込みが困難なテスト環境で使用できます。ROPCでは、トークン・リクエスト・コールの一部としてAzure ADユーザー名とパスワード資格証明が必要です。

Microsoft Azure ADと自律型AIデータベースの統合のアーキテクチャ

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

Autonomous AI DatabaseへのAzure ADユーザーのマッピング

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

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

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

専用Exadataインフラストラクチャ上のOracle Autonomous AI Databaseによる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. 専用Exadataインフラストラクチャ上のOracle Autonomous AI Databaseインスタンスに接続する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. 専用Exadataインフラストラクチャ上のOracle Autonomous AI Databaseインスタンスに接続すると、Azure ADエンド・ユーザーは必要に応じてデータベース操作を実行します。

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

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

前提条件

Microsoft Azure ADと専用Exadataインフラストラクチャ上のOracle Autonomous AI Databaseの統合には、次のものが必要です:
  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 Cloud@Customerインフラストラクチャの作成時にフリート管理者が定義します(コンソールを使用したExadata Database Service on 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インスタンスを登録します。Refer to Register the Oracle Autonomous AI Database Instance with a Microsoft Azure AD Tenancy in Security Guide.

  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を作成します。

    After creating the NAT gateway, add a route rule and an egress security rule to each subnet (in the VCN) where Autonomous AI Database resources reside so that these resources can use the gateway to obtain a public key from your Azure AD instance:

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

    2. Subnet Information」タブで、サブネットの「Route Table」の名前をクリックして、その「Route Table Details」ページを表示します。

    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など)に変更することもできます。ただし、自律型AIデータベースでは、一度に1つの外部認証スキームのみを有効にできます。

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

    1. DBMS_CLOUD_ADMIN PL/SQLパッケージに対するEXECUTE権限を持つユーザーとして、Autonomous AI Databaseインスタンスにログインします。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ポータル(Azure Active Directoryのアプリケーション登録の「Overview」ペイン)から使用できます。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: Autonomous AI 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ユーザーは、1つのデータベース・スキーマにマップされ、オプションで1つ以上のデータベース・ロールにマップされます。

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

Azure ADへのクライアント接続を構成します

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

現在の環境に最適なクライアント接続方法を選択してください。このガイドでは、Azure AD OAuth2アクセス・トークンを取得する様々な方法でSQL*Plusを接続する例を示します。すべてのOracle Databaseリリース19cクライアントで、ファイルとして渡されるトークンを受け入れることができます。JDBCシン・ドライバ、Instant ClientドライバおよびODP.netドライバも、アプリケーションからデータベース・クライアントAPIを介してトークンを受け入れます。Oracle Database tools such as SQL*Plus cannot retrieve the tokens directly, so tools such as PowerShell or Azure CLI must be used to retrieve the Azure AD OAuth2 access token.Azure ADトークンを取得するには、Azure ADアプリケーション登録プロセスを介してクライアントを登録する必要があります。このクライアントの登録は、アプリ登録を使用した専用Exadataインフラストラクチャ上のOracle Autonomous AI DatabaseサーバーのAzure ADへの登録と同様に行われます。データベースとクライアントの両方をAzure ADに登録する必要があります。

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

ノート:

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

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

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

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

パブリック・クライアントでのリソース所有者パスワード資格証明(ROPC)フローの使用を示す例は、セキュリティ・ガイドOracle DatabaseへのPowerShellでのSQL*Plusクライアント接続の操作フローを参照してください。

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

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

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

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

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

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

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

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

  • トレース・ファイルを使用して、Oracle DatabaseとMicrosoft Azure ADの統合に関してトラブルシューティングできます。ガイダンスは、データベース・セキュリティ・ガイドOracle DatabaseクライアントとAzure ADの接続のトラブルシューティングのためのトレース・ファイルを参照してください。

  • ORA-12599: 「TNS: 暗号チェックサムの不一致が発生しました」エラーおよびORA-03114: 「Oracleに接続されていません。」エラーは、接続しようとしているデータベースがネイティブ・ネットワーク暗号化によって保護されていることを示します。

    トークンを使用してOracleデータベースにアクセスする場合は、ネットワーク・ネイティブ暗号化ではなくTransport Layer Security (TLS)接続を確立する必要があります。これらのエラーを修正するには、TLSがデータベースに対して適切に構成されていることを確認してください。ローカル・データベースのユーザー名とパスワードを使用して構成をテストし、次のSYSCONTEXT USERENVパラメータを確認する必要があります。

    • NETWORK_PROTOCOL
    • TLS_VERSION
  • JSON WebトークンのWebサイトを使用すると、サイトで使用されているMicrosoft Azure ADアクセス・トークンのバージョンを確認できます。ガイダンスは、データベース・セキュリティ・ガイドAzure ADアクセス・トークン・バージョンの確認を参照してください。