component_keyring_encrypted_file
是 MySQL 企業版(一種商業產品)中包含的擴充功能。若要深入瞭解商業產品,請參閱 https://mysql.dev.org.tw/products/。
component_keyring_encrypted_file
金鑰環元件將金鑰環資料儲存在伺服器主機本機的加密、受密碼保護的檔案中。
對於加密金鑰管理,component_keyring_file
和 component_keyring_encrypted_file
元件不打算作為法規遵循解決方案。PCI、FIPS 等安全性標準要求使用金鑰管理系統來保護、管理和保護金鑰保管庫或硬體安全性模組 (HSM) 中的加密金鑰。
若要使用 component_keyring_encrypted_file
進行金鑰儲存區管理,您必須
撰寫資訊清單,告知伺服器載入
component_keyring_encrypted_file
,如章節 8.4.4.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"
:此項目僅允許在全域設定檔中。如果此項目不存在,則組件僅使用全域設定檔。如果此項目存在,則其值為true
或false
,表示組件是否應從本機設定檔讀取設定資訊。如果全域設定檔中存在
"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 節「支援的金鑰環金鑰類型和長度」。