Autenticación de la Conexión a la Base de Datos mediante el Plugin de Contraseña de Base de Datos

Oracle GoldenGate 23.5 y versiones posteriores incluye un plugin fácil de usar que permite escribir código personalizado para recuperar credenciales de base de datos de un almacén de terceros y, a continuación, devolverlo en una API predefinida a Oracle GoldenGate.

Con el aumento de las reglas de seguridad incluidas como mejores prácticas por parte de las organizaciones, algunas organizaciones no permiten almacenar las credenciales de la base de datos, como la contraseña, en la cartera local de Oracle GoldenGate (almacén de credenciales). La contraseña se debe almacenar en un almacén fuera de Oracle GoldenGate. Para implementar este método de autenticación, se ha introducido el plugin de contraseña de base de datos. Permite a Oracle GoldenGate recuperar la contraseña de cualquier almacén de terceros de su elección o de OCI Vault, cuando necesita conectarse a una instancia de base de datos.

Obtenga información sobre el flujo de trabajo para activar el plugin de contraseña de base de datos en Oracle GoldenGate y utilícelo para recuperar la contraseña secreta al establecer una conexión de base de datos desde Oracle GoldenGate.

Utilice cualquiera de las siguientes opciones para configurar un servicio de plugin de contraseña de base de datos para Oracle GoldenGate:

API necesarias para el plugin de contraseña de base de datos

Debe existir un mínimo de dos API de función en este plugin. Estas API se describen de la siguiente manera:

getManifest()

Cada plugin debe exponer la función getmanifest que devuelve una cadena de estilo JSON que describe el plugin, como se muestra:

{"$schema": "ogg:plugin", "version": "23.4" }

El número de versión puede ser igual o menor que el número de versión de Oracle GoldenGate. Por ejemplo, si ejecuta Oracle GoldenGate versión 23.6, el número de versión de la cadena JSON podría ser 23.4, 23.5 o 23.6.

getUseridAliasPassword(oggDomain *C.char, oggAlias *C.char, oggUserid *C.char, oggPassword *C.char)

Oracle GoldenGate llama a esta función para recuperar la contraseña de USERIDALIAS.

Devuelve un valor entero. 0 significa éxito y cualquier valor distinto de cero es un fallo.

oggDomain, oggAlias y oggUserid son los parámetros de entrada para identificar las credenciales de usuario de la base de datos. oggPassword es el parámetro de salida que devuelve la contraseña recuperada del almacén.

Configuración del Plugin de Contraseña de Base de Datos para Almacenar y Acceder a la Contraseña de Base de Datos desde un Almacén de Terceros

Para crear, almacenar y recuperar la contraseña secreta de un almacén de terceros de su elección, debe escribir su propio código personalizado. El código debe generar una biblioteca de usuarios compartida, que se utilizaría para activar el plugin como servicio desde Oracle GoldenGate Service Manager. Después de activar el plugin, puede acceder al almacén de terceros para recuperar la contraseña secreta almacenada, al establecer una conexión a la base de datos desde Oracle GoldenGate. Oracle GoldenGate almacena ese USERID como un alias en su almacén de credenciales en domain_name.alias_name. Los valores domain_name y alias_name se utilizan como parámetros de entrada para llamar al plugin. Por ejemplo, si el nombre de dominio es OracleGoldenGate y el alias es ggeastadmin, el nombre del secreto sería OracleGoldenGate.ggeastadmin. El plugin identifica el nombre del secreto para recuperar el secreto (contraseña) del almacén.

El código personalizado se puede escribir en cualquier idioma, siempre y cuando se pueda compilar en una biblioteca de usuarios compartida. Los lenguajes más populares que se pueden utilizar incluyen GoLang, C/C++ y Python.

En el siguiente diagrama se muestra el flujo de trabajo cuando se utiliza el plugin de contraseña de base de datos con Oracle GoldenGate para configurar una conexión de base de datos desde un almacén de terceros. Las USERIDALIAS se almacenan en el almacén de credenciales de Oracle GoldenGate y la contraseña secreta se almacena en el almacén de terceros.

