文件首頁
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 參考手冊  /  ...  /  使用 component_keyring_encrypted_file 加密檔案型金鑰環元件

8.4.4.5 使用 component_keyring_encrypted_file 加密檔案型金鑰環元件

注意

component_keyring_encrypted_file 是 MySQL Enterprise Edition (商業產品) 中包含的擴充功能。若要深入瞭解商業產品,請參閱 https://mysql.dev.org.tw/products/

component_keyring_encrypted_file 金鑰環元件會將金鑰環資料儲存在伺服器主機本機的加密、受密碼保護的檔案中。

警告

對於加密金鑰管理,component_keyring_filecomponent_keyring_encrypted_file 元件並非設計為符合法規的解決方案。PCI、FIPS 等安全性標準要求使用金鑰管理系統來保護、管理和保護金鑰保險庫或硬體安全性模組 (HSM) 中的加密金鑰。

若要使用 component_keyring_encrypted_file 進行金鑰儲存區管理,您必須

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

  2. component_keyring_encrypted_file 編寫組態檔,如此處所述。

當初始化時,component_keyring_encrypted_file 會讀取全域組態檔,或是與本機組態檔配對的全域組態檔

  • 元件會嘗試從安裝元件程式庫檔案的目錄 (亦即,伺服器外掛程式目錄) 讀取其全域組態檔。

  • 如果全域組態檔指出使用本機組態檔,元件會嘗試從資料目錄讀取其本機組態檔。

  • 雖然全域和本機組態檔位於不同的目錄中,但這兩個位置的檔案名稱都是 component_keyring_encrypted_file.cnf

  • 如果沒有預先組態檔案,則會發生錯誤。component_keyring_encrypted_file 無法在沒有有效組態的情況下初始化。

本機組態檔允許設定多個伺服器執行個體以使用 component_keyring_encrypted_file,因此每個伺服器執行個體的元件組態會特定於給定的資料目錄執行個體。這可讓相同的金鑰環元件用於每個執行個體的不同資料檔案。

component_keyring_encrypted_file 組態檔具有下列屬性

  • 組態檔必須採用有效的 JSON 格式。

  • 組態檔允許下列組態項目

    • "read_local_config":此項目僅允許在全域組態檔中使用。如果沒有此項目,則元件只會使用全域組態檔。如果此項目存在,則其值為 truefalse,表示元件是否應從本機組態檔讀取組態資訊。

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

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

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

    • "path":此項目值為一個字串,指定用於儲存金鑰環資料的檔案名稱。檔案名稱應使用絕對路徑,而非相對路徑。此項目在組態中為必要項目。若未指定,component_keyring_encrypted_file 初始化將會失敗。

    • "password":此項目值為一個字串,指定用於存取資料檔案的密碼。此項目在組態中為必要項目。若未指定,component_keyring_encrypted_file 初始化將會失敗。

    • "read_only":此項目值表示金鑰環資料檔案是否為唯讀。項目值為 true (唯讀) 或 false (讀/寫)。此項目在組態中為必要項目。若未指定,component_keyring_encrypted_file 初始化將會失敗。

  • 資料庫管理員有責任建立要使用的任何組態檔,並確保其內容正確。如果發生錯誤,伺服器啟動將會失敗,管理員必須修正伺服器錯誤日誌中顯示的任何問題。

  • 任何儲存密碼的組態檔都應具有限制模式,並且只能由用於執行 MySQL 伺服器的帳戶存取。

考量到上述組態檔屬性,若要設定 component_keyring_encrypted_file,請在 component_keyring_encrypted_file 函式庫檔案安裝的目錄中建立一個名為 component_keyring_encrypted_file.cnf 的全域組態檔,並可選擇在資料目錄中建立一個同樣名為 component_keyring_encrypted_file.cnf 的本機組態檔。以下指示假設要以讀/寫模式使用名為 /usr/local/mysql/keyring/component_keyring_encrypted_file 的金鑰環資料檔案。您還必須選擇一個密碼。

  • 若僅使用全域組態檔,檔案內容如下所示

    {
      "path": "/usr/local/mysql/keyring/component_keyring_encrypted_file",
      "password": "password",
      "read_only": false
    }

    請在 component_keyring_encrypted_file 函式庫檔案安裝的目錄中建立此檔案。

  • 或者,若要使用一對全域和本機組態檔,全域檔案內容如下所示

    {
      "read_local_config": true
    }

    請在 component_keyring_encrypted_file 函式庫檔案安裝的目錄中建立此檔案。

    本機檔案內容如下所示

    {
      "path": "/usr/local/mysql/keyring/component_keyring_encrypted_file",
      "password": "password",
      "read_only": false
    }

    請在資料目錄中建立此檔案。

金鑰環操作是交易式的:component_keyring_encrypted_file 在寫入操作期間會使用備份檔案,以確保在操作失敗時可以回滾到原始檔案。備份檔案的名稱與資料檔案相同,並附加 .backup 的後綴。

component_keyring_encrypted_file 支援組成標準 MySQL 金鑰環服務介面的函式。這些函式執行的金鑰環操作可在 SQL 語句中存取,如 章節 8.4.4.12 「通用金鑰環金鑰管理函式」中所述。

範例

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

有關 component_keyring_encrypted_file 允許的金鑰值的特性,請參閱 章節 8.4.4.10 「支援的金鑰環金鑰類型和長度」