Autenticare la connessione al database mediante il plugin password del database

Oracle GoldenGate 23.5 e versioni successive include un plugin intuitivo che consente di scrivere codice personalizzato per recuperare le credenziali del database da un vault di terze parti e quindi restituirle in un'API predefinita a Oracle GoldenGate.

Grazie all'aumento delle regole di sicurezza incluse come best practice dalle organizzazioni, alcune organizzazioni non consentono di memorizzare le credenziali del database, ad esempio la password, nel wallet locale (area di memorizzazione delle credenziali) di Oracle GoldenGate. La password deve essere memorizzata in un vault esterno a Oracle GoldenGate. Per implementare questo metodo di autenticazione, è stato introdotto il plugin password database. Consente a Oracle GoldenGate di recuperare la password da qualsiasi vault di terze parti di tua scelta o da OCI Vault, quando è necessario connettersi a un'istanza di database.

Informazioni sul workflow per abilitare il plugin Password database in Oracle GoldenGate e utilizzarlo per recuperare la password segreta quando si stabilisce una connessione al database da Oracle GoldenGate.

Utilizzare una delle opzioni riportate di seguito per impostare un servizio plugin password database per Oracle GoldenGate.

API richieste per il plugin password database

In questo plugin devono esistere almeno due API funzione. Di seguito sono riportate le interfacce API descritte.

getManifest()

Ogni plugin deve esporre la funzione getmanifest che restituisce una stringa di stile JSON che descrive il plugin, come mostrato di seguito.

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

Il numero di versione può essere uguale o inferiore al numero di versione di Oracle GoldenGate. Ad esempio, se si esegue Oracle GoldenGate versione 23.6, il numero di versione nella stringa JSON potrebbe essere 23.4, 23.5 o 23.6.

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

Questa funzione viene chiamata da Oracle GoldenGate per recuperare la password per un USERIDALIAS.

Restituisce un valore intero. 0 significa operazione riuscita e qualsiasi valore diverso da zero è un errore.

oggDomain, oggAlias e oggUserid sono i parametri di input per identificare le credenziali utente del database. oggPassword è il parametro di output che restituisce la password recuperata dal vault.

Configurare il plugin Password database per memorizzare e accedere alla password del database da un vault di terze parti

Per creare, archiviare e recuperare la password segreta da un vault di terze parti di tua scelta, devi scrivere il tuo codice personalizzato. Il codice deve generare una libreria utente condivisa, che verrà utilizzata per attivare il plugin come servizio da Oracle GoldenGate Service Manager. Dopo l'attivazione del plugin, è possibile accedere al vault di terze parti per recuperare la password del segreto memorizzato quando si stabilisce una connessione al database da Oracle GoldenGate. Oracle GoldenGate memorizza tale USERID come alias nell'area di memorizzazione delle credenziali in domain_name.alias_name. domain_name e alias_name vengono utilizzati come parametri di input per chiamare il plugin. Ad esempio, se il nome di dominio è OracleGoldenGate e l'alias è ggeastadmin, il nome del segreto sarà OracleGoldenGate.ggeastadmin. Il plugin identifica il nome segreto per recuperare il segreto (password) dal vault.

Il codice personalizzato può essere scritto in qualsiasi lingua purché possa essere compilato in una libreria utenti condivisa. I linguaggi più popolari che possono essere utilizzati includono GoLang, C/C++ e Python.

Il diagramma riportato di seguito mostra il workflow quando il plugin password database viene utilizzato con Oracle GoldenGate per impostare una connessione al database da un vault di terze parti. USERIDALIAS viene memorizzato nell'area di memorizzazione delle credenziali di Oracle GoldenGate e la password segreta viene memorizzata nel vault di terze parti.

Questo diagramma mostra il processo passo-passo del funzionamento del componente Plugin password Oracle GoldenGate nel nuovo workflow che coinvolge il vault 3rd-party per memorizzare la password per il login al database.

