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


MySQL 9.0 參考手冊  /  ...  /  使用 keyring_okv KMIP 外掛程式

8.4.4.6 使用 keyring_okv KMIP 外掛程式

注意

keyring_okv 外掛程式是包含在 MySQL 企業版中的擴充功能,這是一個商業產品。若要深入瞭解商業產品,請參閱 https://mysql.dev.org.tw/products/

金鑰管理互通協定 (KMIP) 可讓金鑰管理伺服器及其用戶端之間進行加密金鑰的通訊。keyring_okv 金鑰環外掛程式使用 KMIP 1.1 通訊協定,以安全方式作為 KMIP 後端的用戶端進行通訊。金鑰環資料完全由後端產生,而非由 keyring_okv 產生。此外掛程式可與這些與 KMIP 相容的產品搭配運作

  • Oracle Key Vault

  • Gemalto SafeNet KeySecure 設備

  • Townsend Alliance Key Manager

  • Entrust KeyControl

每個 MySQL 伺服器執行個體都必須單獨註冊為 KMIP 的用戶端。如果兩個或多個 MySQL 伺服器執行個體使用相同的認證集,則它們可能會干擾彼此的功能。

keyring_okv 外掛程式支援構成標準 MySQL 金鑰環服務介面的函數。這些函數執行的金鑰環操作可在兩個層級存取

範例(使用 SQL 介面)

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

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

若要安裝 keyring_okv,請使用 第 8.4.4.3 節「金鑰環外掛程式安裝」中找到的一般指示,以及此處找到的 keyring_okv 特定組態資訊。

通用 keyring_okv 配置

無論 keyring_okv 外掛程式使用哪個 KMIP 後端進行金鑰儲存,keyring_okv_conf_dir 系統變數都會配置 keyring_okv 用於其支援檔案的目錄位置。預設值為空,因此您必須將變數設定為已正確配置的目錄名稱,外掛程式才能與 KMIP 後端通信。除非您這麼做,否則 keyring_okv 會在伺服器啟動期間向錯誤日誌寫入訊息,指出無法通信

[Warning] Plugin keyring_okv reported: 'For keyring_okv to be
initialized, please point the keyring_okv_conf_dir variable to a directory
containing Oracle Key Vault configuration file and ssl materials'

keyring_okv_conf_dir 變數必須指定一個包含以下項目的目錄

  • okvclient.ora:一個檔案,包含 keyring_okv 與之通信的 KMIP 後端的詳細資訊。

  • ssl:一個目錄,包含與 KMIP 後端建立安全連線所需的憑證和金鑰檔案:CA.pemcert.pemkey.pem。如果金鑰檔案受密碼保護,ssl 目錄可以包含一個名為 password.txt 的單行文字檔案,其中包含解密金鑰檔案所需的密碼。

為了讓 keyring_okv 正常工作,okvclient.ora 檔案以及包含憑證和金鑰檔案的 ssl 目錄都是必要的。使用這些檔案填入配置目錄的程序取決於與 keyring_okv 一起使用的 KMIP 後端,如其他地方所述。

keyring_okv 用於其支援檔案位置的配置目錄應具有限制模式,並且只能由用於執行 MySQL 伺服器的帳戶存取。例如,在 Unix 和類 Unix 系統上,若要使用 /usr/local/mysql/mysql-keyring-okv 目錄,以下命令(以 root 身分執行)會建立目錄並設定其模式和所有權

cd /usr/local/mysql
mkdir mysql-keyring-okv
chmod 750 mysql-keyring-okv
chown mysql mysql-keyring-okv
chgrp mysql mysql-keyring-okv

為了在伺服器啟動過程中可用,必須使用 --early-plugin-load 選項載入 keyring_okv。此外,設定 keyring_okv_conf_dir 系統變數,以告知 keyring_okv 在哪裡找到其配置目錄。例如,在伺服器 my.cnf 檔案中使用以下行,並根據您的平台調整 .so 後綴和目錄位置

[mysqld]
early-plugin-load=keyring_okv.so
keyring_okv_conf_dir=/usr/local/mysql/mysql-keyring-okv

