文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  使用 Oracle Cloud Infrastructure Vault 金鑰環元件

8.4.4.9 使用 Oracle Cloud Infrastructure Vault 金鑰環元件

注意

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 進行金鑰儲存區管理,您必須

  1. 撰寫資訊清單,告知伺服器載入 component_keyring_oci,如 第 8.4.4.2 節「金鑰環元件安裝」中所述。

  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":此項目僅允許在全域組態檔中使用。如果此項目不存在,元件將僅使用全域組態檔。如果此項目存在,其值為 truefalse,表示元件是否應從本機組態檔讀取組態資訊。

      如果全域組態檔中存在 "read_local_config" 項目以及其他項目,元件會先檢查 "read_local_config" 項目值。

      • 如果值為 false,元件會處理全域組態檔中的其他項目,並忽略本機組態檔。

      • 如果值為 true,元件會忽略全域組態檔中的其他項目,並嘗試讀取本機組態檔。

    • “user”:Oracle Cloud Infrastructure 使用者的 OCID,component_keyring_oci 使用此 OCID 進行連線。在使用 component_keyring_oci 之前,使用者帳戶必須存在,並且被授予使用已設定的 Oracle Cloud Infrastructure 租戶、區間和保管庫資源的權限。若要從主控台取得使用者 OCID,請使用必要金鑰和 OCID中的指示。

      此值為必要項目。

    • “tenancy”:Oracle Cloud Infrastructure 租戶的 OCID,component_keyring_oci 使用此 OCID 作為 MySQL 區間的位置。在使用 component_keyring_oci 之前,如果租戶不存在,您必須建立一個租戶。若要從主控台取得租戶 OCID,請使用必要金鑰和 OCID中的指示。

      此值為必要項目。

    • “compartment”:租戶區間的 OCID,component_keyring_oci 使用此 OCID 作為 MySQL 金鑰的位置。在使用 component_keyring_oci 之前,如果 MySQL 區間或子區間不存在,您必須建立一個。此區間不應包含保管庫金鑰或保管庫密碼。它不應由 MySQL 金鑰環以外的系統使用。如需管理區間和取得 OCID 的資訊,請參閱管理區間

      此值為必要項目。

    • “virtual_vault”:Oracle Cloud Infrastructure 保管庫的 OCID,component_keyring_oci 使用此 OCID 進行加密作業。在使用 component_keyring_oci 之前,如果 MySQL 區間中不存在新的保管庫,您必須建立一個。(或者,您可以重複使用 MySQL 區間的父區間中現有的保管庫。)區間使用者只能看到和使用其各自區間中的金鑰。如需建立保管庫和取得保管庫 OCID 的資訊,請參閱管理保管庫

      此值為必要項目。

    • “encryption_endpoint”:Oracle Cloud Infrastructure 加密伺服器的端點,component_keyring_oci 使用此端點來為新金鑰產生加密或編碼的資訊(密文)。加密端點特定於保管庫,且 Oracle Cloud Infrastructure 會在建立保管庫時指派它。若要取得端點 OCID,請使用管理保管庫中的指示,檢視您的 keyring_oci 保管庫的組態詳細資訊。

      此值為必要項目。

    • "management_endpoint":Oracle Cloud Infrastructure 金鑰管理伺服器的端點,component_keyring_oci 使用此端點來列出現有的金鑰。金鑰管理端點特定於保管庫,且 Oracle Cloud Infrastructure 會在建立保管庫時指派它。若要取得端點 OCID,請使用管理保管庫中的指示,檢視您的 keyring_oci 保管庫的組態詳細資訊。

      此值為必要項目。

    • “vaults_endpoint”:Oracle Cloud Infrastructure 保管庫伺服器的端點,component_keyring_oci 使用此端點來取得密碼的值。保管庫端點特定於保管庫,且 Oracle Cloud Infrastructure 會在建立保管庫時指派它。若要取得端點 OCID,請使用管理保管庫中的指示,檢視您的 keyring_oci 保管庫的組態詳細資訊。

      此值為必要項目。

    • “secrets_endpoint”:Oracle Cloud Infrastructure 密碼伺服器的端點,component_keyring_oci 使用此端點來列出、建立和停用密碼。密碼端點特定於保管庫,且 Oracle Cloud Infrastructure 會在建立保管庫時指派它。若要取得端點 OCID,請使用管理保管庫中的指示,檢視您的 keyring_oci 保管庫的組態詳細資訊。

      此值為必要項目。

    • “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 的本機組態檔。

驗證元件安裝

執行任何元件特定的組態後,啟動伺服器。透過檢查效能結構描述 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 伺服器以取得現有金鑰的清單。若要查看存在哪些金鑰,請檢查效能結構描述 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 金鑰環服務介面的函式。在 第 8.4.4.12 節「一般用途的金鑰環金鑰管理函式」中說明,這些函式所執行的金鑰環作業可在 SQL 陳述式中使用。

範例

SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');

如需關於 component_keyring_oci 允許的金鑰值特性的相關資訊,請參閱第 8.4.4.10 節「支援的金鑰環金鑰類型和長度」