Oracle Cloud Infrastructure Vault 金鑰環組件包含在 MySQL 企業版中,這是一項商業產品。若要深入瞭解商業產品,請參閱 https://mysql.dev.org.tw/products/。
component_keyring_oci
是與 Oracle Cloud Infrastructure Vault 通訊以進行後端儲存的組件基礎結構的一部分。沒有金鑰資訊會永久儲存在 MySQL 伺服器本機儲存區中。所有金鑰都儲存在 Oracle Cloud Infrastructure Vault 中,這使得此組件非常適合 Oracle Cloud Infrastructure MySQL 客戶管理其 MySQL 企業版金鑰。
MySQL 金鑰環已開始從外掛程式轉換為使用組件基礎結構。component_keyring_oci
的推出是此項努力的延續。如需詳細資訊,請參閱 金鑰環組件與金鑰環外掛程式。
一次只能啟用一個金鑰環組件或外掛程式。不支援啟用多個金鑰環組件或外掛程式,且結果可能不如預期。
若要使用 component_keyring_oci
進行金鑰儲存區管理,您必須
撰寫一份資訊清單,告訴伺服器載入
component_keyring_oci
,如第 8.4.4.2 節「金鑰環組件安裝」所述。為
component_keyring_oci
撰寫一個設定檔,如此處所述。
當 component_keyring_oci
初始化時,會讀取全域設定檔,或全域設定檔與本機設定檔配對
此元件會嘗試從元件程式庫檔案安裝所在的目錄(即伺服器外掛程式目錄)讀取其全域組態檔。
如果全域組態檔指示使用本機組態檔,則元件會嘗試從資料目錄讀取其本機組態檔。
雖然全域和本機組態檔位於不同的目錄中,但兩個位置的檔案名稱都是
component_keyring_oci.cnf
。如果沒有組態檔存在,則會發生錯誤。
component_keyring_oci
無法在沒有有效的組態的情況下初始化。
本機組態檔允許設定多個伺服器執行個體以使用 component_keyring_oci
,使得每個伺服器執行個體的元件組態特定於給定的資料目錄執行個體。這使得相同的金鑰環元件能夠與每個執行個體的不同 Oracle Cloud Infrastructure Vault 一起使用。
假設您熟悉 Oracle Cloud Infrastructure 概念,但以下文件在設定要由 component_keyring_oci
使用的資源時可能會有所幫助
component_keyring_oci
組態檔具有這些屬性
組態檔必須採用有效的 JSON 格式。
組態檔允許這些組態項目
"read_local_config"
:此項目僅允許在全域組態檔中使用。如果沒有此項目,元件將僅使用全域組態檔。如果此項目存在,則其值為true
或false
,表示元件是否應從本機組態檔讀取組態資訊。如果全域組態檔中存在
"read_local_config"
項目以及其他項目,元件會先檢查"read_local_config"
項目值如果值為
false
,則元件會處理全域組態檔中的其他項目,並忽略本機組態檔。如果值為
true
,則元件會忽略全域組態檔中的其他項目,並嘗試讀取本機組態檔。
“user”
:Oracle Cloud Infrastructure 使用者的 OCID,component_keyring_oci
會使用此使用者進行連線。在使用component_keyring_oci
之前,使用者帳戶必須存在,並且必須被授予使用已設定的 Oracle Cloud Infrastructure 租戶、區間和 Vault 資源的權限。若要從主控台取得使用者 OCID,請使用 必要的金鑰和 OCID 中的說明。此值為強制性。
“tenancy”
:Oracle Cloud Infrastructure 租戶的 OCID,component_keyring_oci
會使用此租戶作為 MySQL 區間的位置。在使用component_keyring_oci
之前,如果租戶不存在,您必須建立租戶。若要從主控台取得租戶 OCID,請使用 必要的金鑰和 OCID 中的說明。此值為強制性。
“compartment”
:租戶區間的 OCID,component_keyring_oci
會使用此區間作為 MySQL 金鑰的位置。在使用component_keyring_oci
之前,您必須建立 MySQL 區間或子區間(如果不存在)。此區間不應包含任何 Vault 金鑰或 Vault 密碼。它不應由 MySQL 金鑰環以外的系統使用。如需管理區間和取得 OCID 的相關資訊,請參閱管理區間。此值為強制性。
“virtual_vault”
:Oracle Cloud Infrastructure Vault 的 OCID,component_keyring_oci
會使用此 Vault 進行加密作業。在使用component_keyring_oci
之前,您必須在 MySQL 區間中建立新的 Vault(如果不存在)。(或者,您可以重複使用 MySQL 區間的父區間中的現有 Vault。)區間使用者只能看到和使用其各自區間中的金鑰。如需建立 Vault 和取得 Vault OCID 的相關資訊,請參閱 管理 Vault。此值為強制性。
“encryption_endpoint”
:Oracle Cloud Infrastructure 加密伺服器的端點,component_keyring_oci
會使用此端點來產生新金鑰的加密或編碼資訊(密文)。加密端點特定於 Vault,Oracle Cloud Infrastructure 會在建立 Vault 時指派它。若要取得端點 OCID,請使用 管理 Vault 中的說明,檢視您的 keyring_oci Vault 的組態詳細資料。此值為強制性。
"management_endpoint"
:Oracle Cloud Infrastructure 金鑰管理伺服器的端點,component_keyring_oci
會使用此端點來列出現有的金鑰。金鑰管理端點特定於 Vault,Oracle Cloud Infrastructure 會在建立 Vault 時指派它。若要取得端點 OCID,請使用 管理 Vault 中的說明,檢視您的 keyring_oci Vault 的組態詳細資料。此值為強制性。
“vaults_endpoint”
:Oracle Cloud Infrastructure Vault 伺服器的端點,component_keyring_oci
會使用此端點來取得密碼的值。Vaults 端點特定於 Vault,Oracle Cloud Infrastructure 會在建立 Vault 時指派它。若要取得端點 OCID,請使用 管理 Vault 中的說明,檢視您的 keyring_oci Vault 的組態詳細資料。此值為強制性。
“secrets_endpoint”
:Oracle Cloud Infrastructure 密碼伺服器的端點,component_keyring_oci
會使用此端點來列出、建立和停用密碼。密碼端點特定於 Vault,Oracle Cloud Infrastructure 會在建立 Vault 時指派它。若要取得端點 OCID,請使用 管理 Vault 中的說明,檢視您的 keyring_oci Vault 的組態詳細資料。此值為強制性。
“master_key”
:Oracle Cloud Infrastructure 主要加密金鑰的 OCID,component_keyring_oci
會使用此金鑰來加密密碼。在使用component_keyring_oci
之前,如果 Oracle Cloud Infrastructure 區間不存在密碼編譯金鑰,您必須建立一個。為產生的金鑰提供一個 MySQL 特定的名稱,並且不要將它用於其他用途。如需建立金鑰的相關資訊,請參閱 管理金鑰。此值為強制性。
“key_file”
:包含 RSA 私密金鑰的檔案路徑名稱,component_keyring_oci
會使用此金鑰進行 Oracle Cloud Infrastructure 驗證。您還必須使用主控台上傳對應的 RSA 公開金鑰。主控台會顯示金鑰指紋值,您可以使用此值來設定"key_fingerprint"
值。如需產生和上傳 API 金鑰的相關資訊,請參閱 必要的金鑰和 OCID。此值為強制性。
“key_fingerprint”
:RSA 私密金鑰的指紋,component_keyring_oci
會使用此金鑰進行 Oracle Cloud Infrastructure 驗證。若要在建立 API 金鑰時取得金鑰指紋,請執行此命令openssl rsa -pubout -outform DER -in ~/.oci/oci_api_key.pem | openssl md5 -c
或者,從主控台取得指紋,當您上傳 RSA 公開金鑰時,主控台會自動顯示指紋。如需取得金鑰指紋的相關資訊,請參閱 必要的金鑰和 OCID。
此值為強制性。
“ca_certificate”
:CA 憑證組合檔案的路徑名稱,component_keyring_oci
元件會使用此檔案進行 Oracle Cloud Infrastructure 憑證驗證。此檔案包含一個或多個用於對等驗證的憑證。如果未指定任何檔案,則會使用系統上安裝的預設 CA 組合。如果值設定為disabled
(區分大小寫),則component_keyring_oci
不會執行任何憑證驗證。
根據上述組態檔屬性,若要設定 component_keyring_oci
,請在 component_keyring_oci
程式庫檔案安裝所在的目錄中建立名為 component_keyring_oci.cnf
的全域組態檔,並選擇性地在資料目錄中建立名為 component_keyring_oci.cnf
的本機組態檔。
執行任何元件特定的組態之後,啟動伺服器。藉由檢查 Performance Schema keyring_component_status
表格來驗證元件安裝
mysql> SELECT * FROM performance_schema.keyring_component_status;
+---------------------+--------------------------------------------------------------------+
| STATUS_KEY | STATUS_VALUE |
+---------------------+--------------------------------------------------------------------+
| Component_name | component_keyring_oci |
| Author | Oracle Corporation |
| License | PROPRIETARY |
| Implementation_name | component_keyring_oci |
| Version | 1.0 |
| Component_status | Active |
| user | ocid1.user.oc1..aaaaaaaasqly<...> |
| tenancy | ocid1.tenancy.oc1..aaaaaaaai<...> |
| compartment | ocid1.compartment.oc1..aaaaaaaah2swh<...> |
| virtual_vault | ocid1.vault.oc1.iad.bbo5xyzkaaeuk.abuwcljtmvxp4r<...> |
| master_key | ocid1.key.oc1.iad.bbo5xyzkaaeuk.abuwcljrbsrewgap<...> |
| encryption_endpoint | bbo5xyzkaaeuk-crypto.kms.us-<...> |
| management_endpoint | bbo5xyzkaaeuk-management.kms.us-<...> |
| vaults_endpoint | vaults.us-<...> |
| secrets_endpoint | secrets.vaults.us-<...> |
| key_file | ~/.oci/oci_api_key.pem |
| key_fingerprint | ca:7c:e1:fa:86:b6:40:af:39:d6<...> |
| ca_certificate | disabled |
+---------------------+--------------------------------------------------------------------+
Component_status
值為 Active
表示元件已成功初始化。
如果無法載入元件,則伺服器啟動會失敗。請檢查伺服器錯誤記錄以取得診斷訊息。如果元件載入但因組態問題而無法初始化,則伺服器會啟動,但 Component_status
值為 Disabled
。請檢查伺服器錯誤記錄,更正組態問題,並使用 ALTER INSTANCE RELOAD KEYRING
陳述式重新載入組態。
可以查詢 MySQL 伺服器以取得現有金鑰的清單。若要查看存在哪些金鑰,請檢查 Performance Schema keyring_keys
表格。
mysql> SELECT * FROM performance_schema.keyring_keys;
+-----------------------------+--------------+----------------+
| KEY_ID | KEY_OWNER | BACKEND_KEY_ID |
+-----------------------------+--------------+----------------+
| audit_log-20210322T130749-1 | | |
| MyKey | me@localhost | |
| YourKey | me@localhost | |
+-----------------------------+--------------+----------------+
component_keyring_oci
支援組成標準 MySQL 金鑰環服務介面的函式。這些函式執行的金鑰環作業可透過 SQL 陳述式存取,如 章節 8.4.4.12「一般用途金鑰環金鑰管理函式」中所述。
範例
SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');
如需 component_keyring_oci
允許的金鑰值特性的相關資訊,請參閱 章節 8.4.4.10「支援的金鑰環金鑰類型和長度」。