S3の暗号化の手段として、SSE-KMSとSSE-S3の2種類があります。
それぞれの実装上の仕様について、サポートに確認したのでメモします。
(暗号化したオブジェクトはダウンロードした時点で復号されているため、「復号(ダウンロード)」と記載します)
コンテンツ
解説
必要な権限
SSE-KMS
| 暗号化 | 復号(ダウンロード) | |
|---|---|---|
| 権限 | 不要 | kms:decrypt | 
aws s3 cpコマンドでのオプション(--sse,--sse-kms-key-id)は付けなくても暗号化されます。
SSE-S3
| 暗号化 | 復号(ダウンロード) | |
|---|---|---|
| 権限 | 不要 | 不要 | 
オブジェクトの暗号化確認方法
以下のようなコマンドで確認できます。
$ aws s3api head-object --bucket <BUCKET_NAME> --key <OBJECT_NAME> --profile <PROFILE>
e.g.
$ aws s3api head-object --bucket sample-bucket --key dummy.txt
{
    "AcceptRanges": "bytes",
    "LastModified": "2021-02-24T02:59:10+00:00",
    "ContentLength": 8790,
    "ETag": "\"a1faea4e2e459214f7e68e104bfb88de\"",
    "ContentType": "text/plain",
    "ServerSideEncryption": "aws:kms",
    "Metadata": {},
    "SSEKMSKeyId": "arn:aws:kms:ap-northeast-1:xxxxxxxxxx:key/xxxxxxxxxxxx"
}
- 暗号化されている場合は、ServerSideEncryption の項目が下記のように表示されます。
- SSE-S3 で暗号化した場合: 
"ServerSideEncryption": "AES256" - SE-KMS で暗号化した場合: 
"ServerSideEncryption": "aws:kms" - 暗号化していない場合は、ServerSideEncryption の項目が表示されません。
 
 - SSE-S3 で暗号化した場合: 
 

