使用 KES 的伺服器端物件加密
此程序假設您可以存取具有活動 MinIO Operator 安裝的 Kubernetes 叢集。有關執行 KES 的說明,請參閱 KES 文件。
作為此程序的一部分,您將
使用 MinIO Operator 主控台來建立或管理 MinIO 租戶。
存取該租戶的 加密 設定,並使用受支援的金鑰管理系統來設定 SSE。
建立一個新的 EK,以用於 SSE。
設定自動儲存貯體預設 SSE-KMS。
對於生產裸機環境,請參閱 MinIO on Linux 文件,以取得有關使用 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 Tenant 相同的 Kubernetes 叢集內的情況,您可以使用 Kubernetes 服務名稱,讓 MinIO Tenant 能夠建立與目標 KMS 服務的連線。
對於部署在 Kubernetes 叢集外部的情況,您必須確保叢集支援 Kubernetes 服務和 Pods 與外部網路之間的路由通訊。這可能需要設定或部署額外的 Kubernetes 網路元件,和/或啟用對公共網路的存取。
請參考您選擇的 KMS 解決方案的文件,以取得部署和設定的指南。
請參閱KES 文件中關於您所選擇支援的KMS的設定說明。
使用伺服器端加密部署 MinIO Tenant
1) 存取 Operator Console
暫時轉發本機主機與 MinIO Operator Console 之間的流量,並檢索您 Operator 部署的 JWT 令牌。有關說明,請參閱設定存取 Operator Console 服務。
在您的瀏覽器中開啟臨時 URL,並在登入頁面輸入 JWT 令牌。您應該會看到租戶頁面。

點擊+ 建立租戶以開始建立 MinIO Tenant。
2) 完成加密部分
請參考部署 MinIO Tenant程序,以取得其他租戶設定的完整文件。
要在 Tenant 部署期間使用支援的 KMS 目標啟用SSE,請選擇加密部分,然後將開關切換為啟用。然後,您可以選擇所選 KMS 提供者的單選按鈕,以顯示該提供者的設定。

星號 *
表示必填欄位。
請參閱本教程中關於您所選擇的支援的 KMS 目標的設定參考部分,以了解有關您的 KMS 設定選項的更多資訊。
完成設定後,您可以完成租戶部署的其餘部分。
3) 產生新的加密金鑰
在建立金鑰之前解除 Vault 的封鎖
如果您的選擇的提供者要求,您必須在建立新的加密金鑰之前解除後端 Vault 實例的封鎖。有關更多資訊,請參閱您選擇的 KMS 解決方案的文件。
MinIO 要求在執行使用該金鑰的SSE操作*之前*,特定 Bucket 或物件的EK必須存在於根 KMS 上。您可以使用針對 MinIO Tenant 的mc admin kms key create
命令。
您必須確保您的本機主機可以存取 MinIO Tenant Pods 和服務,然後才能使用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
客戶端連線到 Tenant。建立加密金鑰。
有關在本機主機上安裝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) 為 Bucket 啟用 SSE-KMS
您可以使用 MinIO Tenant Console 或 MinIO mc
CLI,使用產生的金鑰啟用 Bucket 預設的 SSE-KMS。
連線到MinIO Tenant Console 服務並登入。對於 Kubernetes 叢集內的客戶端,您可以指定服務 DNS 名稱。對於 Kubernetes 叢集外部的客戶端,請指定由 Ingress、Load Balancer 或類似 Kubernetes 網路控制元件公開的服務主機名稱。
登入後,建立一個新的 Bucket 並根據您的喜好命名。選擇齒輪圖示以開啟管理視圖。
選擇加密欄位旁邊的鉛筆圖示,以開啟用於設定 Bucket 預設 SSE 方案的模式。
選擇SSE-KMS,然後輸入在上一步中建立的金鑰名稱。
儲存變更後,嘗試上傳檔案到 Bucket。在物件瀏覽器中檢視該檔案時,請注意側邊欄中的元數據包含 SSE 加密方案和用於加密該物件的金鑰資訊。這表示物件已成功加密。
使用MinIO API 服務為 MinIO 部署建立新的別名。然後,您可以使用mc encrypt set
命令為 Bucket 啟用 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 將檔案寫入 Bucket。然後,您可以在該檔案上執行mc stat
以確認相關的加密元數據。