使用 KES 的伺服器端物件加密
此步驟提供部署 MinIO 的指南,該 MinIO 設定為使用 KES 並啟用伺服器端加密。有關執行 KES 的說明,請參閱KES 文件。
在此步驟中,您將會
建立新的EK以用於SSE。
使用KES建立或修改支援SSE的 MinIO 部署。請參考部署分散式 MinIO教學,以取得有關生產就緒 MinIO 部署的指南。
設定自動儲存區預設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 預設會在 /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
,以確認相關聯的加密中繼資料。