Skip to main content
BeeGFS on NetApp with E-Series Storage
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

為 BeeGFS 8 設定 TLS 加密

貢獻者 mcwhiteside

配置 TLS 加密以保護 BeeGFS 8 管理服務和用戶端之間的通訊。

總覽

BeeGFS 8 引入了 TLS 支援,用於加密管理工具(例如 beegfs 命令列公用程式)與 BeeGFS 伺服器服務(例如 Management 或 Remote)之間的網路通訊。使用以下三種方法之一在 BeeGFS 叢集中設定 TLS 加密:

  • 使用受信任的憑證授權單位: 在您的 BeeGFS 叢集上使用現有的 CA 簽署憑證。

  • 建立本地 Certificate Authority: 建立本地 Certificate Authority 並使用它來簽署 BeeGFS 服務的憑證。這種方法適用於您希望管理自己的信任鏈而不依賴外部 CA 的環境。

  • TLS 已停用: 在不需要加密的環境或進行疑難排解時,完全停用 TLS。請避免在正式作業環境中使用此選項,因為它會將檔案系統結構和組態等潛在敏感資訊以明文形式暴露出來。

選擇最適合您環境和組織政策的方法。請參閱 "BeeGFS TLS" 文件以獲取更多詳細資訊。

註

執行 `beegfs-client`服務的用戶端無需 TLS 即可掛載 BeeGFS 檔案系統。使用 BeeGFS CLI 和其他 BeeGFS 服務(例如 Remote 和 Sync)則需要 TLS。

使用受信任的憑證授權單位

如果您擁有由受信任的憑證授權中心(CA)簽發的憑證——無論是來自內部企業 CA 還是第三方供應商——您都可以將 BeeGFS 8 配置為使用這些 CA 簽發的憑證,而不是產生自簽憑證。

部署新的 BeeGFS 8 叢集

對於新的 BeeGFS 8 叢集部署,請設定 Ansible 清單的 `user_defined_params.yml`檔案以引用您的 CA 簽署憑證:

beegfs_ha_tls_enabled: true

beegfs_ha_ca_cert_src_path: files/beegfs/cert/ca_cert.pem

beegfs_ha_tls_cert_src_path: files/beegfs/cert/mgmtd_tls_cert.pem

beegfs_ha_tls_key_src_path: files/beegfs/cert/mgmtd_tls_key.pem
註

如果 `beegfs_ha_tls_config_options.alt_names`不為空,Ansible 會自動產生自簽名 TLS 憑證和金鑰,並使用提供的 alt_names 作為憑證中的主題備用名稱(SAN)。若要使用您自己的自訂 TLS 憑證和金鑰(如 `beegfs_ha_tls_cert_src_path`和 `beegfs_ha_tls_key_src_path`所指定),您必須註解掉或刪除整個 `beegfs_ha_tls_config_options`部分。否則,自簽名憑證的產生將優先,您的自訂憑證和金鑰將不會被使用。

配置現有的 BeeGFS 8 叢集

對於現有的 BeeGFS 8 叢集,請將 BeeGFS 管理服務的組態檔中的路徑設定為檔案節點的 CA 簽署憑證:

tls-cert-file = /path/to/cert.pem
tls-key-file = /path/to/key.pem

設定 BeeGFS 8 用戶端使用 CA 簽署憑證

重要

如果您要將現有的 BeeGFS 7 叢集升級到 BeeGFS 8,請依照"升級至 BeeGFS 8"程序操作。在升級程序中指示之前,請勿設定用戶端 TLS。

若要設定 BeeGFS 8 用戶端以信任使用系統憑證池的 CA 簽章證書,請在每個用戶端的設定中設定 tls-cert-file = ""。如果未使用系統憑證池,請透過設定 tls-cert-file = <local cert> 來提供本機憑證的路徑。此設定允許用戶端驗證 BeeGFS 管理服務提供的憑證。

建立本地憑證授權單位

如果您的組織希望為 BeeGFS 叢集建立自己的憑證基礎架構,您可以建立一個本機憑證授權單位(CA)來頒發和簽署 BeeGFS 叢集的憑證。此方法涉及建立一個 CA,該 CA 為 BeeGFS 管理服務簽署憑證,然後將這些憑證分發給客戶端以建立信任鏈。

