文件

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

此程序假設您有權存取已安裝有效 MinIO Operator 的 Kubernetes 叢集。有關執行 KES 的說明,請參閱 KES 文件

作為此程序的一部分,您將

  1. 使用 MinIO Operator 主控台建立或管理 MinIO 租戶。

  2. 存取該租戶的 加密 設定,並使用支援的金鑰管理系統設定 SSE

  3. 建立新的 EK 以用於 SSE

  4. 設定自動儲存桶預設 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 租戶位於同一個 Kubernetes 叢集中的部署,您可以使用 Kubernetes 服務名稱,以允許 MinIO 租戶建立與目標 KMS 服務的連線。

  • 對於 Kubernetes 叢集外部的部署,您必須確保叢集支援在 Kubernetes 服務和 Pod 與外部網路之間路由通訊。這可能需要設定或部署額外的 Kubernetes 網路元件,和/或啟用對公共網際網路的存取。

有關部署和設定的指南,請參閱您選擇的 KMS 解決方案的文件。

有關您選擇的受支援 KMS 的設定說明,請參閱 KES 文件

使用伺服器端加密部署 MinIO 租戶

1) 存取 Operator 主控台

暫時轉發本機主機和 MinIO Operator 主控台之間的流量,並檢索 Operator 部署的 JWT 權杖。有關說明,請參閱 設定對 Operator 主控台服務的存取權

在您的瀏覽器中開啟臨時 URL,並將 JWT 權杖輸入登入頁面。您應該會看到 租戶 頁面

MinIO Operator Console

按一下 + 建立租戶 開始建立 MinIO 租戶。

2) 完成 加密 區段

關於其他租戶設定的完整文件,請參考部署 MinIO 租戶程序。

若要在租戶部署期間啟用使用支援的 KMS 目標SSE,請選取加密區段,並將開關切換為已啟用。接著您可以選取所選 KMS 提供者的單選按鈕,以顯示該提供者的設定。

MinIO Operator Console - Create a Tenant - Encryption Section

星號 * 標記為必填欄位。

請參閱您所選支援的 KMS 目標的教學文件中的「組態參考」章節,以取得有關 KMS 組態選項的更多資訊。

完成組態後,您可以完成租戶部署的任何剩餘區段。

3) 產生新的加密金鑰

在建立金鑰之前解除 Vault 的封鎖

如果您的選擇的供應商需要,您必須先解除後端 vault 執行個體的封鎖,才能建立新的加密金鑰。請參閱您選擇的 KMS 解決方案的文件以取得更多資訊。

MinIO 要求指定的儲存桶或物件的EK,必須在執行使用該金鑰的SSE操作之前存在於根 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,以確認相關的加密中繼資料。