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