Utilizzare i passi riportati di seguito per configurare il plugin password database per memorizzare la password del database in un vault di terze parti e recuperarla per autenticare una connessione al database da Oracle GoldenGate.

  1. Individuare il plugin password database presente nella directory GG Service Manager Home/var/lib/plugins/. Per impostazione predefinita, non è presente alcuna libreria in questa directory.

    Nota: sebbene il nome del file della libreria non sia soggetto a limitazioni, il plugin raccoglierà solo il primo file della libreria esistente in questa posizione.

  2. Controllare le API di funzione utilizzate con il plugin. Per ulteriori informazioni, vedere API richieste per il plugin password database.

  3. Scrivere e compilare il codice per creare una libreria utenti condivisa che verrà utilizzata per attivare il plugin password database. È necessario scrivere e compilare il codice in base al vault di terze parti utilizzato per impostare il plugin password database.

  4. Copiare la libreria utenti compilata nella directory Service_Manager_Home/var/lib/plugins/.

  5. Eseguire il comando API REST per attivare il plugin come nuovo servizio in Service Manager. Supponendo che Service Manager sia in esecuzione localmente sulla porta 9011, il comando avrà un aspetto simile al seguente:

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

    È possibile visualizzare lo stato del plugin da Service Manager dopo che è stato attivato, come mostrato nella seguente immagine. È possibile visualizzare il servizio come Servizio plugin in Servizi.

    Il plugin password database è visibile dalla schermata Service Manager Services dopo che è stato abilitato.

    Nota: se si utilizza NGINX o una distribuzione protetta, è necessario utilizzare https anziché http e il percorso del certificato CA appropriato nella riga di comando.

  6. Impostare eventuali variabili di ambiente per il vault di terze parti, se necessario, e riavviare Service Manager.

  7. Configurare il vault di terze parti e memorizzarvi la password.

  8. Eseguire il client di amministrazione e impostare le credenziali di login al database con l'opzione PLUGIN o l'opzione NOPASSWORD utilizzata in precedenza e verificare che la connessione al database sia riuscita. Nell'esempio seguente viene illustrata questa configurazione.

    a. Connettersi alla distribuzione:

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

    b. Aggiunta credenziali:

    • Utilizzando l'opzione Plugin:

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

      Output:

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

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

      Output:

      2026-04-02T18:34:14Z  INFO OGG-15114  Credential store altered.
      Credential Type: Plugin Secret
    • Usando l'opzione NOPASSWORD legacy, usare il comando seguente:

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

    c. Eseguire il login al database utilizzando l'alias delle credenziali:

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

Configurare il plugin Password database per memorizzare e accedere alla password del database da OCI Vault

Per creare, memorizzare e recuperare la password segreta da OCI Vault, è possibile utilizzare il codice di esempio, che mostra come recuperare la password segreta dal vault OCI. Oracle GoldenGate memorizza USERID come alias nell'area di memorizzazione delle credenziali in domain_name.alias_name. La password viene memorizzata in OCI Vault come segreto con il nome segreto domain_name.alias_name. Ad esempio, se il nome del dominio è OracleGoldenGate e l'alias è ggeastadmin, il nome del segreto sarà OracleGoldenGate.ggeastadmin. Il plugin identifica il nome segreto per recuperare il segreto (password) dal vault.

I passi nel diagramma mostrano il workflow per l'impostazione del plugin password database con OCI Vault:

