おはようございます、YASUです。
DVAの模擬試験で、aws:SecureTransportという言葉が出てきて、意味が分かりませんでした。調べてみると、S3の「暗号化」の整理とセットで理解できたので、シンプルにまとめます。
目次
結論
暗号化には「転送中」と「保存中」の2種類があります。aws:SecureTransportは、転送中の暗号化、つまり、HTTPSで通信しているかを確認する条件です。S3でHTTPSだけを許可したい時は、バケットポリシーで、この値がfalse(HTTP)のリクエストを拒否します。
2種類の暗号化
自分なりのイメージでは、転送中は「封筒に入れて送る」、保存中は「金庫にしまう」です。
- 転送中の暗号化:通信の途中で、中身を盗み見られないようにする。HTTPS(TLS)を使う
- 保存中の暗号化:S3に保存されたデータそのものを、暗号化しておく。サーバー側の暗号化(SSE)などを使う
転送中:aws:SecureTransport
aws:SecureTransportは、リクエストがHTTPSで送られたかを表す条件キーです。HTTPSならtrue、HTTPならfalseになります。S3でHTTPSだけを許可するには、次のように、falseのリクエストをDenyします。
{
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::バケット名",
"arn:aws:s3:::バケット名/*"
],
"Condition": {
"Bool": { "aws:SecureTransport": "false" }
}
}
読み方は、「HTTPで来たリクエストは、すべて拒否する」です。この条件があると、HTTPSのリクエストだけが通ります。
保存中:S3のサーバー側の暗号化
- SSE-S3:S3が管理する鍵で暗号化する。2023年1月5日以降は、S3にアップロードされるすべての新しいオブジェクトが、追加料金なしで、自動的にSSE-S3で暗号化される
- SSE-KMS:KMSが鍵を管理する。KMSの鍵を使うには、別の権限が必要で、誰がいつ、どの鍵で、どのオブジェクトにアクセスしたかの記録も残る。追加の料金がかかる
- SSE-C:自分で用意した鍵を使う。鍵の管理も、自分の責任になる
このほかに、データをS3に送る前に、クライアント側で暗号化する方法もあります。
試験での見分け方
- 「HTTPSのみを強制したい」「転送中のデータを暗号化したい」→
aws:SecureTransportがfalseのリクエストをDeny - 「保存されたデータを暗号化したい」→ SSE-S3、SSE-KMSなど
- 「鍵の使用履歴を残したい」「鍵の使用に別の権限をかけたい」→ SSE-KMS
- 「鍵を自分で管理したい」→ SSE-C
問題文を読む時は、「通信の話か、保存の話か」を最初に見分けると、選択肢が絞りやすくなります。
まとめ
- 暗号化は、転送中(HTTPS)と保存中(SSEなど)の2種類
aws:SecureTransportは、HTTPSで送られたかを表す条件で、falseをDenyすると、HTTPSだけを許可できる- S3のオブジェクトは、2023年1月5日以降、デフォルトでSSE-S3で暗号化される
- 鍵の使用履歴や、別の権限が必要なら、SSE-KMSを選ぶ
「通信の暗号化」と「保存の暗号化」を分けて考えると、すっきり整理できました。それでは、また明日!

コメント