使用資料庫密碼外掛程式來驗證資料庫連線
Oracle GoldenGate 23.5 和更新版本包含容易操作的外掛程式,可寫入自訂程式碼以從第三方保存庫擷取資料庫證明資料,然後在預先定義的 API 中將其傳回至 Oracle GoldenGate。
由於組織將安全性規則當作最佳做法所包含的安全性規則增加,部分組織不允許將資料庫證明資料 (例如密碼) 儲存在 Oracle GoldenGate 的本機公事包 (證明資料存放區) 中。密碼必須儲存在 Oracle GoldenGate 以外的保存庫中。為了實作此驗證方法,已導入「資料庫密碼外掛程式」。它允許 Oracle GoldenGate 在需要連線至資料庫執行處理時,從您選擇的任何第三方保存庫或 OCI 保存庫擷取密碼。
瞭解在 Oracle GoldenGate 中啟用「資料庫密碼 Plugin」的工作流程,以及在從 Oracle GoldenGate 建立資料庫連線時使用它來擷取加密密碼密碼。
使用下列任一選項來設定 Oracle GoldenGate 的資料庫密碼 Plugin 服務:
資料庫密碼 Plugin 需要的 API
此外掛程式中至少需要兩個函式 API。這些 API 的描述如下:
getManifest()
每個外掛程式都必須顯示傳回描述外掛程式之 JSON 樣式字串的 getmanifest 函數,如下所示:
{"$schema": "ogg:plugin", "version": "23.4" }
版本號碼可以等於或小於 Oracle GoldenGate 版本號碼。例如,如果您執行的是 Oracle GoldenGate 版本 23.6,則 JSON 字串中的版本號碼可以是 23.4、23.5 或 23.6。
getUseridAliasPassword (oggDomain *C.char, oggAlias *C.char, oggUserid *C.char, oggPassword *C.char)
Oracle GoldenGate 會呼叫此函數來擷取 USERIDALIAS 的密碼。
傳回整數值。0 表示成功,而任何非零的值則表示失敗。
oggDomain、oggAlias 和 oggUserid 是用來識別資料庫使用者證明資料的輸入參數。oggPassword 是傳回從保存庫擷取之密碼的輸出參數。
設定資料庫密碼外掛程式以儲存和存取第三方保存庫的資料庫密碼
若要從您選擇的第三方保存庫建立、儲存及擷取加密密碼密碼,您需要撰寫自己的自訂程式碼。此程式碼需要產生共用使用者程式庫,用來從 Oracle GoldenGate Service Manager 啟用 Plugin 作為服務。在啟用 Plugin 之後,您可以在從 Oracle GoldenGate 建立資料庫連線時,存取第三方保存庫以擷取儲存的加密密碼密碼。Oracle GoldenGate 會將 USERID 儲存為 domain_name.alias_name 底下之證明資料存放區中的別名。domain_name 和 alias_name 是用來作為呼叫 Plugin 的輸入參數。例如,如果網域名稱為 OracleGoldenGate 且別名為 ggeastadmin ,則加密密碼名稱為 OracleGoldenGate.ggeastadmin 。Plugin 可識別要從保存庫擷取加密密碼 (密碼) 的加密密碼名稱。
只要自訂程式碼可以編譯至共用使用者程式庫,就可以使用任何語言撰寫。最受歡迎的語言包括 GoLang、C/C++ 和 Python。
下圖顯示 Oracle GoldenGate 搭配使用「資料庫密碼 Plugin」來設定第三方保存庫的資料庫連線時的工作流程。USERIDALIAS 儲存在 Oracle GoldenGate 證明資料存放區中,加密密碼則儲存在第三方保存庫中。