部署新的 BeeGFS 8 叢集

對於新的 BeeGFS 8 部署, beegfs_8 Ansible 角色(包含在 BeeGFS HA 集合中)會在控制節點上建立本機 CA,並為管理服務產生必要的憑證。若要啟用此功能,請在 Ansible 清單的 user_defined_params.yml 檔案中設定以下參數:

beegfs_ha_tls_enabled: true

beegfs_ha_ca_cert_src_path: files/beegfs/cert/local_ca_cert.pem

beegfs_ha_tls_cert_src_path: files/beegfs/cert/mgmtd_tls_cert.pem

beegfs_ha_tls_key_src_path: files/beegfs/cert/mgmtd_tls_key.pem

beegfs_ha_tls_config_options:
  alt_names: [<mgmt_service_ip>]
註

如果未提供 beegfs_ha_tls_config_options.alt_names,則 Ansible 將嘗試使用指定憑證/金鑰路徑中的現有憑證。

配置現有的 BeeGFS 8 叢集

對於現有的 BeeGFS 集群,您可以透過建立本機憑證授權單位並為管理服務產生必要的憑證來整合 TLS。更新 BeeGFS 管理服務設定檔中的路徑,使其指向新建立的憑證。

重要

請參考這些說明。處理私鑰和憑證時,請務必採取適當的安全預防措施。

建立憑證授權單位

在受信任的電腦上,建立一個本機憑證授權單位 (CA),用於簽署 BeeGFS 管理服務的憑證。CA 憑證將分發給用戶端,以建立信任並實現與 BeeGFS 服務的安全通訊。

以下說明是在基於 RHEL 的系統上建立本機憑證授權單位的參考。

  1. 如果尚未安裝 OpenSSL,請安裝它:

    dnf install openssl
  2. 建立用於儲存憑證檔案的工作目錄:

    mkdir -p ~/beegfs_tls && cd ~/beegfs_tls
  3. 產生 CA 私鑰:

    openssl genrsa -out ca_key.pem 4096
  4. 建立一個名為 `ca.cnf`的 CA 設定檔,並調整專有名稱欄位以符合您的組織:

    [ req ]
    default_bits       = 4096
    distinguished_name = req_distinguished_name
    x509_extensions    = v3_ca
    prompt             = no
    
    [ req_distinguished_name ]
    C  = <Country>
    ST = <State>
    L  = <City>
    O  = <Organization>
    OU = <OrganizationalUnit>
    CN = BeeGFS-CA
    
    [ v3_ca ]
    basicConstraints = critical,CA:TRUE
    subjectKeyIdentifier = hash
    authorityKeyIdentifier = keyid:always,issuer:always
  5. 產生 CA 憑證。此憑證的有效期限應與系統的生命週期相同。請計劃在憑證過期前重新產生憑證。憑證過期後,某些元件之間的通訊將會失敗。更新 TLS 憑證通常需要重新啟動服務。

    以下指令產生有效期限為 1 年的 CA 憑證:

    openssl req -new -x509 -key ca_key.pem -out ca_cert.pem -days 365 -config ca.cnf
    註 雖然為了簡單起見,本範例使用了 1 年的有效期,但您應該根據貴組織的安全要求調整 `-days`參數,並建立憑證續約流程。

建立管理服務憑證