有關 keyring_okv_conf_dir 的其他資訊,請參閱第 8.4.4.16 節,「Keyring 系統變數」

為 Oracle Key Vault 配置 keyring_okv

此處的討論假設您熟悉 Oracle Key Vault。一些相關的資訊來源

在 Oracle Key Vault 術語中,使用 Oracle Key Vault 來儲存和檢索安全物件的用戶端稱為端點。為了與 Oracle Key Vault 通信,必須註冊為端點,並透過下載和安裝端點支援檔案來註冊。請注意,您必須為每個 MySQL 伺服器執行個體註冊一個單獨的端點。如果兩個或多個 MySQL 伺服器執行個體使用相同的端點,它們可能會相互干擾對方的功能。

以下程序簡要總結了設定 keyring_okv 以與 Oracle Key Vault 一起使用的過程

  1. 建立 keyring_okv 外掛程式要使用的配置目錄。

  2. 向 Oracle Key Vault 註冊一個端點以取得註冊權杖。

  3. 使用註冊權杖取得 okvclient.jar 用戶端軟體下載。

  4. 安裝用戶端軟體以填入包含 Oracle Key Vault 支援檔案的 keyring_okv 配置目錄。

使用以下程序配置 keyring_okv 和 Oracle Key Vault 以協同工作。此描述僅總結如何與 Oracle Key Vault 互動。有關詳細資訊,請訪問Oracle Key Vault 網站並查閱《Oracle Key Vault 管理員指南》。

  1. 建立包含 Oracle Key Vault 支援檔案的配置目錄,並確保已將 keyring_okv_conf_dir 系統變數設定為命名該目錄(有關詳細資訊,請參閱通用 keyring_okv 配置)。

  2. 以具有系統管理員角色的使用者身分登入 Oracle Key Vault 管理控制台。

  3. 選取「端點」索引標籤以進入「端點」頁面。在「端點」頁面上,按一下「新增」。

  4. 提供必要的端點資訊,然後按一下「註冊」。端點類型應為「其他」。成功註冊會產生註冊權杖。

  5. 從 Oracle Key Vault 伺服器登出。

  6. 再次連線至 Oracle Key Vault 伺服器,這次不登入。使用端點註冊權杖註冊並要求下載 okvclient.jar 軟體。將此檔案儲存至您的系統。

  7. 使用以下命令安裝 okvclient.jar 檔案(您必須具有 JDK 1.4 或更高版本)

    java -jar okvclient.jar -d dir_name [-v]

    選項 -d 後面的目錄名稱是要安裝解壓縮檔案的位置。如果給定選項 -v,則會產生記錄資訊,如果命令失敗,此資訊可能會很有用。

    當命令要求 Oracle Key Vault 端點密碼時,請勿提供。而是按 Enter。(結果是當端點連線至 Oracle Key Vault 時,不需要密碼。)

    前面的命令會產生 okvclient.ora 檔案,該檔案應位於先前 java -jar 命令中選項 -d 指定的目錄下的此位置

    install_dir/conf/okvclient.ora

    預期的檔案內容包括如下所示的行

    SERVER=host_ip:port_num
    STANDBY_SERVER=host_ip:port_num

    SERVER 變數是強制性的,而 STANDBY_SERVER 變數是選用的。keyring_okv 外掛程式會嘗試與 SERVER 變數命名的主機上執行的伺服器通信,如果該伺服器失敗,則會回復為 STANDBY_SERVER

    注意

    如果現有檔案不是此格式,請建立一個新檔案,其中包含先前範例中顯示的行。此外,在執行 okvutil 命令之前,請考慮備份 okvclient.ora 檔案。根據需要還原檔案。

    您可以指定多個備用伺服器 (最多 64 個)。如果您這麼做,keyring_okv 外掛程式會逐一處理這些伺服器,直到可以建立連線為止,如果無法建立連線,則會失敗。若要新增額外的備用伺服器,請編輯 okvclient.ora 檔案,以在 STANDBY_SERVER 變數的值中指定伺服器的 IP 位址和連接埠號碼 (以逗號分隔的清單)。例如

    STANDBY_SERVER=host_ip:port_num,host_ip:port_num,host_ip:port_num,host_ip:port_num

    確保備用伺服器的清單保持簡短、準確且最新,並刪除不再有效的伺服器。每次連線嘗試都有 20 秒的等待時間,因此存在長串無效的伺服器可能會顯著影響 keyring_okv 外掛程式的連線時間,進而影響伺服器啟動時間。

  8. 前往 Oracle Key Vault 安裝程式目錄,然後執行此命令來測試設定

    okvutil/bin/okvutil list

    輸出應如下所示

    Unique ID                               Type            Identifier
    255AB8DE-C97F-482C-E053-0100007F28B9	Symmetric Key	-
    264BF6E0-A20E-7C42-E053-0100007FB29C	Symmetric Key	-

    對於新的 Oracle Key Vault 伺服器(其中沒有任何金鑰的伺服器),輸出會改為如下所示,表示保管庫中沒有金鑰

    no objects found
  9. 使用此命令從 okvclient.jar 檔案中擷取包含 SSL 資料的 ssl 目錄

    jar xf okvclient.jar ssl
  10. 將 Oracle Key Vault 支援檔案(okvclient.ora 檔案和 ssl 目錄)複製到配置目錄中。

  11. (選用)如果您希望以密碼保護金鑰檔案,請使用密碼保護 keyring_okv 金鑰檔案中的說明。