使用下列步驟來設定「資料庫密碼 Plugin」,以將「資料庫」密碼儲存在第三方保存庫中,然後從 Oracle GoldenGate 擷取以認證資料庫連線:
-
尋找
GG Service Manager Home/var/lib/plugins/目錄中的「資料庫密碼 Plugin」。依照預設,此目錄下沒有程式庫。注意:雖然程式庫檔案名稱沒有限制,但 Plugin 只會選取此位置中存在的第一個程式庫檔案。
-
檢查搭配 Plugin 使用的函數 API。請參閱資料庫密碼 Plugin 需要 API 瞭解詳細資訊。
-
撰寫並編譯程式碼,以建立用來啟用「資料庫密碼 Plugin」的共用使用者程式庫。您必須根據用來設定「資料庫密碼 Plugin」的第三方保存庫,撰寫和編譯程式碼。
-
將編譯的使用者程式庫複製到
Service_Manager_Home/var/lib/plugins/目錄。 -
執行 REST API 命令,以在「服務管理程式」下啟用 Plugin 作為新服務。假設「服務管理程式」是在連接埠 9011 本機執行,則命令的外觀如下:
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"}'啟用 Plugin 後,您可以從「服務管理程式」檢視 Plugin 的狀態,如下圖所示。您可以在服務底下,以外掛程式服務的形式檢視服務。

