Authentification de la connexion à la base de données à l'aide du module d'extension de mot de passe de base de données

Oracle GoldenGate 23.5 et versions ultérieures inclut un module d'extension convivial qui permet d'écrire du code personnalisé pour extraire les informations d'identification de base de données d'un coffre tiers, puis de le renvoyer dans une API prédéfinie vers Oracle GoldenGate.

Avec l'augmentation des règles de sécurité incluses dans les meilleures pratiques des entreprises, certaines organisations n'autorisent pas le stockage des informations d'identification de base de données, telles que le mot de passe, dans le portefeuille local d'Oracle GoldenGate (banque d'informations d'identification). Le mot de passe doit être stocké dans un coffre en dehors d'Oracle GoldenGate. Pour implémenter cette méthode d'authentification, le module d'extension de mot de passe de base de données a été introduit. Elle permet à Oracle GoldenGate d'extraire le mot de passe de n'importe quel coffre tiers de votre choix ou d'OCI Vault, lorsqu'il doit se connecter à une instance de base de données.

Découvrez le workflow permettant d'activer le module d'extension de mot de passe de base de données dans Oracle GoldenGate et de l'utiliser pour extraire le mot de passe secret lors de l'établissement d'une connexion de base de données à partir d'Oracle GoldenGate.

Utilisez l'une des options suivantes pour configurer un service de module d'extension de mot de passe de base de données pour Oracle GoldenGate :

API requises pour le module d'extension de mot de passe de base de données

Au moins deux API de fonction doivent exister dans ce module d'extension. Ces API sont décrites comme suit :

getManifest()

Chaque module d'extension doit exposer la fonction getmanifest qui renvoie une chaîne de style JSON décrivant le module d'extension, comme indiqué ci-dessous :

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

Le numéro de version peut être inférieur ou égal au numéro de version d'Oracle GoldenGate. Par exemple, si vous exécutez Oracle GoldenGate version 23.6, le numéro de version dans la chaîne JSON peut être 23.4, 23.5 ou 23.6.

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

Cette fonction est appelée par Oracle GoldenGate pour extraire le mot de passe d'une instance USERIDALIAS.

Renvoie une valeur entière. 0 signifie succès et toute valeur différente de zéro est échec.

oggDomain, oggAlias et oggUserid sont les paramètres d'entrée permettant d'identifier les informations d'identification de l'utilisateur de base de données. oggPassword est le paramètre de sortie qui renvoie le mot de passe extrait du coffre.

Configurer le module d'extension de mot de passe de base de données pour stocker le mot de passe de base de données et y accéder à partir d'un coffre tiers

Pour créer, stocker et extraire le mot de passe secret d'un coffre tiers de votre choix, vous devez écrire votre propre code personnalisé. Le code doit générer une bibliothèque utilisateur partagée, qui sera utilisée pour activer le module d'extension en tant que service à partir d'Oracle GoldenGate Service Manager. Une fois le module d'extension activé, vous pouvez accéder au coffre tiers pour extraire le mot de passe de clé secrète stocké lors de l'établissement d'une connexion de base de données à partir d'Oracle GoldenGate. Oracle GoldenGate stocke cet USERID en tant qu'alias dans sa banque d'informations d'identification sous domain_name.alias_name. Les paramètres domain_name et alias_name sont utilisés comme paramètres d'entrée pour appeler le module d'extension. Par exemple, si le nom de domaine est OracleGoldenGate et que l'alias est ggeastadmin, le nom de clé secrète est OracleGoldenGate.ggeastadmin. Le module d'extension identifie le nom de clé secrète pour extraire la clé secrète (mot de passe) du coffre.

Le code personnalisé peut être écrit dans n'importe quelle langue tant qu'il peut être compilé dans une bibliothèque d'utilisateurs partagée. Les langages les plus populaires pouvant être utilisés sont GoLang, C/C++ et Python.