完成上述程序後,重新啟動 MySQL 伺服器。它會載入 keyring_okv 外掛程式,而 keyring_okv 會使用其配置目錄中的檔案與 Oracle Key Vault 通信。

為 Gemalto SafeNet KeySecure 設備配置 keyring_okv

Gemalto SafeNet KeySecure 設備使用 KMIP 通訊協定(1.1 或 1.2 版)。keyring_okv 金鑰環外掛程式(支援 KMIP 1.1)可以使用 KeySecure 作為其用於金鑰環儲存的 KMIP 後端。

使用以下程序配置 keyring_okv 和 KeySecure 以協同工作。描述僅總結如何與 KeySecure 互動。有關詳細資訊,請查閱《KeySecure 使用者指南》中名為「新增 KMIP 伺服器」的章節。

  1. 建立包含 KeySecure 支援檔案的配置目錄,並確保已將 keyring_okv_conf_dir 系統變數設定為命名該目錄(有關詳細資訊,請參閱通用 keyring_okv 配置)。

  2. 在配置目錄中,建立一個名為 ssl 的子目錄,用於儲存所需的 SSL 憑證和金鑰檔案。

  3. 在配置目錄中,建立一個名為 okvclient.ora 的檔案。它應具有以下格式

    SERVER=host_ip:port_num
    STANDBY_SERVER=host_ip:port_num

    舉例來說,如果 KeySecure 在主機 198.51.100.20 上執行,並監聽埠號 9002,同時也在備用主機 203.0.113.125 上執行,並監聽埠號 8041,則 okvclient.ora 檔案看起來會像這樣

    SERVER=198.51.100.20:9002
    STANDBY_SERVER=203.0.113.125:8041

    您可以指定多個備用伺服器 (最多 64 個)。如果您這麼做,keyring_okv 外掛程式會逐一處理這些伺服器,直到可以建立連線為止,如果無法建立連線,則會失敗。若要新增額外的備用伺服器,請編輯 okvclient.ora 檔案,以在 STANDBY_SERVER 變數的值中指定伺服器的 IP 位址和連接埠號碼 (以逗號分隔的清單)。例如

    STANDBY_SERVER=host_ip:port_num,host_ip:port_num,host_ip:port_num,host_ip:port_num

    確保備用伺服器的清單保持簡短、準確且最新,並刪除不再有效的伺服器。每次連線嘗試都有 20 秒的等待時間,因此存在長串無效的伺服器可能會顯著影響 keyring_okv 外掛程式的連線時間,進而影響伺服器啟動時間。

  4. 以具備憑證授權單位存取權限的管理員身分,連線至 KeySecure 管理主控台。

  5. 導覽至「安全性」>>「本機 CA」,並建立本機憑證授權單位 (CA)。

  6. 前往「信任的 CA 清單」。選取「預設」,然後按一下「內容」。接著選取「編輯信任的憑證授權單位清單」,並加入剛建立的 CA。

  7. 下載 CA,並將其儲存至 ssl 目錄中,檔案名稱為 CA.pem

  8. 導覽至「安全性」>>「憑證請求」,並建立憑證。然後您可以下載包含憑證 PEM 檔案的壓縮 tar 檔案。

  9. 從下載的檔案中解壓縮 PEM 檔案。例如,如果檔案名稱為 csr_w_pk_pkcs8.gz,請使用此命令解壓縮並解開它

    tar zxvf csr_w_pk_pkcs8.gz

    解壓縮操作會產生兩個檔案:certificate_request.pemprivate_key_pkcs8.pem

  10. 使用此 openssl 命令解密私密金鑰,並建立名為 key.pem 的檔案

    openssl pkcs8 -in private_key_pkcs8.pem -out key.pem
  11. key.pem 檔案複製到 ssl 目錄中。

  12. certificate_request.pem 中的憑證請求複製到剪貼簿。

  13. 導覽至「安全性」>>「本機 CA」。選取您先前建立的相同 CA(您下載以建立 CA.pem 檔案的 CA),然後按一下「簽署請求」。從剪貼簿貼上憑證請求,選擇「用戶端」的憑證用途(金鑰環是 KeySecure 的用戶端),然後按一下「簽署請求」。結果會在新的頁面中顯示使用選定 CA 簽署的憑證。

  14. 將已簽署的憑證複製到剪貼簿,然後將剪貼簿內容儲存為 ssl 目錄中名為 cert.pem 的檔案。

  15. (選用)如果您希望以密碼保護金鑰檔案,請使用密碼保護 keyring_okv 金鑰檔案中的說明。

