如何使用 AWS KMS 加密 Amazon S3 儲存貯體中的特定資料夾?

2 分的閱讀內容
0

我想要使用 AWS Key Management Service (AWS KMS) 金鑰加密 Amazon Simple Storage Service (Amazon S3) 儲存貯體中的特定資料夾。

解決方法

使用 Amazon S3 主控台

  1. 開啟 Amazon S3 主控台
  2. 導覽至您想要加密的資料夾。
    **警告:**如果您的資料夾包含大量物件,您可能會遇到限流錯誤。若要避免限流錯誤,請增加 Amazon S3 儲存貯體上的 Amazon S3 請求限制。如需限流錯誤的疑難排解提示,請參閱為什麼我在對 AWS KMS 發出請求時收到 ThrottlingExceptions 錯誤?
  3. 選取資料夾,然後選擇「動作」。
  4. 選擇「編輯伺服器端加密」。
  5. 若為「啟用伺服器端加密」,請選擇「啟用」。
  6. 若為您的 AWS Key Management Service 金鑰 (SSE-KMS),請選擇「加密金鑰類型」。
  7. 選取您想要用於資料夾加密的 AWS KMS 金鑰。
    **注意事項:**名稱為 aws/s3 的金鑰是 AWS KMS 管理的預設金鑰。您可以使用預設金鑰或自訂金鑰來加密資料夾。
  8. 選擇「儲存變更」。

使用 AWS CLI

您無法從 AWS Command Line Interface (AWS CLI) 命令變更現有資料夾的加密。相反地,可以在使用開啟 AWS KMS 加密的情況下,執行將資料夾複製至資料夾本身的命令。

**注意事項:**如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新版本的 AWS CLI

若要使用預設的 AWS KMS 金鑰 (aws/s3) 來加密檔案,請執行下列命令:

aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms

此命令語法會使用 AWS KMS 加密將資料夾複製至資料夾本身。

若要使用自訂 AWS KMS 金鑰來加密檔案,請執行下列命令:

aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms --sse-kms-key-id a1b2c3d4-e5f6-7890-g1h2-123456789abc

**注意事項:**以您自己的金鑰 ID 取代 --sse-kms-key-id

要求未來上傳使用 AWS KMS 加密物件

變更加密設定之後,這僅會加密已存在於資料夾中的物件。您可以在此變更之後上傳物件,而無須加密。若要求未來上傳使用 AWS KMS 加密物件,請使用儲存貯體政策,如下列範例所示:

{
  "Version": "2012-10-17",
  "Id": "PutObjPolicy",
  "Statement": [
    {
      "Sid": "DenyIncorrectEncryptionHeader",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/awsexamplefolder/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    },
    {
      "Sid": "DenyUnEncryptedObjectUploads",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/awsexamplefolder/*",
      "Condition": {
        "Null": {
          "s3:x-amz-server-side-encryption": true
        }
      }
    }
  ]
}

除非請求包含以 AWS KMS 進行伺服器端加密,否則此儲存貯體政策會拒絕存取 docexamplebucket/docexamplefolder/* 上的 s3:PutObject

相關資訊

使用以 AWS KMS 金鑰 (SSE-KMS) 進行伺服器端加密

AWS 官方
AWS 官方已更新 7 個月前