文件

使用 KES 的伺服器端物件加密

此步驟提供部署 MinIO 的指南,該 MinIO 設定為使用 KES 並啟用伺服器端加密。有關執行 KES 的說明,請參閱KES 文件

在此步驟中,您將會

  1. 建立新的EK以用於SSE

  2. 使用KES建立或修改支援SSE的 MinIO 部署。請參考部署分散式 MinIO教學,以取得有關生產就緒 MinIO 部署的指南。

  3. 設定自動儲存區預設SSE-KMS

重要

在 MinIO 部署上啟用SSE會使用預設加密金鑰自動加密該部署的後端資料。

MinIO *需要* 存取 KES 和外部 KMS 才能解密後端並正常啟動。KMS *必須* 維護並提供對MINIO_KMS_KES_KEY_NAME的存取權限。您稍後無法停用 KES 或「取消」SSE組態。

先決條件

確保 KES 可以存取支援的 KMS 目標

此步驟假設現有的 KES 安裝已連線至可從本機主機存取的支援KMS安裝。請參閱您的支援 KMS 目標的安裝說明,以部署 KES 並將其連線至 KMS 解決方案。

KES 作業需要解除封印的目標

某些支援的KMS目標允許您密封或解除密封金庫執行個體。如果已設定的KMS服務已密封,KES 會傳回錯誤。

如果您重新啟動或以其他方式密封金庫執行個體,KES 無法對金庫執行任何密碼編譯作業。您必須解除密封金庫以確保正常運作。

請參閱您選擇的KMS解決方案的文件,以取得有關是否可能需要解除密封的更多資訊。

請參閱KES 文件中您選擇的支援KMS的組態說明

部署或確保可以存取 MinIO 部署

此步驟提供修改 MinIO 部署的啟動環境變數的說明,以透過 KES 和 KMS 目標啟用SSE

有關新生產部署的說明,請參閱多節點多磁碟 (分散式)教學。有關新本機或評估部署的說明,請參閱單節點單磁碟教學。

在為部署建立環境檔案時,請暫停並切換回本教學,以包含支援SSE的必要環境變數。

對於現有的 MinIO 部署,您可以修改現有的環境檔案,並依照此步驟中的指示重新啟動部署。

步驟

此步驟提供在生產環境中使用您選擇的支援 KMS 解決方案設定和啟用伺服器端加密的說明。具體來說,此步驟假設以下情況

  • 現有的生產級 KMS 目標

  • 一個或多個連線至 KMS 目標的 KES 伺服器

  • 一個或多個用於新的或現有的 MinIO 部署的主機

先決條件

根據您選擇的支援的 KMS 目標配置,您可能需要將 kes-server.cert 作為信任的憑證授權單位 (CA) 傳遞。請參考用戶端文件,以取得關於信任第三方 CA 的說明。

1) 產生一個供 MinIO 使用的 KES API 金鑰

從 KES 版本 2023-02-15T14-54-37Z 開始,您可以產生一個 API 金鑰,用於向 KES 伺服器進行身份驗證。

使用 kes identity new 命令來產生一個供 MinIO 伺服器使用的新 API 金鑰

kes identity new

輸出結果包含供 MinIO 使用的 API 金鑰,以及用於 KES 政策配置的身份雜湊值。

2) 建立 MinIO 設定

設定 MinIO 環境檔案

為目標部署中的所有主機建立或修改 MinIO 伺服器環境檔案,以包含以下環境變數

將以下行新增至每個 MinIO 主機上的 MinIO 環境檔案。請參閱部署 MinIO:單節點單硬碟部署 MinIO:單節點多硬碟部署 MinIO:多節點多硬碟教學,以取得關於基本 MinIO 環境檔案的更詳細描述。

# Add these environment variables to the existing environment file

MINIO_KMS_KES_ENDPOINT=https://HOSTNAME:7373
MINIO_KMS_KES_API_KEY="kes:v1:ACTpAsNoaGf2Ow9o5gU8OmcaG6Af/VcZ1Mt7ysuKoBjv"

# Allows validation of the KES Server Certificate (Self-Signed or Third-Party CA)
# Change this path to the location of the KES CA Path
MINIO_KMS_KES_CAPATH=/opt/kes/certs/kes-server.cert