完成上述程序後,重新啟動 MySQL 伺服器。它會載入 keyring_okv 外掛程式,而 keyring_okv 會使用其設定目錄中的檔案與 KeySecure 通訊。

為 Townsend Alliance Key Manager 設定 keyring_okv

Townsend Alliance Key Manager 使用 KMIP 通訊協定。keyring_okv 金鑰環外掛程式可以使用 Alliance Key Manager 作為其金鑰環儲存的 KMIP 後端。如需其他資訊,請參閱適用於 MySQL 的 Alliance Key Manager

為 Entrust KeyControl 設定 keyring_okv

Entrust KeyControl 使用 KMIP 通訊協定。keyring_okv 金鑰環外掛程式可以使用 Entrust KeyControl 作為其金鑰環儲存的 KMIP 後端。如需其他資訊,請參閱Oracle MySQL 和 Entrust KeyControl 與 nShield HSM 整合指南

使用密碼保護 keyring_okv 金鑰檔案

您可以選擇性地使用密碼保護金鑰檔案,並提供包含密碼的檔案,以啟用金鑰檔案的解密。若要這麼做,請將位置變更至 ssl 目錄,並執行下列步驟

  1. 加密 key.pem 金鑰檔案。例如,使用如下的命令,並在提示時輸入加密密碼

    $> openssl rsa -des3 -in key.pem -out key.pem.new
    Enter PEM pass phrase:
    Verifying - Enter PEM pass phrase:
  2. 將加密密碼儲存至 ssl 目錄中名為 password.txt 的單行文字檔案中。

  3. 使用以下命令驗證加密的金鑰檔案是否可以解密。解密後的檔案應顯示在主控台上

    $> openssl rsa -in key.pem.new -passin file:password.txt
  4. 移除原始 key.pem 檔案,並將 key.pem.new 重新命名為 key.pem

  5. 變更新 key.pem 檔案和 password.txt 檔案的所有權和存取模式,以確保它們與 ssl 目錄中的其他檔案具有相同的限制。