使用 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 目標
此程序假設存在可從 Kubernetes 叢集存取的現有受支援的 KMS 安裝。
對於與 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 要求特定儲存貯體或物件的 EK 必須在根 KMS 上存在之後,才能使用該金鑰執行 SSE 作業。您可以使用 mc admin kms key create
命令對 MinIO 租戶執行。
您必須確保您的本機主機可以存取 MinIO 租戶 Pod 和服務,然後才能使用 mc
來管理租戶。對於 Kubernetes 叢集內部的的主機,您可以使用服務 DNS 名稱。對於 Kubernetes 叢集外部的主機,請指定由 Ingress、Load Balancer 或類似 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、Load Balancer 或類似 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、Load Balancer 或類似 Kubernetes 網路控制元件公開的服務主機名稱。
使用 mc cp
或任何具有 PutObject
函數的 S3 相容 SDK 將檔案寫入儲存貯體。然後,您可以在檔案上執行 mc stat
以確認相關聯的加密中繼資料。