Entra IDエンドポイントのアクセシビリティのテスト

Oracle DatabaseがEntra IDエンドポイントにアクセスできることを確認する必要があります。

データベース・クライアントがMicrosoft Entra ID OAuth2トークンを取得するように構成されている場合、データベース・クライアントはEntra IDエンドポイントにアクセスできる必要があります。次のコマンドを実行して、インターネット・アクセスがあるかどうかを確認します:
curl https://login.windows.net/common/discovery/keys
ステータス・コード200は成功を示します。

このコマンドの実行に失敗した場合は、プロキシ情報についてITヘルプ・デスクに確認してください。

OracleデータベースがEntra ID OAuth2トークンを受け入れるには、データベースがMicrosoft Entra IDエンドポイントからの公開キーをリクエストする必要があります。
  • 次のテストを実行して、データベースがMicrosoft Entra IDエンドポイントに接続できるかどうかを確認します:
    SET SERVEROUTPUT ON SIZE 40000
    DECLARE
      req UTL_HTTP.REQ;
      resp UTL_HTTP.RESP;
    BEGIN
      UTL_HTTP.SET_WALLET(path => 'system:');
      req := UTL_HTTP.BEGIN_REQUEST('https://login.windows.net/common/discovery/keys');
      resp := UTL_HTTP.GET_RESPONSE(req);
      DBMS_OUTPUT.PUT_LINE('HTTP response status code: ' || resp.status_code);
      UTL_HTTP.END_RESPONSE(resp);
    END;
    /

    このテストが成功すると、「PL/SQLプロシージャが正常に完了しました。」メッセージが表示されます。

    次のメッセージが表示された場合は、データベース・ネットワーク・アクセス制御リスト(ACL)ポリシーによってテストがブロックされたということです。テストできるようにアクセス制御リスト・ポリシーを一時的に設定する必要があります:

    ORA-29273: HTTP request failed
    ORA-24247: network access denied by access control list (ACL)
    1. ACLを次のように設定します。
      BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'username_placeholder',
                             principal_type => xs_acl.ptype_db));
      END;
      /

      username_placeholderを、テストを実行しているデータベース・ユーザーのユーザー名に置き換えます。たとえば:

      BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'DBA_DEBRA',
                             principal_type => xs_acl.ptype_db));
      END;
      /
    2. テストを再度実行します。
    3. ACLは不要になったため、削除します。たとえば、ユーザー名がdba_debraであるとします:
      BEGIN
      DBMS_NETWORK_ACL_ADMIN.REMOVE_HOST_ACE(
        host => '*',
        ace  =>  xs$ace_type(privilege_list => xs$name_list('connect'),
                             principal_name => 'DBA_DEBRA',
                             principal_type => xs_acl.ptype_db));
      END;
      /
データベースがMicrosoft Entra IDエンドポイントに接続できない場合、ACLポリシーを設定した後でも、ほとんどの場合、データベースのHTTP_PROXYパッケージを設定する必要があります。デフォルトのOracle Database環境を使用しているか、Oracle Real Application Clusters RAC環境を使用しているかに応じて、「関連トピック」にリストされているトピックを確認します。ネットワーク管理者は、正しいHTTP_PROXY設定を通知できる必要があります。