文件

使用客戶管理金鑰的伺服器端加密 (SSE-C)

MinIO 伺服器端加密 (SSE) 在寫入作業時保護物件,允許用戶端利用伺服器處理能力在儲存層 (靜態加密) 保護物件。SSE 還提供符合安全鎖定和清除相關法規和合規性要求的金鑰功能。

此頁面的程序會設定和啟用使用客戶管理金鑰的伺服器端加密 (SSE-C)。MinIO SSE-C 支援在將物件寫入磁碟機之前,由用戶端驅動物件加密。用戶端必須指定正確的金鑰才能解密物件以進行讀取操作。

MinIO SSE-C 在功能上與 Amazon 使用客戶提供的金鑰的伺服器端加密 相容。

安全清除和鎖定

SSE-C 使用用戶端在寫入作業中指定的 EK 來保護物件。假設用戶端金鑰管理支援停用或刪除這些金鑰

  • 停用 EK 會暫時鎖定使用該金鑰加密的任何物件

    EK,使其無法讀取。您稍後可以啟用 EK 以繼續對這些物件進行正常的讀取操作。

  • 刪除 EK 會使該 EK 加密的所有物件

    永久無法讀取。如果用戶端 KMS 不支援 EK 的備份,則此過程是不可逆的

單個 EK 的範圍取決於要求 SSE-C 加密時指定該 EK 的寫入操作次數。

考量事項

使用複寫的 SSE-C

在版本中變更: RELEASE.2024-03-30T09-41-56Z

使用 SSE-C 加密的物件可以透過站點複製或儲存桶複製進行複製。先前版本的 MinIO 物件儲存並未複製 SSE-C 加密的物件。

經過壓縮的 SSE-C 加密物件與 MinIO 的儲存桶複製站點複製不相容。請使用SSE-KMSSSE-S3,以確保加密物件與複製相容。

SSE-C 覆蓋 SSE-S3 和 SSE-KMS

使用 SSE-C 加密物件會阻止 MinIO 將SSE-KMSSSE-S3加密應用於該物件。

快速入門

MinIO SSE-C 要求用戶端執行所有金鑰建立和儲存操作。

此程序使用mc 對來源 MinIO 部署執行操作。在具有網路存取來源部署的機器上安裝mc。請參閱mc安裝快速入門,以取得下載和安裝mc的說明。

SSE-C 金鑰必須是 256 位元的原始編碼字串或十六進位編碼字串。用戶端應用程式負責產生和儲存加密金鑰。MinIO 不會儲存 SSE-C 加密金鑰,並且在沒有用戶端管理金鑰的情況下無法解密 SSE-C 加密物件。

注意

MinIO Client RELEASE.2024-06-20T14-50-54Z 新增了對十六進位編碼金鑰的支援。

1) 產生加密金鑰

產生 256 位元的 base64 原始編碼字串或十六進位編碼字串,以用作加密金鑰。

以下範例產生符合加密金鑰需求的字串。產生的字串適用於非生產環境。

cat /dev/urandom | head -c 32 | base64 -

請依照您組織的要求產生密碼學安全的加密金鑰。

複製加密金鑰,以在下一步中使用。

2) 使用 SSE-C 加密物件

MinIO 支援以下 AWS S3 標頭以指定 SSE-C 加密

  • X-Amz-Server-Side-Encryption-Customer-Algorithm 設定為 AES256

  • X-Amz-Server-Side-Encryption-Customer-Key 設定為加密金鑰值。

  • X-Amz-Server-Side-Encryption-Customer-Key-MD5 設定為加密金鑰的 128 位元 MD5 摘要。

MinIO mc 命令列工具與 S3 相容的 SDK 包含用於設定標頭的特定語法。某些mc 命令(例如mc cp)包含用於啟用 SSE-S3 加密的特定引數

mc cp ~/data/mydata.json ALIAS/BUCKET/mydata.json \
   --encrypt-key "ALIAS/BUCKET/=c2VjcmV0ZW5jcnlwdGlvbmtleWNoYW5nZW1lMTIzNAo="
  • ALIAS 取代為您想要在其上寫入 SSE-C 加密物件的 MinIO 部署的別名

  • BUCKET 取代為您想要在其上寫入 SSE-C 加密物件的儲存桶或儲存桶前置詞的完整路徑。

3) 複製 SSE-C 加密物件

MinIO 支援以下 AWS S3 標頭,以將 SSE-C 加密物件複製到另一個與 S3 相容的服務

  • X-Amz-Copy-Source-Server-Side-Encryption-Algorithm 設定為 AES256

  • X-Amz-Copy-Source-Server-Side-Encryption-Key 設定為加密金鑰值。如果指定的金鑰與用於 SSE-C 加密物件的金鑰不符,則複製操作將會失敗。

  • X-Amz-Copy-Source-Server-Side-Encryption-Key-MD5 設定為加密金鑰的 128 位元 MD5 摘要。

MinIO mc 命令列工具與 S3 相容的 SDK 包含用於設定標頭的特定語法。某些mc 命令(例如mc cp)包含用於啟用 SSE-S3 加密的特定引數

mc cp SOURCE/BUCKET/mydata.json TARGET/BUCKET/mydata.json  \
--encrypt-key "SOURCE/BUCKET/=c2VjcmV0ZW5jcnlwdGlvbmtleWNoYW5nZW1lMTIzNAo=,TARGET/BUCKET/=c2VjcmV0ZW5jcnlwdGlvbmtleWNoYW5nZW1lMTIzNAo="
  • SOURCE/BUCKET 取代為您從中讀取加密物件的 MinIO 部署的別名,以及您想要從中讀取 SSE-C 加密物件的儲存桶或儲存桶前置詞的完整路徑。

  • TARGET/BUCKET 取代為您要將加密物件寫入的 MinIO 部署的別名,以及您想要將 SSE-C 加密物件寫入其中的儲存桶或儲存桶前置詞的完整路徑。