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認証フローは次のとおりです。
- GoldenGateは
DBLOGIN USERIDALIAS ali_entra_u1を受け取ります。 - CredentialStoreで
ali_entra_u1を解決します。 - エントリをEntra ID資格証明として識別します。
- CredentialStoreからクライアント・シークレットを読み取ります。
- 残りのEntra ID属性を
cdb1_pdb1接続記述子から読み取ります。 - Microsoft Entra ID OAuth認証を使用してデータベース・セッションを確立します。
前提条件
Microsoft EntraID用にGoldenGate DBLOGINを構成する前に、次のことを確認してください。
- Microsoft Entraアプリケーションおよびサービス・プリンシパルが構成されています。
- サービス・プリンシパルには、ターゲットのOracle AI Databaseへの接続が認可されています。
- Oracleクライアント接続記述子には、必要なEntra ID属性が含まれています。
- GoldenGate CredentialStoreが使用可能になり、初期化されます。
- クライアント・シークレットは、CredentialStoreで登録できます。
データベース接続記述子の構成
GoldenGateで使用されるEZConnectまたはTNS別名には、Entra ID接続属性が含まれている必要があります。
TOKEN_AUTH=AZURE_SERVICE_PRINCIPALTENANT_IDCLIENT_IDAZURE_DB_APP_ID_URI
たとえば:
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
ここで:
/@cdb1_pdb1は、接続記述子を識別します。ali_entra_u1は、GoldenGate資格証明の別名です。CLIENTSECRETは、資格証明をEntra ID OAuth資格証明として識別します。CLIENTSECRETに続く値は、Entra IDアプリケーション・クライアント・シークレットです。
Entra ID CredentialStoreエントリには、クライアント・シークレットのみが含まれます。データベース・ユーザー名またはデータベース・パスワードが含まれていません。
資格証明別名を使用したログイン
資格証明を追加した後、DBLOGINで別名を使用します。
DBLOGIN USERIDALIAS ali_entra_u1
GoldenGateは、別名を解決し、次の認証情報を使用します。
- 接続記述子からの
CLIENT_ID、TENANT_IDおよびAZURE_DB_APP_ID_URI。 - CredentialStoreの
CLIENTSECRET。
データベースのユーザー名とパスワードに対する要件はありません。かわりに、GoldenGateはクライアント・シークレットをOracleクライアントのOAuthセッションに提供します。
Entra ID OAuth認証にはCLIENTSECRETを使用します。クライアント・シークレットがGoldenGate CredentialStoreに格納されている場合は、NOPASSWORDを使用しないでください。
考慮事項
- クライアント・シークレットは、
CLIENT_IDで識別されるEntra IDアプリケーションに対応している必要があります。 TENANT_ID、CLIENT_IDおよびAZURE_DB_APP_ID_URIの値は、Entra IDアプリケーションおよびターゲット・データベースの構成と一致している必要があります。- クライアント・シークレットはGoldenGate別名に関連付けられ、他のOAuthパラメータはデータベース接続記述子に関連付けられます。
- Entra ID資格証明の作成時にデータベースのユーザー名またはパスワードを含めないでください。
- デプロイメントの必要に応じて、クライアント・シークレットまたはターゲット接続ごとに個別の資格証明別名を使用します。
- コマンドの実行中にクライアントシークレットを保護し、スクリプト、コマンド履歴、または診断出力に記録しないようにします。