En este diagrama se muestra el proceso paso a paso de cómo funciona el componente Plugin de Contraseña de Oracle GoldenGate en el nuevo flujo de trabajo que implica el almacén de 3ª parte para almacenar la contraseña para el registro en la base de datos.

Utilice los siguientes pasos para configurar el plugin de contraseña de base de datos para almacenar la contraseña de base de datos en un almacén de terceros y recuperarla para autenticar una conexión de base de datos desde Oracle GoldenGate:

  1. Localice el plugin de contraseña de base de datos, que está presente en el directorio GG Service Manager Home/var/lib/plugins/. De manera predeterminada, no hay ninguna biblioteca en este directorio.

    Nota: Aunque no hay restricciones en el nombre de archivo de biblioteca, el plugin solo seleccionará el primer archivo de biblioteca que exista en esta ubicación.

  2. Compruebe las API de función utilizadas con el plugin. Consulte API necesarias para el plugin de contraseña de base de datos para obtener más información.

  3. Escriba y compile el código para crear una biblioteca de usuarios compartida que se utilizaría para activar el plugin de contraseña de base de datos. Debe escribir y compilar el código, según el almacén de terceros que utilice para configurar el plugin de contraseña de base de datos.

  4. Copie la biblioteca de usuarios compilada en el directorio Service_Manager_Home/var/lib/plugins/.

  5. Ejecute el comando de la API de REST para activar el plugin como un nuevo servicio en Service Manager. Suponiendo que el gestor de servicios se está ejecutando localmente en el puerto 9011, el comando tendrá un aspecto similar al siguiente:

    shell>OGG_ADMIN_PASSWORD="xxxx"
    shell>curl -svu "oggadmin:${OGG_ADMIN_PASSWORD}"
    http://127.0.0.1:9011/services/v2/deployments/ServiceManager/services/pluginsrvr \ -XPOST --data '{"$schema":"ogg:service", "config":"external", "enabled":true,
    "critical":true, "status":"running"}'

    Puede ver el estado del plugin desde el Administrador de servicios después de activarlo, como se muestra en la siguiente imagen. Puede ver el servicio como Servicio de plugin en Servicios.

    El plugin de contraseña de base de datos está visible desde la pantalla Service Manager Services después de activarlo.

    Nota: Si utiliza NGINX o un despliegue seguro, debe utilizar https en lugar de http y la ruta de certificado de CA adecuada en la línea de comandos.

  6. Configure las variables de entorno para el almacén de terceros, si es necesario, y reinicie el gestor de servicios.

  7. Configure el almacén de terceros y almacene la contraseña en él.

  8. Ejecute el cliente de administración y configure las credenciales de conexión a la base de datos con la opción PLUGIN o la opción NOPASSWORD utilizada anteriormente y pruebe que la conexión a la base de datos se ha realizado correctamente. El ejemplo siguiente ilustra esta configuración:

    a. Conéctese al despliegue:

     OGG (not connected) 1> CONNECT http://127.0.0.1:9011 AS oggadmin

    b. Agregar credenciales:

    • Mediante la opción Plugin:

      OGG (http://127.0.0.1:9011 Deployment) 2> ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 PLUGIN ALIAS ggeastadmin

      Salida:

      2026-04-02T18:34:14Z  INFO OGG-15114  Credential store altered.
      Credential Type: Plugin
    • Mediante la opción PLUGIN SECRET:

      OGG (http://127.0.0.1:9011 Deployment) 2> ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 PLUGIN SECRET abc ALIAS ggeastadmin

      Salida:

      2026-04-02T18:34:14Z  INFO OGG-15114  Credential store altered.
      Credential Type: Plugin Secret
    • Mediante la opción NOPASSWORD heredada, mediante el siguiente comando:

      ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 NOPASSWORD ALIAS u1alias;

    c. Conéctese a la base de datos con el alias de credencial:

     OGG (http://127.0.0.1:9011 Deployment) 3> DBLOGIN USERIDALIAS ggadmin

Configuración del plugin de contraseña de base de datos para almacenar y acceder a la contraseña de base de datos desde OCI Vault

Para crear, almacenar y recuperar la contraseña secreta de OCI Vault, puede utilizar el código de ejemplo, que muestra cómo recuperar la contraseña secreta de OCI Vault. Oracle GoldenGate almacena el USERID como alias en su almacén de credenciales en domain_name.alias_name. La contraseña se almacena en OCI Vault como un secreto con el nombre de secreto domain_name.alias_name. Por ejemplo, si el nombre de dominio es OracleGoldenGate y el alias es ggeastadmin, el nombre del secreto sería OracleGoldenGate.ggeastadmin. El plugin identifica el nombre del secreto para recuperar el secreto (contraseña) del almacén.

En los pasos del diagrama se muestra el flujo de trabajo para configurar el plugin de contraseña de base de datos con OCI Vault:

Flujo de trabajo para configurar el plugin de contraseña de base de datos con OCI Vault para conectarse a la base de datos desde Oracle GoldenGate.

  1. Cree una contraseña en OCI Vault.

  2. Verifique que el secreto se ha creado en OCI Vault que contiene la contraseña para este usuario de base de datos `ggeastadmin`. Asegúrese de que el nombre del secreto coincide con la convención de nomenclatura esperada, por ejemplo, `OracleGoldenGate.ggeastadmin` con el formato `domain_name.alias_name`. ![En OCI Vault, el nombre del secreto debe coincidir con la convención de nomenclatura esperada, por ejemplo, OracleGoldenGate.ggeastadmin con el formato domain_name.alias_name.](images/vault-1.png " ")
  3. Localice el plugin de contraseña de base de datos, que está presente en el directorio GG Service Manager Home/var/lib/plugins/. De manera predeterminada, no hay ninguna biblioteca en este directorio.

    Nota: Aunque no hay restricciones en el nombre de archivo de biblioteca, el plugin solo seleccionará el primer archivo de biblioteca que exista en esta ubicación.

  4. Compruebe las API de función que necesita utilizar con el plugin. Consulte API necesarias para el plugin de contraseña de base de datos para obtener más información.

  5. Acceda al código de ejemplo desde OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go para generar la biblioteca de usuarios compartidos.

  6. Compile el código ejecutando el comando make desde OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go. Esto genera la biblioteca de usuarios, denominada libOCIVault.so.

  7. Copie la biblioteca de usuarios libOCIVault.so en el directorio Service_Manager_Home/var/lib/plugins/.

  8. Emita el comando de la API de REST para activar este plugin como un nuevo servicio en Service Manager. Suponiendo que el gestor de servicios se está ejecutando localmente en el puerto 9011, el comando tendrá un aspecto similar al siguiente:

    shell>OGG_ADMIN_PASSWORD="xxxx"
    shell>curl -svu "oggadmin:${OGG_ADMIN_PASSWORD}"
    http://127.0.0.1:9011/services/v2/deployments/ServiceManager/services/pluginsrvr \ -XPOST --data '{"$schema":"ogg:service", "config":"external", "enabled":true,
    "critical":true, "status":"running"}'

    Puede ver el estado del plugin desde el Administrador de servicios después de activarlo, como se muestra en la siguiente imagen. Puede ver el servicio como Servicio de plugin en Servicios.

    El plugin de contraseña de base de datos está visible desde la pantalla Service Manager Services después de activarlo.

    Nota: Si utiliza NGINX o un despliegue seguro, debe utilizar https en lugar de http y la ruta de certificado de CA adecuada en la línea de comandos.

  9. En la interfaz web de Service Manager, defina las variables de entorno OCI_AUTH y OCID_VAULT_OCID en los siguientes valores:

    • OCI_AUTH = instance_principal: en este ejemplo se ha utilizado el método de autenticación instance_principal. Sin embargo, el plugin de contraseña de base de datos soporta los siguientes métodos de autenticación para OCI Vault, incluidos:

      • instance_pricinpal: autenticación de entidad de instancia.

      • DEFAULT: perfil por defecto en el archivo de configuración de OCI.

      • Nombre personalizado: perfil personalizado en el archivo de configuración de OCI.

      • OCID_VAULT_OCID = ocid1.vault.oc1-us-sanjose-1.exxxxxxxxxxxxxxxxxx42upinp4mfxwta: este valor se deriva del paso 2.

        Ambas variables de entorno se deben configurar correctamente en la sección de variables de entorno en la configuración del gestor de servicios.

        Defina las variables de entorno OCI_AUTH y OCI_VAULT_OCID.

        Nota: Si utiliza NGINX o un despliegue seguro, debe utilizar https en lugar de http y la ruta de certificado de CA adecuada en la línea de comandos.

  10. Reinicie el Administrador de servicios para activar la configuración.

  11. Identifique la instancia de VM en la que se ejecuta Oracle GoldenGate Service Manager.

  12. Agregue la instancia de VM a un grupo dinámico para que la autenticación instance_principal funcione.

  13. Asigne una etiqueta para la instancia de VM, por ejemplo, EASTVaultTest. Esto facilitaría la creación de grupos dinámicos. Consulte Gestión de grupos dinámicos para obtener más información. El grupo dinámico necesita una política para utilizar el secreto en ese almacén.

  14. Cree una política para permitir que este grupo dinámico utilice el recurso secreto (contraseña secreta). Para obtener más información sobre la creación de políticas para controlar el acceso al servicio Vault, consulte Detalles para el servicio Vault.

    Política para acceder a la contraseña secreta desde OCI Vault

  15. Ejecute el cliente de administración para crear un alias de conexión a la base de datos con la opción NOPASSWORD y pruebe que la conexión se ha realizado correctamente, como se muestra en el siguiente ejemplo:

    OGG (not connected) 1> CONNECT http://127.0.0.1:9011 AS oggadmin
    Using default deployment 'Deployment'
    OGG (http://127.0.0.1:9011 Deployment) 2> ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 ALIAS ggeastadmin NOPASSWORD
    2024-04-02T18:34:14Z  INFO    OGG-15114  Credential store altered.
    OGG (http://127.0.0.1:9011 Deployment) 3> DBLOGIN USERIDALIAS ggadmin
    Successfully logged into database.

Configurar el plugin de contraseña de base de datos para almacenar y acceder a la contraseña de base de datos desde Oracle Key Vault

Oracle GoldenGate 23.5 y versiones posteriores incluyen un servicio de plugin que permite escribir código personalizado para recuperar credenciales de base de datos de un almacén de terceros y, a continuación, devolver las credenciales de una API predefinida a Oracle GoldenGate, como se menciona en Configurar el plugin de contraseña de base de datos para almacenar y acceder a la contraseña de base de datos desde un almacén de terceros. Esta función incluye la biblioteca libokvoggdbpwd.so que se puede configurar en Oracle GoldenGate para gestionar las contraseñas de Oracle Key Vault.

El siguiente diagrama representa el flujo de trabajo entre Oracle GoldenGate y Oracle Key Vault para configurar el servicio de plugin y, a continuación, utilizar la biblioteca de plugins de OKV para solicitar y recuperar contraseñas de base de datos del servidor de Oracle Key Vault.

Flujo de trabajo para representar el proceso de configuración del servicio de plugin para recuperar contraseñas de base de datos de OKV para procesos de Oracle GoldenGate.

El proceso de almacenamiento y recuperación de las contraseñas de base de datos de Oracle Key Vault se puede resumir de la siguiente manera:

  1. El administrador de Oracle GoldenGate utiliza la utilidad de servicios RESTful para cargar contraseñas de Oracle GoldenGate en Oracle Key Vault.

  2. Oracle GoldenGate solicita las credenciales de base de datos del servidor de Oracle Key Vault mediante la biblioteca de plugins libokvoggdbpwd.so. Esta contraseña se recupera del servidor de OKV después de validaciones de backend correctas.

  3. Una vez recuperada la contraseña, los procesos de Oracle GoldenGate podrán conectarse a la base de datos mediante una contraseña almacenada de forma remota.

Consulte la sección sobre centralización de la gestión de contraseñas de Oracle GoldenGate en la Guía del administrador de Oracle Key Vault para obtener más información sobre la implantación de esta función para el almacenamiento y la recuperación de contraseñas de la base de datos Oracle GoldenGate.