MENU

暗号化は「転送中」と「保存中」で分ける。S3のaws:SecureTransportの意味を整理した

暗号化は「転送中」と「保存中」で分ける。S3のaws:SecureTransportの意味を整理したことを説明する画像

おはようございます、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を選ぶ

「通信の暗号化」と「保存の暗号化」を分けて考えると、すっきり整理できました。それでは、また明日!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次