验证 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 验证流如下所示:
- GoldenGate 接收
DBLOGIN USERIDALIAS ali_entra_u1。 - 它在 CredentialStore 中解析
ali_entra_u1。 - 将条目标识为 Entra ID 身份证明。
- 从 CredentialStore 读取客户机密钥。
- 从
cdb1_pdb1连接描述符读取剩余的 Entra ID 属性。 - 使用 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 中。
添加实体 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 会话。
将 CLIENTSECRET 用于 Entra ID OAuth 验证。将客户机密钥存储在 GoldenGate CredentialStore 中时,请勿使用 NOPASSWORD。
注意
- 客户端密钥必须与
CLIENT_ID标识的 Entra ID 应用程序相对应。 TENANT_ID、CLIENT_ID和AZURE_DB_APP_ID_URI值必须与 Entra ID 应用程序和目标数据库配置一致。- 客户机密钥与 GoldenGate 别名关联,而其他 OAuth 参数与数据库连接描述符关联。
- 创建 Entra ID 身份证明时,请勿包含数据库用户名或密码。
- 根据您的部署要求,为每个客户端密钥或目标连接使用单独的身份证明别名。
- 在命令执行期间保护客户机密钥,并避免将其记录在脚本、命令历史记录或诊断输出中。