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:

  1. GoldenGate recibe DBLOGIN USERIDALIAS ali_entra_u1.
  2. Resuelve ali_entra_u1 en CredentialStore.
  3. Identifica la entrada como credencial de ID adicional.
  4. Lee el secreto de cliente desde CredentialStore.
  5. Lee los atributos de ID de Entra restantes del descriptor de conexión cdb1_pdb1.
  6. 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:

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:

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:

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:

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