Workflow per la configurazione del plugin Password database con OCI Vault per la connessione al database da Oracle GoldenGate.

  1. Creare una password nel vault OCI.

  2. Verificare che il segreto sia stato creato nel vault OCI contenente la password per questo utente del database `ggeastadmin`. Assicurarsi che il nome segreto corrisponda alla convenzione di denominazione prevista, ad esempio `OracleGoldenGate.ggeastadmin` nel formato `domain_name.alias_name`. ![Nel vault OCI, il nome segreto deve corrispondere alla convenzione di denominazione prevista, ad esempio OracleGoldenGate.ggeastadmin nel formato domain_name.alias_name.](images/vault-1.png " ")
  3. Individuare il plugin password database presente nella directory GG Service Manager Home/var/lib/plugins/. Per impostazione predefinita, non è presente alcuna libreria in questa directory.

    Nota: sebbene il nome del file della libreria non sia soggetto a limitazioni, il plugin raccoglierà solo il primo file della libreria esistente in questa posizione.

  4. Controllare le API di funzione che è necessario utilizzare con il plugin. Per ulteriori informazioni, vedere API richieste per il plugin password database.

  5. Accedere al codice di esempio da OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go per generare la libreria utenti condivisa.

  6. Compilare il codice eseguendo il comando make da OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go. La libreria utenti viene generata con il nome libOCIVault.so.

  7. Copiare la libreria utenti libOCIVault.so nella directory Service_Manager_Home/var/lib/plugins/.

  8. Eseguire il comando API REST per attivare questo plugin come nuovo servizio in Gestione servizi. Supponendo che Service Manager sia in esecuzione localmente sulla porta 9011, il comando avrà un aspetto simile al seguente:

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

    È possibile visualizzare lo stato del plugin da Service Manager dopo che è stato attivato, come mostrato nella seguente immagine. È possibile visualizzare il servizio come Servizio plugin in Servizi.

    Il plugin password database è visibile dalla schermata Service Manager Services dopo che è stato abilitato.

    Nota: se si utilizza NGINX o una distribuzione protetta, è necessario utilizzare https anziché http e il percorso del certificato CA appropriato nella riga di comando.

  9. Nell'interfaccia Web di Service Manager impostare le variabili di ambiente OCI_AUTH e OCID_VAULT_OCID sui valori seguenti:

    • OCI_AUTH = instance_principal: in questo esempio è stato utilizzato il metodo di autenticazione instance_principal. Tuttavia, il plugin Password database supporta i seguenti metodi di autenticazione per OCI Vault, tra cui:

      • instance_pricinpal: autenticazione principal dell'istanza.

      • DEFAULT: profilo predefinito nel file di configurazione OCI.

      • Nome personalizzato: profilo personalizzato nel file di configurazione OCI.

      • OCID_VAULT_OCID = ocid1.vault.oc1-us-sanjose-1.exxxxxxxxxxxxxxxxxx42upinp4mfxwta: questo valore deriva dal passo 2.

        Entrambe queste variabili di ambiente devono essere impostate correttamente nella sezione Variabile di ambiente sotto Configurazione di Service Manager.

        Impostare le variabili di ambiente OCI_AUTH e OCI_VAULT_OCID.

        Nota: se si utilizza NGINX o una distribuzione protetta, è necessario utilizzare https anziché http e il percorso del certificato CA appropriato nella riga di comando.

  10. Riavviare Service Manager per attivare le impostazioni.

  11. Identificare l'istanza VM in cui è in esecuzione Oracle GoldenGate Service Manager.

  12. Aggiungere l'istanza VM a un gruppo dinamico per eseguire l'autenticazione instance_principal.

  13. Assegnare una tag per l'istanza VM, ad esempio EASTVaultTest. Ciò faciliterebbe la creazione di gruppi dinamici. Per informazioni dettagliate, vedere Gestione dei gruppi dinamici. Il gruppo dinamico ha bisogno di un criterio per utilizzare il segreto in tale vault.

  14. Creare un criterio per consentire a questo gruppo dinamico di utilizzare la risorsa segreta (password segreta). Per i dettagli sulla creazione dei criteri per controllare l'accesso al servizio vault, vedere Dettagli per il servizio vault.

    Criterio per l'accesso alla password segreta da OCI Vault

  15. Eseguire il client di amministrazione per creare l'alias di login al database con l'opzione NOPASSWORD e verificare che la connessione sia riuscita, come mostrato nell'esempio riportato di seguito.

    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.

Configurare il plugin Password database per memorizzare e accedere alla password del database da Oracle Key Vault

Le release successive di Oracle GoldenGate 23.5 includono un servizio di plugin che consente di scrivere codice personalizzato per il recupero delle credenziali del database da un vault di terze parti, quindi di restituire le credenziali in un'API predefinita a Oracle GoldenGate, come indicato in Configurare il plugin password del database per memorizzare e accedere alla password del database da un vault di terze parti. Questa funzione include la libreria libokvoggdbpwd.so che può essere configurata in Oracle GoldenGate per gestire le password da Oracle Key Vault.

Il diagramma riportato di seguito rappresenta il workflow tra Oracle GoldenGate e Oracle Key Vault per configurare il servizio plugin e quindi utilizzare la libreria di plugin OKV per richiedere e recuperare le password del database dal server Oracle Key Vault.

Workflow per rappresentare il processo di configurazione del servizio plugin per recuperare le password del database da OKV per i processi Oracle GoldenGate.

Il processo di memorizzazione e recupero delle password del database da Oracle Key Vault può essere riepilogato come indicato di seguito.

  1. L'amministratore di Oracle GoldenGate utilizza la utility dei servizi RESTful per caricare le password di Oracle GoldenGate in Oracle Key Vault.

  2. Oracle GoldenGate richiede le credenziali del database dal server Oracle Key Vault utilizzando la libreria di plugin libokvoggdbpwd.so. Questa password viene recuperata dal server OKV dopo le convalide backend riuscite.

  3. Dopo il recupero della password, i processi di Oracle GoldenGate saranno in grado di connettersi al database utilizzando una password memorizzata in remoto.

Per informazioni dettagliate sull'implementazione di questa funzione per lo storage e il recupero delle password del database Oracle GoldenGate, vedere Centralizing the Management of Oracle GoldenGate Passwords nel manuale Oracle Key Vault Administrator's Guide.