為您的 BeeGFS 管理服務產生證書,並使用您建立的 CA 對其進行簽署。這些證書將安裝在執行 BeeGFS 管理服務的檔案節點上。

  1. 產生管理服務私鑰:

    openssl genrsa -out mgmtd_tls_key.pem 4096
  2. 建立一個名為 tls_san.cnf 的憑證設定檔,其中包含所有管理服務 IP 位址的主體別名(SAN):

    [ req ]
    default_bits       = 4096
    distinguished_name = req_distinguished_name
    req_extensions     = req_ext
    prompt             = no
    
    [ req_distinguished_name ]
    C  = <Country>
    ST = <State>
    L  = <City>
    O  = <Organization>
    OU = <OrganizationalUnit>
    CN = beegfs-mgmt
    
    [ req_ext ]
    subjectAltName = @alt_names
    
    [ v3_ca ]
    subjectAltName = @alt_names
    basicConstraints = CA:FALSE
    
    [ alt_names ]
    IP.1 = <beegfs_mgmt_service_ip_1>
    IP.2 = <beegfs_mgmt_service_ip_2>

    更新專有名稱欄位以符合您的 CA 配置,並將 IP.1IP.2 值替換為您的管理服務 IP 位址。

  3. 產生憑證簽章請求 (CSR):

    openssl req -new -key mgmtd_tls_key.pem -out mgmtd_tls_csr.pem -config tls_san.cnf
  4. 使用您的 CA 簽署憑證(有效期為 1 年):

    openssl x509 -req -in mgmtd_tls_csr.pem -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial -out mgmtd_tls_cert.pem -days 365 -sha256 -extensions v3_ca -extfile tls_san.cnf
    註 根據貴組織的安全策略調整證書有效期限 (-days 365。許多組織要求每 1-2 年輪換一次證書。
  5. 驗證憑證是否已正確建立:

    openssl x509 -in mgmtd_tls_cert.pem -text -noout

    請確認「主題備用名稱」部分包含所有管理 IP 位址。

將證書分發到檔案節點

將 CA 憑證和管理服務憑證分發到對應的檔案節點和用戶端。

  1. 將 CA 憑證、管理服務憑證和金鑰複製到執行管理服務的檔案節點:

    scp ca_cert.pem mgmtd_tls_cert.pem mgmtd_tls_key.pem user@beegfs_01:/etc/beegfs/
    scp ca_cert.pem mgmtd_tls_cert.pem mgmtd_tls_key.pem user@beegfs_02:/etc/beegfs/

將管理服務指向 TLS 憑證

更新 BeeGFS 管理服務設定以啟用 TLS 並引用已建立的 TLS 憑證。

  1. 在執行 BeeGFS 管理服務的檔案節點上,編輯管理服務設定檔,例如位於 /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml。新增或更新以下與 TLS 相關的參數:

    tls-disable = false
    tls-cert-file = "/etc/beegfs/mgmtd_tls_cert.pem"
    tls-key-file = "/etc/beegfs/mgmtd_tls_key.pem"
  2. 重新啟動 BeeGFS 管理服務:

    systemctl restart beegfs-mgmtd
  3. 驗證管理服務是否已成功啟動:

    journalctl -xeu beegfs-mgmtd
    註

    查看日誌條目,確認 TLS 初始化和憑證載入是否成功。

    Successfully initialized certificate verification library.
    Successfully loaded license certificate: TMP-XXXXXXXXXX

為 BeeGFS 8 用戶端設定 TLS

重要

如果您要將現有的 BeeGFS 7 叢集升級到 BeeGFS 8,請依照"升級至 BeeGFS 8"程序操作。在升級程序中指示之前,請勿設定用戶端 TLS。

建立並向所有需要與 BeeGFS 管理服務通訊的 BeeGFS 用戶端分發由本機 CA 簽署的憑證。

  1. 使用與[create-management-service-certificates]中所述的相同程序產生用戶端證書,將用戶端的 IP 位址或主機名稱替換為「使用者備用名稱(SAN)」欄位。

  2. 將用戶端憑證複製到用戶端節點並將其重新命名為 cert.pem

    scp client_cert.pem user@client:/etc/beegfs/cert.pem
  3. 在所有客戶端上重新啟動 BeeGFS 用戶端服務:

    systemctl restart beegfs-client
  4. 透過執行 BeeGFS CLI 命令來驗證用戶端連線能力,例如:

    beegfs health check

停用 TLS

停用 TLS 以進行故障排除,或者如果您的環境不需要加密。在生產環境中應避免使用此選項,因為它會將檔案系統結構和配置等潛在敏感資訊以明文形式暴露出來。

部署新的 BeeGFS 8 叢集

對於新的 BeeGFS 叢集部署,請在 Ansible 清單的 user_defined_params.yml 檔案中設定以下參數以停用 TLS:

beegfs_ha_tls_enabled: false

配置現有的 BeeGFS 8 叢集

對於現有的 BeeGFS 8 叢集,請編輯管理服務組態檔。例如,編輯位於 /mnt/mgmt_tgt_mgmt01/mgmt_config/beegfs-mgmtd.toml 的檔案並設定:

tls-disable = true

重新啟動管理服務以使變更生效。