验证 OAuth 数据库与 Microsoft EntraID 的连接

EntraID 是一种无口令的数据库验证方式。常规身份证明使用用户名/密码进行 RDBMS 验证。使用 EntraID 时,使用 client_id、tenant_id、app_id_uri 和 client_secret 连接到数据库。这些值嵌入到数据库连接字符串中。

Oracle GoldenGate 支持 Microsoft Entra ID OAuth 验证,允许将客户端密钥存储在 GoldenGate CredentialStore 中并在 DBLOGIN 期间提供。使用的是客户端密钥,而不是数据库密码。

此配置适用于使用 Entra ID 服务主体的基于插件的 OAuth 验证。

验证的工作方式

GoldenGate 验证流如下所示:

  1. GoldenGate 接收 DBLOGIN USERIDALIAS ali_entra_u1。
  2. 它在 CredentialStore 中解析 ali_entra_u1。
  3. 将条目标识为 Entra ID 身份证明。
  4. 从 CredentialStore 读取客户机密钥。
  5. 从 cdb1_pdb1 连接描述符读取剩余的 Entra ID 属性。
  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 中。

添加实体 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 会话。

将 CLIENTSECRET 用于 Entra ID OAuth 验证。将客户机密钥存储在 GoldenGate CredentialStore 中时,请勿使用 NOPASSWORD。

注意