文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
手冊頁 (TGZ) - 258.2Kb
手冊頁 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  使用 component_keyring_encrypted_file 加密檔案型金鑰環元件

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

注意

component_keyring_encrypted_file 是 MySQL 企業版(一種商業產品)中包含的擴充功能。若要深入瞭解商業產品,請參閱 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 節「支援的金鑰環金鑰類型和長度」