文件

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

此程序假設您可以存取具有作用中 MinIO Operator 安裝的 Kubernetes 叢集。如需執行 KES 的說明,請參閱KES 文件

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

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

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

  3. 建立一個新的 EK,用於 SSE

  4. 設定自動 Bucket 預設 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 Tenant

1) 存取 Operator Console

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

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

MinIO Operator Console

點擊 + Create Tenant 以開始建立 MinIO Tenant。

2) 完成 Encryption 區段

參考部署 MinIO Tenant 程序,以取得其他 Tenant 設定的完整文件。

若要在 Tenant 部署期間啟用具有支援的 KMS 目標SSE,請選取 Encryption 區段,並將開關切換為 Enabled。然後,您可以選擇所選 KMS 供應商的單選按鈕,以顯示該供應商的組態設定。

MinIO Operator Console - Create a Tenant - Encryption Section

星號 * 表示必填欄位。

請參閱教學課程中針對您所選支援的 KMS 目標的組態參考區段,以取得有關您的 KMS 組態選項的更多資訊。

完成組態設定後,您可以完成Tenant 部署的任何剩餘區段。

3) 產生新的加密金鑰

在建立金鑰之前解除鎖定 Vault

如果您的選定供應商需要,您必須在建立新的加密金鑰之前解除鎖定後端 vault 實例。有關更多資訊,請參閱您所選 KMS 解決方案的文件。

MinIO 要求指定儲存貯體或物件的 EK 必須在根 KMS 上存在才能使用該金鑰執行 SSE 操作。您可以使用針對 MinIO Tenant 的 mc admin kms key create 命令。

您必須確保本機主機可以存取 MinIO Tenant Pod 和服務,才能使用 mc 來管理 Tenant。對於 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 用戶端連線到 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) 為儲存貯體啟用 SSE-KMS

您可以使用 MinIO Tenant Console 或 MinIO mc CLI,以使用產生的金鑰啟用儲存貯體預設 SSE-KMS

連線到 MinIO Tenant Console 服務 並登入。對於 Kubernetes 叢集內部的用戶端,您可以指定服務 DNS 名稱。對於 Kubernetes 叢集外部的用戶端,請指定由 Ingress、負載平衡器或類似 Kubernetes 網路控制元件公開的服務主機名稱。

登入後,建立一個新的儲存貯體,並依您的喜好命名。選取齒輪圖示以開啟管理檢視。

選取 Encryption 欄位旁邊的鉛筆圖示以開啟用於設定儲存貯體預設 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,以確認相關聯的加密中繼資料。