Le diagramme suivant présente le workflow lorsque le module d'extension de mot de passe de base de données est utilisé avec Oracle GoldenGate pour configurer une connexion de base de données à partir d'un coffre tiers. L'utilisateur USERIDALIAS est stocké dans la banque d'informations d'identification Oracle GoldenGate et le mot de passe de clé secrète est stocké dans le coffre tiers.

Ce diagramme présente le processus étape par étape du fonctionnement du composant de module d'extension de mot de passe Oracle GoldenGate dans le nouveau workflow qui implique un coffre 3e partie pour stocker le mot de passe de connexion à la base de données.

Pour configurer le module d'extension de mot de passe de base de données afin de stocker le mot de passe de base de données dans un coffre tiers et de l'extraire pour authentifier une connexion de base de données à partir d'Oracle GoldenGate, procédez comme suit :

  1. Localisez le module d'extension de mot de passe de base de données, qui se trouve dans le répertoire GG Service Manager Home/var/lib/plugins/. Par défaut, il n'y a pas de bibliothèque sous ce répertoire.

    Remarque : bien qu'il n'y ait aucune restriction sur le nom du fichier de bibliothèque, le plug-in ne récupère que le premier fichier de bibliothèque qui existe à cet emplacement.

  2. Vérifiez les API de fonction utilisées avec le module d'extension. Pour plus de détails, reportez-vous à API requises pour le module d'extension de mot de passe de base de données.

  3. Ecrivez et compilez le code pour créer une bibliothèque utilisateur partagée qui serait utilisée pour activer le module d'extension de mot de passe de base de données. Vous devez écrire et compiler le code en fonction du coffre tiers que vous utilisez pour configurer le module d'extension de mot de passe de base de données.

  4. Copiez la bibliothèque utilisateur compilée dans le répertoire Service_Manager_Home/var/lib/plugins/.

  5. Exécutez la commande d'API REST pour activer le module d'extension en tant que nouveau service sous Service Manager. En supposant que le gestionnaire de services s'exécute localement sur le port 9011, la commande se présente comme suit :

    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"}'

    Vous pouvez afficher le statut du module d'extension à partir du gestionnaire de services après son activation, comme indiqué dans l'image suivante. Vous pouvez afficher le service en tant que service Plugin sous Services.

    Le module d'extension de mot de passe de base de données est visible à partir de l'écran Service Manager Services après son activation.

    Remarque : si vous utilisez NGINX ou un déploiement sécurisé, vous devez utiliser https au lieu de http et le chemin de certificat CA approprié dans la ligne de commande.

  6. Configurez les variables d'environnement pour le coffre tiers, si nécessaire, et redémarrez le gestionnaire de services.

  7. Configurez le coffre tiers et stockez-y le mot de passe.

  8. Exécutez le client d'administration et configurez les informations d'identification de connexion à la base de données à l'aide de l'option PLUGIN ou de l'option NOPASSWORD précédemment utilisée, puis vérifiez que la connexion à la base de données a réussi. L'exemple suivant illustre cette configuration :

    a. Connectez-vous au déploiement :

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

    b. Ajoutez des informations d'identification :

    • Utilisez l'option Plugin :

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

      Sortie :

      2026-04-02T18:34:14Z  INFO OGG-15114  Credential store altered.
      Credential Type: Plugin
    • Utilisez l'option PLUGIN SECRET :

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

      Sortie :

      2026-04-02T18:34:14Z  INFO OGG-15114  Credential store altered.
      Credential Type: Plugin Secret
    • A l'aide de l'option NOPASSWORD héritée, utilisez la commande suivante :

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

    c. Connectez-vous à la base de données à l'aide de l'alias d'informations d'identification :

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

Configurer le module d'extension de mot de passe de base de données pour stocker le mot de passe de base de données et y accéder à partir d'OCI Vault

