使用 KES 的伺服器端物件加密
此程序假設您有權存取具有作用中 MinIO Operator 安裝的 Kubernetes 叢集。有關運行 KES 的說明,請參閱 KES 文件。
作為此程序的一部分,您將
使用 MinIO Operator 主控台建立或管理 MinIO 租戶。
存取該租戶的 加密 設定,並使用 支援的金鑰管理系統 設定 SSE。
建立新的 EK 以用於 SSE。
設定自動儲存區預設 SSE-KMS。
對於生產裸機環境,請參閱 Linux 上 MinIO 文件,以取得有關使用 KES 和您的 KMS 配置 MinIO 的教學課程。
重要
在 MinIO 部署上啟用 SSE 會使用預設加密金鑰自動加密該部署的後端數據。
MinIO 需要 存取 KES 和外部 KMS 才能解密後端並正常啟動。KMS 必須 維護並提供對 MINIO_KMS_KES_KEY_NAME
的存取權。您稍後無法停用 KES 或「撤銷」SSE 配置。
先決條件
MinIO Kubernetes Operator
確保您的目標 Kubernetes 叢集已安裝有效且可運作的 MinIO Kubernetes Operator。此文件假設最新的穩定 Operator 版本為 6.0.4。
請參閱 部署 MinIO Operator 以取得有關部署 MinIO Operator 的完整文件。
確保 KES 可以存取支援的 KMS 目標
此程序假設現有的 支援的 KMS 安裝 可從 Kubernetes 叢集存取。
對於與 MinIO 租戶位於同一 Kubernetes 叢集內的部署,您可以使用 Kubernetes 服務名稱來允許 MinIO 租戶建立與目標 KMS 服務的連線。
對於 Kubernetes 叢集外部的部署,您必須確保叢集支援 Kubernetes 服務與 Pod 和外部網路之間的路由通訊。這可能需要配置或部署其他 Kubernetes 網路元件和/或啟用對公用網際網路的存取。
請參閱您選擇的 KMS 解決方案的文件,以取得有關部署和配置的指南。
請參閱 KES 文件中針對您選擇的支援 KMS 的配置說明
部署具有伺服器端加密的 MinIO 租戶
1) 存取 Operator 主控台
暫時轉送本機主機和 MinIO Operator 主控台之間的流量,並檢索您的 Operator 部署的 JWT 權杖。有關說明,請參閱 配置對 Operator 主控台服務的存取。
在您的瀏覽器中開啟臨時 URL,並在登入頁面中輸入 JWT 權杖。您應該會看到 租戶 頁面

按一下 + 建立租戶 開始建立 MinIO 租戶。
2) 完成「加密」區段
請參考「部署 MinIO 租戶」程序,以獲取其他租戶設定的完整文件。
若要在租戶部署期間啟用使用支援的 KMS 目標的SSE,請選取「加密」區段,並將開關切換為「啟用」。接著,您可以選擇所選 KMS 提供者的單選按鈕,以顯示該提供者的組態設定。

星號 *
表示必填欄位。
請參閱您所選支援的 KMS 目標的教學課程之「組態參考」區段,以取得有關 KMS 組態選項的更多資訊。
完成組態後,您可以完成「租戶部署」的任何剩餘區段。
3) 產生新的加密金鑰
建立金鑰之前,請先解封 Vault
如果您的所選提供者要求,您必須先解封後端 vault 實例,才能建立新的加密金鑰。如需更多資訊,請參閱您所選 KMS 解決方案的文件。
MinIO 要求在執行使用該金鑰的SSE操作之前,給定儲存貯體或物件的EK必須存在於根 KMS 上。您可以針對 MinIO 租戶使用 mc admin kms key create
命令。
您必須確保本機主機可以存取 MinIO 租戶 pod 和服務,然後才能使用 mc
來管理租戶。對於 Kubernetes 叢集內的主機,您可以使用服務 DNS 名稱。對於 Kubernetes 叢集外部的主機,請指定由 Ingress、負載平衡器或類似 Kubernetes 網路控制元件公開的服務的主機名稱。
在獨立的終端機或 Shell 中執行此命令
# Replace '-n minio' with the namespace of the MinIO deployment
# If you deployed the Tenant without TLS you may need to change the port range
# You can validate the ports in use by running
# kubectl get svc/minio -n minio
kubectl port forward svc/minio 443:443 -n minio
在新終端機或 Shell 視窗中執行以下命令
將本機
mc
用戶端連線至租戶。建立加密金鑰。
請參閱快速入門,以取得在本機主機上安裝 mc
的說明。
# Replace USERNAME and PASSWORD with a user on the tenant with administrative permissions
# such as the root user
mc alias add k8s https://127.0.0.1:443 ROOTUSER ROOTPASSWORD
# Replace my-new-key with the name of the key you want to use for SSE-KMS
mc admin kms key create k8s encrypted-bucket-key
4) 啟用儲存貯體的 SSE-KMS
您可以使用 MinIO 租戶主控台或 MinIO mc
CLI,使用產生的金鑰啟用儲存貯體預設的 SSE-KMS
連線至「MinIO 租戶主控台服務」並登入。對於 Kubernetes 叢集內部的用戶端,您可以指定服務 DNS 名稱。對於 Kubernetes 叢集外部的用戶端,請指定由 Ingress、負載平衡器或類似 Kubernetes 網路控制元件公開的服務的主機名稱。
登入後,建立新的儲存貯體,並根據您的喜好命名。選取齒輪圖示以開啟管理檢視。
選取「加密」欄位旁的鉛筆圖示,以開啟用於設定儲存貯體預設 SSE 機制的模態視窗。
選取「SSE-KMS」,然後輸入在上一步驟中建立的金鑰名稱。
儲存變更後,嘗試將檔案上傳到儲存貯體。在物件瀏覽器中檢視該檔案時,請注意側邊欄的中繼資料包含 SSE 加密機制,以及用於加密該物件的金鑰資訊。這表示物件已成功加密。
使用「MinIO API 服務」為 MinIO 部署建立新的別名。然後,您可以使用 mc encrypt set
命令來啟用儲存貯體的 SSE-KMS 加密
mc alias set k8s https://minio.minio-tenant-1.svc.cluster-domain.example:443 ROOTUSER ROOTPASSWORD
mc mb k8s/encryptedbucket
mc encrypt set SSE-KMS encrypted-bucket-key k8s/encryptedbucket
對於 Kubernetes 叢集外部的用戶端,請指定由 Ingress、負載平衡器或類似 Kubernetes 網路控制元件公開的服務的主機名稱。
使用 mc cp
或任何具有 PutObject
函數的相容 S3 SDK,將檔案寫入儲存貯體。然後,您可以在檔案上執行 mc stat
,以確認相關聯的加密中繼資料。