# Sets the default KMS key for the backend and SSE-KMS/SSE-S3 Operations)
MINIO_KMS_KES_KEY_NAME=minio-backend-default-key

HOSTNAME 替換為 KES 伺服器的 IP 位址或主機名稱。如果 MinIO 伺服器主機無法解析或連線到指定的 HOSTNAME,則部署可能會傳回錯誤或啟動失敗。

  • 如果使用單個 KES 伺服器主機,請指定該主機的 IP 或主機名稱

  • 如果使用多個 KES 伺服器主機,請指定每個主機的 IP 或主機名稱,並以逗號分隔

MinIO 將 MINIO_KMS_KES_KEY_NAME 金鑰用於以下加密操作

  • 加密 MinIO 後端(IAM、設定等)

  • 如果請求不包含特定的 EK,則使用 SSE-KMS 加密物件。

  • 使用 SSE-S3 加密物件。

MinIO 預設會在 /etc/default/minio 尋找此檔案。如果您修改了部署以使用不同的環境檔案位置,請修改該位置的檔案。

3) 啟動 MinIO

KES 操作需要解除封鎖的 Vault

根據您選擇的 KMS 解決方案,您可能需要解除金鑰實例的封鎖,以允許正常的加密操作,包括金鑰建立或檢索。KES 需要解除封鎖的金鑰目標才能執行其操作。

請參閱您選擇的 KMS 解決方案的文件,以取得關於是否需要對實例進行封鎖和解除封鎖才能進行操作的資訊。

您必須在啟動 MinIO *之前* 啟動 KES。MinIO 部署需要在其啟動期間存取 KES。

此步驟使用 systemd 來啟動和管理 MinIO 伺服器程序

啟動 MinIO 伺服器

對於新的 MinIO 部署,請在每個 MinIO 主機上執行以下命令以啟動服務

systemctl start minio

對於現有的 MinIO 部署,請在每個 MinIO 主機上執行以下命令以重新啟動服務

systemctl reload minio
systemctl restart minio

4) 產生新的加密金鑰

MinIO 要求在執行使用該金鑰的 SSE 操作 *之前*,EK 必須存在於 KMS 上。使用 kes key create *或* mc admin kms key create 以新增一個新的 EK,供 SSE 使用。

以下命令使用 mc admin kms key create 命令,以新增一個儲存在 KMS 伺服器上的新外部金鑰 (EK),供加密 MinIO 後端使用。

mc admin kms key create ALIAS KEYNAME

5) 為儲存貯體啟用 SSE-KMS

您可以使用 MinIO 主控台或 MinIO mc CLI,以使用產生的金鑰啟用儲存貯體預設的 SSE-KMS

在您偏好的瀏覽器中導覽至 http://127.0.0.1:9001,並使用指定給 MinIO 伺服器的根憑證登入,以開啟 MinIO 主控台。如果您使用不同的主控台監聽連接埠部署 MinIO,請將 9001 替換為該連接埠值。

登入後,建立一個新的儲存貯體,並根據您的偏好命名。選取齒輪圖示以開啟管理檢視。

選取 加密 欄位旁的鉛筆圖示,以開啟用於設定儲存貯體預設 SSE 方案的模式視窗。

選取 SSE-KMS,然後輸入在上一個步驟中建立的金鑰名稱。

儲存您的變更後,嘗試上傳檔案至該儲存貯體。在物件瀏覽器中檢視該檔案時,請注意側邊欄中繼資料包含 SSE 加密方案和用於加密該物件的金鑰資訊。這表示物件已成功加密。

以下命令

  • 為 MinIO 部署建立新的 別名

  • 建立一個新的儲存貯體以儲存加密資料

  • 在該儲存貯體上啟用 SSE-KMS 加密

mc alias set local http://127.0.0.1:9000 ROOTUSER ROOTPASSWORD

mc mb local/encryptedbucket
mc encrypt set SSE-KMS encrypted-bucket-key ALIAS/encryptedbucket

使用 mc cp 或具有 PutObject 函數的任何 S3 相容 SDK 將檔案寫入至該儲存貯體。然後,您可以在該檔案上執行 mc stat,以確認相關聯的加密中繼資料。