Pour créer, stocker et extraire le mot de passe secret à partir d'OCI Vault, vous pouvez utiliser l'exemple de code, qui indique comment extraire le mot de passe secret à partir d'OCI Vault. Oracle GoldenGate stocke l'USERID en tant qu'alias dans sa banque d'informations d'identification sous domain_name.alias_name. Le mot de passe est stocké dans OCI Vault en tant que clé secrète sous le nom de clé secrète domain_name.alias_name. Par exemple, si le nom de domaine est OracleGoldenGate et que l'alias est ggeastadmin, le nom de clé secrète est OracleGoldenGate.ggeastadmin. Le module d'extension identifie le nom de clé secrète pour extraire la clé secrète (mot de passe) du coffre.

Les étapes du diagramme illustrent le workflow de configuration du module d'extension de mot de passe de base de données avec OCI Vault :

Workflow de configuration du module d'extension de mot de passe de base de données avec OCI Vault pour la connexion à la base de données à partir d'Oracle GoldenGate.

  1. Créez un mot de passe dans OCI Vault.

  2. Vérifiez que la clé secrète est créée dans le coffre OCI qui contient le mot de passe de cet utilisateur de base de données `ggeastadmin`. Assurez-vous que le nom de clé secrète correspond à la convention de dénomination attendue, par exemple, `OracleGoldenGate.ggeastadmin` au format `domain_name.alias_name`. ![Dans le coffre OCI, le nom de clé secrète doit correspondre à la convention de dénomination attendue, par exemple, OracleGoldenGate.ggeastadmin au format domain_name.alias_name.](images/vault-1.png ")
  3. Localisez le module d'extension de mot de passe de base de données, qui se trouve dans le répertoire GG Service Manager Home/var/lib/plugins/. Par défaut, il n'y a pas de bibliothèque sous ce répertoire.

    Remarque : bien qu'il n'y ait aucune restriction sur le nom du fichier de bibliothèque, le plug-in ne récupère que le premier fichier de bibliothèque qui existe à cet emplacement.

  4. Vérifiez les API de fonction que vous devez utiliser avec le plug-in. Pour plus de détails, reportez-vous à API requises pour le module d'extension de mot de passe de base de données.

  5. Accédez à l'exemple de code à partir de OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go pour générer la bibliothèque utilisateur partagée.

  6. Compilez le code en exécutant la commande make à partir de OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go. Cette opération génère la bibliothèque d'utilisateurs, nommée libOCIVault.so.

  7. Copiez la bibliothèque utilisateur libOCIVault.so dans le répertoire Service_Manager_Home/var/lib/plugins/.

  8. Exécutez la commande d'API REST pour activer ce module d'extension en tant que nouveau service sous Service Manager. En supposant que le gestionnaire de services s'exécute localement sur le port 9011, la commande se présente comme suit :

    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"}'

    Vous pouvez afficher le statut du module d'extension à partir du gestionnaire de services après son activation, comme indiqué dans l'image suivante. Vous pouvez afficher le service en tant que service Plugin sous Services.

    Le module d'extension de mot de passe de base de données est visible à partir de l'écran Service Manager Services après son activation.

    Remarque : si vous utilisez NGINX ou un déploiement sécurisé, vous devez utiliser https au lieu de http et le chemin de certificat d'autorité de certification approprié dans la ligne de commande.

  9. Dans l'interface Web de Service Manager, définissez les variables d'environnement OCI_AUTH et OCID_VAULT_OCID sur les valeurs suivantes :

    • OCI_AUTH = instance_principal : la méthode d'authentification instance_principal a été utilisée dans cet exemple. Toutefois, le module d'extension de mot de passe de base de données prend en charge les méthodes d'authentification suivantes pour OCI Vault, notamment :

      • instance_pricinpal : authentification par le principal d'instance.

      • DEFAULT : profil par défaut dans le fichier de configuration OCI.

      • Nom personnalisé : profil personnalisé dans le fichier de configuration OCI.

      • OCID_VAULT_OCID = ocid1.vault.oc1-us-sanjose-1.exxxxxxxxxxxxxxxxxx42upinp4mfxwta : cette valeur est dérivée de l'étape 2.

        Ces deux variables d'environnement doivent être configurées correctement dans la section relative aux variables d'environnement sous Configuration du gestionnaire de services.

        Définissez les variables d'environnement OCI_AUTH et OCI_VAULT_OCID.

        Remarque : si vous utilisez NGINX ou un déploiement sécurisé, vous devez utiliser https au lieu de http et le chemin de certificat d'autorité de certification approprié dans la ligne de commande.

  10. Redémarrez le gestionnaire de services pour activer les paramètres.

  11. Identifiez l'instance de machine virtuelle sur laquelle Oracle GoldenGate Service Manager est exécuté.

  12. Ajoutez l'instance de machine virtuelle à un groupe dynamique pour que l'authentification instance_principal fonctionne.

  13. Affectez une balise à l'instance de machine virtuelle, par exemple, EASTVaultTest. Cela faciliterait la création de groupes dynamiques. Pour plus de détails, reportez-vous à Gestion des groupes dynamiques. Le groupe dynamique a besoin d'une stratégie pour utiliser la clé secrète dans ce coffre.

  14. Créez une stratégie pour autoriser ce groupe dynamique à utiliser la ressource secrète (mot de passe secret). Pour plus de détails sur la création d'une stratégie permettant de contrôler l'accès au service Vault, reportez-vous à Détails du service Vault.

    Stratégie d'accès au mot de passe secret à partir d'OCI Vault

  15. Exécutez le client d'administration pour créer un alias de connexion à la base de données avec l'option NOPASSWORD et vérifiez que la connexion a réussi, comme indiqué dans l'exemple suivant :

    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.

Configurer le module d'extension de mot de passe de base de données pour stocker le mot de passe de base de données et y accéder à partir d'Oracle Key Vault

Oracle GoldenGate 23.5 et versions ultérieures incluent un service de module d'extension qui vous permet d'écrire du code personnalisé pour l'extraction des informations d'identification de base de données à partir d'un coffre tiers, puis de renvoyer les informations d'identification d'une API prédéfinie à Oracle GoldenGate, comme indiqué dans Configuration du module d'extension de mot de passe de base de données pour stocker le mot de passe de base de données et y accéder à partir d'un coffre tiers. Cette fonctionnalité inclut la bibliothèque libokvoggdbpwd.so qui peut être configurée dans Oracle GoldenGate pour gérer les mots de passe à partir d'Oracle Key Vault.

Le diagramme suivant représente le workflow entre Oracle GoldenGate et Oracle Key Vault pour configurer le service de module d'extension, puis utiliser la bibliothèque de modules d'extension OKV pour demander et extraire les mots de passe de base de données du serveur Oracle Key Vault.

Workflow permettant de représenter le processus de configuration du service de module d'extension pour extraire les mots de passe de base de données d'OKV pour les processus Oracle GoldenGate.

Le processus de stockage et d'extraction des mots de passe de base de données à partir d'Oracle Key Vault peut être résumé comme suit :

  1. L'administrateur Oracle GoldenGate utilise l'utilitaire de services RESTful pour télécharger les mots de passe Oracle GoldenGate vers Oracle Key Vault.

  2. Oracle GoldenGate demande les informations d'identification de base de données à partir du serveur Oracle Key Vault à l'aide de la bibliothèque de modules d'extension libokvoggdbpwd.so. Ce mot de passe est extrait du serveur OKV après les validations back-end réussies.

  3. Une fois le mot de passe extrait, les processus Oracle GoldenGate peuvent se connecter à la base de données à l'aide d'un mot de passe stocké à distance.

Pour plus d'informations sur l'implémentation de cette fonctionnalité pour le stockage et l'extraction de mots de passe de base de données Oracle GoldenGate, reportez-vous au guide de l'administrateur Oracle Key Vault dans le guide de l'administrateur Oracle GoldenGate.