オブジェクトを S3 にアップロードするために AWS KMS を設定したサーバー側の暗号化を使用しようとしています。
ドキュメントには、アップロードされたオブジェクトを暗号化する必要があると記載されています。
サーバー側の暗号化は、保管時のデータ暗号化に関するものです。つまり、Amazon S3 は、データセンターのディスクにデータを書き込むときにオブジェクトレベルでデータを暗号化し、アクセス時に復号化します。
KMSマスターキーをセットアップし、CLIを使用して次の方法でオブジェクトをアップロードしようとしました
aws s3api put-object --bucket test --key keys/test.txt --server-side-encryption aws:kms --ssekms-key-id <my_master_Key_id> --body test.txt
アップロードが成功し、次の応答が表示されます
{
"SSEKMSKeyId": "arn:aws:kms:eu-central-1:<id>:key/<my_master_key>",
"ETag": "\"a4f4fdf078bdd5df758bf81b2d9bc94d\"",
"ServerSideEncryption": "aws:kms"
}
また、S3でファイルを確認すると、サーバー側で適切なマスターキーで暗号化されていることが詳細にわかります。
問題は、KMS マスター キーを使用する権限を持たないユーザーでファイルをダウンロードすると、暗号化する必要があるファイルを問題なく開いて読み取ることができることです。
注: サーバー側の暗号化なしですべてのアップロードを拒否する PutObject ポリシーもあり、これは正常に機能します。
サーバー側の暗号化を誤解しているのだろうか、それとも何か間違ったことをしているのだろうか? どんな助けでも大歓迎です。