注意:如果您使用 NGINX 或安全部署,則必須在命令行中使用 https 而非 http ,以及適當的 CA 憑證路徑。
-
視需要為第三方 Vault 設定任何環境變數,然後重新啟動 Service Manager。
-
設定第三方保存庫,並將密碼儲存在其中。
-
執行「管理從屬端」並使用
PLUGIN選項或先前使用的NOPASSWORD選項設定資料庫登入證明資料,並測試資料庫連線是否成功。下列範例說明此組態:a. 連線至部署:
OGG (not connected) 1> CONNECT http://127.0.0.1:9011 AS oggadminb. 新增憑證:
-
使用
Plugin選項:OGG (http://127.0.0.1:9011 Deployment) 2> ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 PLUGIN ALIAS ggeastadmin輸出:
2026-04-02T18:34:14Z INFO OGG-15114 Credential store altered. Credential Type: Plugin -
使用
PLUGIN SECRET選項:OGG (http://127.0.0.1:9011 Deployment) 2> ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 PLUGIN SECRET abc ALIAS ggeastadmin輸出:
2026-04-02T18:34:14Z INFO OGG-15114 Credential store altered. Credential Type: Plugin Secret -
使用傳統
NOPASSWORD選項,使用下列指令:ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 NOPASSWORD ALIAS u1alias;
c. 使用證明資料別名登入資料庫:
OGG (http://127.0.0.1:9011 Deployment) 3> DBLOGIN USERIDALIAS ggadmin -
設定資料庫密碼 Plugin 以儲存並從 OCI Vault 存取資料庫密碼
若要從 OCI 保存庫建立、儲存及擷取加密密碼,您可以使用範例程式碼,其中顯示如何從 OCI 保存庫擷取加密密碼。Oracle GoldenGate 會將 USERID 儲存為 domain_name.alias_name 底下之證明資料存放區中的別名。密碼會以加密密碼名稱 domain_name.alias_name 儲存在 OCI 保存庫中作為加密密碼。例如,如果網域名稱為 OracleGoldenGate 且別名為 ggeastadmin,則加密密碼名稱為 OracleGoldenGate.ggeastadmin。Plugin 可識別要從保存庫擷取加密密碼 (密碼) 的加密密碼名稱。
圖表中的步驟示範使用 OCI Vault 設定資料庫密碼 Plugin 的工作流程:

-
在 OCI 保存庫中建立密碼。
-
確定已在保留此資料庫使用者 `ggeastadmin` 密碼的 OCI 保存庫中建立加密密碼。確定加密密碼名稱與預期的命名慣例相符,例如 `domain_name.alias_name` 格式的 `OracleGoldenGate.ggeastadmin`. ![ 在 OCI 保存庫中,加密密碼名稱必須符合預期的命名慣例,例如,格式為 domain_name.alias_name.] (images/vault-1.png " ") 的 OracleGoldenGate.ggeastadmin
-
尋找
GG Service Manager Home/var/lib/plugins/目錄中的「資料庫密碼 Plugin」。依照預設,此目錄下沒有程式庫。注意:雖然程式庫檔案名稱沒有限制,但 Plugin 只會選取此位置中存在的第一個程式庫檔案。
-
檢查需要搭配 Plugin 使用的函數 API。請參閱資料庫密碼 Plugin 需要 API 瞭解詳細資訊。
-
從
OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go存取範例程式碼,以產生共用使用者程式庫。 -
從
OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go執行make命令來編譯程式碼。這會產生名為libOCIVault.so的使用者程式庫。 -
將使用者程式庫
libOCIVault.so複製到Service_Manager_Home/var/lib/plugins/目錄。 -
發出 REST API 命令,以在「服務管理程式」下啟用此 Plugin 作為新服務。假設「服務管理程式」是在連接埠 9011 本機執行,則命令看起來如下:
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"}'啟用 Plugin 後,您可以從「服務管理程式」檢視 Plugin 的狀態,如下圖所示。您可以在服務底下,以外掛程式服務的形式檢視服務。

注意:如果您使用 NGINX 或受保護的部署,則必須在命令行中使用
https而非http,以及適當的 CA 憑證路徑。 -
在 Service Manager Web 介面中,將
OCI_AUTH和OCID_VAULT_OCID環境變數設定為下列值:-
OCI_AUTH = instance_principal :此範例中已使用
instance_principal認證方法。不過,「資料庫密碼 Plugin」支援下列 OCI Vault 認證方法,包括:-
instance_pricinpal:執行處理主體認證。 -
DEFAULT:OCI 組態檔中的預設設定檔。 -
自訂名稱:OCI 組態檔中的自訂設定檔。
-
OCID_VAULT_OCID = ocid1.vault.oc1-us-sanjose-1.exxxxxxxxxxxxxxxxxx42upinp4mfxwta:此值衍生自步驟 2 。這兩個環境變數都必須在「服務管理程式組態」下的環境變數區段中正確設定。

注意:如果您使用 NGINX 或受保護的部署,則必須在命令行中使用
https而非http,以及適當的 CA 憑證路徑。
-
-
-
重新啟動 Service Manager 以啟動設定。
-
識別執行 Oracle GoldenGate 服務管理程式的 VM 執行處理。
-
新增 VM 執行處理至動態群組,讓
instance_principal認證運作。 -
指定 VM 執行處理的標記,例如,EASTVaultTest 。這樣可以更輕鬆地建立動態群組。請參閱管理動態群組瞭解詳細資訊。動態群組需有原則才能使用該保存庫中的加密密碼。
-
建立允許此動態群組使用加密密碼資源的原則 (密碼)。如需建立原則以控制對 Vault 服務之存取的詳細資訊,請參閱 Vault 服務的詳細資訊。

-
執行「管理從屬端」以使用
NOPASSWORD選項建立「資料庫」登入別名,然後測試連線是否成功,如下列範例所示: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.
設定資料庫密碼 Plugin 以儲存並從 Oracle Key Vault 存取資料庫密碼
Oracle GoldenGate 23.5 和更新版本包含一個 Plugin 服務,可讓您撰寫用於從第三方保存庫擷取資料庫證明資料的自訂程式碼,然後將預先定義之 API 中的證明資料傳回至 Oracle GoldenGate,如設定資料庫密碼 Plugin 以儲存並從第三方保存庫存取資料庫密碼中所述。此功能包括可在 Oracle GoldenGate 中設定以管理 Oracle Key Vault 密碼的 libokvoggdbpwd.so 程式庫。
下圖代表 Oracle GoldenGate 和 Oracle Key Vault 之間設定 Plugin 服務的工作流程,然後使用 OKV Plugin 程式庫從 Oracle Key Vault 伺服器要求和擷取資料庫密碼。

儲存及擷取 Oracle Key Vault 資料庫密碼的處理作業摘要如下:
-
Oracle GoldenGate 管理員使用 RESTful 服務公用程式,將 Oracle GoldenGate 密碼上傳至 Oracle Key Vault。
-
Oracle GoldenGate 會要求使用
libokvoggdbpwd.soPlugin 程式庫從 Oracle Key Vault 伺服器取得資料庫證明資料的要求。成功的後端驗證之後,會從 OKV 伺服器擷取此密碼。 -
擷取密碼之後,Oracle GoldenGate 處理作業將能夠使用遠端儲存的密碼連線至資料庫。
請參閱 Oracle Key Vault Administrator's Guide 中的 Centralizing the Management of Oracle GoldenGate Passwords ,瞭解有關針對 Oracle GoldenGate 資料庫密碼儲存和擷取實行此功能的詳細資訊。