Microsoft EntraIDを使用したOAuthデータベース接続認証

EntraIDは、データベースに認証するためのパスワードなしの方法です。通常の資格証明では、ユーザー名/パスワードを使用してRDBMSで認証します。EntraIDでは、client_id、tenant_id、app_id_uriおよびclient_secretを使用してデータベースに接続します。これらの値はデータベース接続文字列に埋め込まれます。

Oracle GoldenGateでは、クライアント・シークレットをGoldenGate CredentialStoreに格納し、DBLOGIN時に指定できるようにすることで、Microsoft Entra ID OAuth認証をサポートしています。クライアント・シークレットは、データベース・パスワードのかわりに使用されます。

この構成は、Entra IDサービス・プリンシパルを使用したプラグイン・ベースのOAuth認証を対象としています。

認証の仕組み

GoldenGate認証フローは次のとおりです。

  1. GoldenGateはDBLOGIN USERIDALIAS ali_entra_u1を受け取ります。
  2. CredentialStoreでali_entra_u1を解決します。
  3. エントリをEntra ID資格証明として識別します。
  4. CredentialStoreからクライアント・シークレットを読み取ります。
  5. 残りのEntra ID属性をcdb1_pdb1接続記述子から読み取ります。
  6. Microsoft Entra ID OAuth認証を使用してデータベース・セッションを確立します。

前提条件

Microsoft EntraID用にGoldenGate DBLOGINを構成する前に、次のことを確認してください。

データベース接続記述子の構成

GoldenGateで使用されるEZConnectまたはTNS別名には、Entra ID接続属性が含まれている必要があります。

たとえば:

cdb1_pdb1 =
  (DESCRIPTION =
    (ADDRESS =
      (PROTOCOL = tcps)
      (HOST = ggeastsource)
      (PORT = 15414)
    )
    (SECURITY =
      (SSL_SERVER_CERT_DN = "C=US,O=OracleCorporation,CN=sslserver1")
      (TOKEN_AUTH = AZURE_SERVICE_PRINCIPAL)
      (TENANT_ID = 443z0000-e00d-000a-8b0a-000000000000d)
      (CLIENT_ID = 00c00cb0-c0ab-0030-bcb0-0c0ca0b0fdee)
      (AZURE_DB_APP_ID_URI =
        https://ftest_cdb1_pdb1.az207oracleoutlook.onmicrosoft.com
      )
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ggeastsource.us.oracle.com)
    )
  )

接続記述子には、シークレットではないEntra ID接続プロパティが格納されます。クライアント・シークレットは、GoldenGate CredentialStoreに別個に格納する必要があります。

Entra ID資格証明の追加

CLIENTSECRETキーワードを使用して、Entra ID資格証明を作成します:

ALTER CREDENTIALSTORE ADD USER /@cdb1_pdb1
  ALIAS ali_entra_u1
  CLIENTSECRET H9pL2~vQeR7nMx3TaK8cWz1YdF4sJ_N6rP_Tx9aK

ここで:

Entra ID CredentialStoreエントリには、クライアント・シークレットのみが含まれます。データベース・ユーザー名またはデータベース・パスワードが含まれていません。

資格証明別名を使用したログイン

資格証明を追加した後、DBLOGINで別名を使用します。

DBLOGIN USERIDALIAS ali_entra_u1

GoldenGateは、別名を解決し、次の認証情報を使用します。

データベースのユーザー名とパスワードに対する要件はありません。かわりに、GoldenGateはクライアント・シークレットをOracleクライアントのOAuthセッションに提供します。

Entra ID OAuth認証にはCLIENTSECRETを使用します。クライアント・シークレットがGoldenGate CredentialStoreに格納されている場合は、NOPASSWORDを使用しないでください。

考慮事項