文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 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 參考手冊  /  ...  /  使用 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 金鑰管理員

  • 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 節「金鑰環系統變數」

為 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,並將其以名為 CA.pem 的檔案儲存於 ssl 目錄中。

  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. 將已簽署的憑證複製到剪貼簿,然後將剪貼簿內容以名為 cert.pem 的檔案儲存在 ssl 目錄中。

  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 目錄中其他檔案相同的限制。