使用 KES 的伺服器端物件加密
此程序假設單一本地主機執行 MinIO 和 KES 程序。如需有關執行 KES 的說明,請參閱KES 文件。
注意
對於生產協調環境,請使用 MinIO Kubernetes Operator 部署已啟用 SSE 並設定為與您的 KMS 搭配使用的租戶。
對於生產裸機環境,請參閱MinIO on Linux 文件,以取得有關設定 MinIO 與 KES 和您的 KMS 的教學課程。
在此程序中,您將
重要事項
在 MinIO 部署上啟用 SSE 會使用預設加密金鑰自動加密該部署的後端資料。
MinIO 需要存取 KES 和外部 KMS 才能解密後端並正常啟動。KMS 必須維護並提供對MINIO_KMS_KES_KEY_NAME
的存取權。您之後無法停用 KES,也無法在之後「取消」SSE 設定。
先決條件
確保 KES 存取受支援的 KMS 目標
此程序假設存在可從本地主機存取的現有 KES 安裝,且已連接到受支援的 KMS 安裝。請參閱您的受支援 KMS 目標的安裝說明,以部署 KES 並將其連接到 KMS 解決方案。
KES 作業需要解除封鎖的目標
某些受支援的 KMS 目標允許您密封或解除密封保管庫執行個體。如果設定的 KMS 服務已密封,KES 會傳回錯誤。
如果您重新啟動或以其他方式密封保管庫執行個體,則 KES 無法對保管庫執行任何密碼編譯作業。您必須解除密封保管庫以確保正常運作。
請參閱您選擇的 KMS 解決方案的文件,以取得關於是否可能需要解除密封的更多資訊。
請參閱您選擇的受支援KMS的KES 文件中的設定說明
部署或確保對 MinIO 部署的存取權
此程序提供修改 MinIO 部署的啟動環境變數的說明,以透過 KES 和 KMS 目標啟用SSE。
關於新的生產環境部署的說明,請參閱多節點多磁碟 (分散式)教學。關於新的本機或評估部署的說明,請參閱單節點單磁碟教學。
在建立部署的環境檔案時,請暫停並切換回本教學,以加入支援SSE的必要環境變數。
對於現有的 MinIO 部署,您可以修改現有的環境檔案,並按照此程序中的指示重新啟動部署。
使用伺服器端加密部署 MinIO 和 KES
在開始這些步驟之前,請建立以下資料夾
mkdir -P ~/minio-kes-vault/certs
mkdir -P ~/minio-kes-vault/config
mkdir -P ~/minio-kes-vault/minio
先決條件
根據您選擇的支援的 KMS 目標設定,您可能需要將 kes-server.cert
作為受信任的憑證授權單位 (CA) 傳遞。請參閱用戶端文件,以取得信任第三方 CA 的說明。
1) 建立 MinIO 設定
建立 MinIO 環境檔案
使用您偏好的文字編輯器建立環境檔案。以下範例使用 nano
nano ~/minio-kes-vault/config/minio
在每個 MinIO 主機上將以下幾行新增至 MinIO 環境檔案。請參閱部署 MinIO:單節點單磁碟、部署 MinIO:單節點多磁碟或部署 MinIO:多節點多磁碟教學,以取得基本 MinIO 環境檔案的更詳細說明。
# Add these environment variables to the existing environment file
MINIO_KMS_KES_ENDPOINT=https://HOSTNAME:7373
MINIO_KMS_KES_API_KEY="kes:v1:ACTpAsNoaGf2Ow9o5gU8OmcaG6Af/VcZ1Mt7ysuKoBjv"
# Allows validation of the KES Server Certificate (Self-Signed or Third-Party CA)
# Change this path to the location of the KES CA Path
MINIO_KMS_KES_CAPATH=~/minio-kes-vault/certs/kes-server.cert
# Sets the default KMS key for the backend and SSE-KMS/SSE-S3 Operations)
MINIO_KMS_KES_KEY_NAME=minio-backend-default-key
將 HOSTNAME
替換為 KES 伺服器的 IP 位址或主機名稱。如果 MinIO 伺服器主機無法解析或連線到指定的 HOSTNAME
,則部署可能會傳回錯誤或無法啟動。
如果使用單一 KES 伺服器主機,請指定該主機的 IP 或主機名稱
如果使用多個 KES 伺服器主機,請指定每個主機的 IP 或主機名稱的逗號分隔清單
MinIO 使用MINIO_KMS_KES_KEY_NAME
金鑰進行以下加密操作
3) 啟動 MinIO 伺服器
注意
您必須在啟動 MinIO 之前啟動 KES。MinIO 部署需要在啟動時存取 KES。
在終端機或 shell 中執行以下命令,以將 MinIO 伺服器作為前景程序啟動。
export MINIO_CONFIG_ENV_FILE=~/minio-kes-vault/config/minio
minio server --console-address :9001
前景程序取決於執行它們的 shell 或終端機。結束或終止 shell/終端機實例也會終止附加的程序。請參閱您的作業系統最佳實務,以在背景中執行程序。
4) 產生新的加密金鑰
MinIO 要求 EK 在 KMS 上存在之後,才能使用該金鑰執行 SSE 操作。使用 kes key create
或 mc admin kms key create
新增一個新的EK,以用於SSE。
以下命令使用mc admin kms key create
命令新增一個儲存在 KMS 伺服器上的新外部金鑰 (EK),以用於加密 MinIO 後端。
mc admin kms key create ALIAS KEYNAME
5) 為儲存貯體啟用 SSE-KMS
您可以使用 MinIO 主控台或 MinIO mc
CLI,以使用產生的金鑰啟用儲存貯體預設的 SSE-KMS
在您偏好的瀏覽器中瀏覽至http://127.0.0.1:9001,並使用指定給 MinIO 伺服器的根認證登入,以開啟 MinIO 主控台。如果您使用不同的主控台監聽連接埠部署 MinIO,請將 9001
替換為該連接埠值。
登入後,建立一個新的儲存貯體,並根據您的偏好命名。選取齒輪圖示以開啟管理檢視。
選取鉛筆圖示,此圖示位於加密欄位旁邊,以開啟用於設定儲存貯體預設 SSE 方案的模式。
選取SSE-KMS,然後輸入在上一個步驟中建立的金鑰名稱。
儲存變更後,嘗試將檔案上傳到儲存貯體。在物件瀏覽器中檢視該檔案時,請注意側邊欄的中繼資料包含 SSE 加密方案以及用於加密該物件的金鑰資訊。這表示該物件已成功加密。
以下命令
為 MinIO 部署建立新的別名
建立一個新的儲存貯體以儲存加密的資料
在該儲存貯體上啟用 SSE-KMS 加密
mc alias set local http://127.0.0.1:9000 ROOTUSER ROOTPASSWORD
mc mb local/encryptedbucket
mc encrypt set SSE-KMS encrypted-bucket-key ALIAS/encryptedbucket
使用 mc cp
或任何具有 PutObject
函式的 S3 相容 SDK,將檔案寫入儲存貯體。然後,您可以在該檔案上執行 mc stat
,以確認相關聯的加密中繼資料。