Autenticar conexión de base de datos OAuth con Microsoft EntraID
EntraID es una forma sin contraseña de autenticarse en la base de datos. Una credencial normal utiliza el nombre de usuario/contraseña para autenticarse con RDBMS. Con EntraID, utilice client_id, tenant_id, app_id_uri y client_secret para conectarse a la base de datos. Estos valores están embebidos en la cadena de conexión de la base de datos.
Oracle GoldenGate soporta la autenticación OAuth de ID de Microsoft Entra permitiendo que un secreto de cliente se almacene en GoldenGate CredentialStore y se proporcione durante DBLOGIN. Se utiliza el secreto de cliente en lugar de una contraseña de base de datos.
Esta configuración está pensada para la autenticación OAuth basada en plugin mediante un principal de servicio de Entra ID.
Funcionamiento de la autenticación
El flujo de autenticación GoldenGate es el siguiente:
- GoldenGate recibe
DBLOGIN USERIDALIAS ali_entra_u1. - Resuelve
ali_entra_u1en CredentialStore. - Identifica la entrada como credencial de ID adicional.
- Lee el secreto de cliente desde CredentialStore.
- Lee los atributos de ID de Entra restantes del descriptor de conexión
cdb1_pdb1. - Establece la sesión de la base de datos mediante la autenticación OAuth del ID de Microsoft Entra.
Requisitos previos
Antes de configurar GoldenGate DBLOGIN para Microsoft EntraID, asegúrese de que:
- La aplicación Microsoft Entra y el principal de servicio están configurados.
- El principal de servicio está autorizado para conectarse a Oracle AI Database de destino.
- El descriptor de conexión de cliente de Oracle contiene los atributos de ID de Entra necesarios.
- GoldenGate CredentialStore está disponible e inicializado.
- El secreto de cliente está disponible para el registro en CredentialStore.
Configurar el Descriptor de Conexión de Base de Datos
El alias EZConnect o TNS que utiliza GoldenGate debe contener los atributos de conexión de Entra ID:
TOKEN_AUTH=AZURE_SERVICE_PRINCIPALTENANT_IDCLIENT_IDAZURE_DB_APP_ID_URI
Por ejemplo:
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)
)
)
El descriptor de conexión almacena las propiedades de conexión no secretas de Entra ID. El secreto de cliente se debe almacenar por separado en GoldenGate CredentialStore.
Adición de la credencial de ID adicional
Utilice la palabra clave CLIENTSECRET para crear una credencial de Entra ID:
ALTER CREDENTIALSTORE ADD USER /@cdb1_pdb1
ALIAS ali_entra_u1
CLIENTSECRET H9pL2~vQeR7nMx3TaK8cWz1YdF4sJ_N6rP_Tx9aK
Dónde:
/@cdb1_pdb1identifica el descriptor de conexión.ali_entra_u1es el alias de credencial GoldenGate.CLIENTSECRETidentifica la credencial como credencial OAuth de ID de Entra.- El valor que sigue a
CLIENTSECRETes el secreto de cliente de la aplicación Entra ID.
Una entrada de ID de Entra CredentialStore solo contiene el secreto de cliente. No contiene un nombre de usuario o contraseña de base de datos.
Conexión mediante el alias de credencial
Después de agregar la credencial, utilice el alias con DBLOGIN:
DBLOGIN USERIDALIAS ali_entra_u1
GoldenGate resuelve el alias y utiliza la siguiente información de autenticación:
CLIENT_ID,TENANT_IDyAZURE_DB_APP_ID_URIdel descriptor de conexión.CLIENTSECRETdesde CredentialStore.
No hay ningún requisito para un nombre de usuario y contraseña de base de datos. En su lugar, GoldenGate proporciona el secreto de cliente a la sesión OAuth del cliente de Oracle.
Utilice CLIENTSECRET para la autenticación de Entra ID OAuth. No utilice NOPASSWORD cuando el secreto de cliente se esté almacenando en GoldenGate CredentialStore.
Consideraciones
- El secreto de cliente debe corresponder a la aplicación Entra ID identificada por
CLIENT_ID. - Los valores
TENANT_ID,CLIENT_IDyAZURE_DB_APP_ID_URIdeben ser consistentes con la configuración de la base de datos de destino y la aplicación Entra ID. - El secreto de cliente está asociado al alias GoldenGate, mientras que los demás parámetros OAuth están asociados al descriptor de conexión a la base de datos.
- No incluya un nombre de usuario o contraseña de base de datos al crear una credencial de ID adicional.
- Utilice un alias de credencial independiente para cada secreto de cliente o conexión de destino según lo requiera su despliegue.
- Proteja el secreto de cliente durante la ejecución del comando y evite grabarlo en secuencias de comandos, historiales de comandos o salidas de diagnóstico.