AI作成・独立検証済(有資格者監修なし)SAA-C03 対応
KMSによる暗号化(SSE-KMS・エンベロープ暗号化)難易度 標準無料

S3バケットのデフォルト暗号化を SSE-KMS(カスタマー管理CMK指定)に設定し、10GBのオブジェクトをアップロードした。このときS3とKMSの間で実際に行われる処理として最も適切なものを選べ。(単一選択)

  1. AS3はオブジェクト本体をそのままKMSへ送信し、KMSがCMKでオブジェクト全体を直接暗号化して返す
  2. BS3はCMKに対し GenerateDataKey を呼び出して一意なデータキーを取得し、そのデータキーでオブジェクト本体を暗号化する。暗号化済みデータキーはオブジェクトのメタデータとして保存され、プレーンテキストのデータキーは使用後に破棄される
  3. Cクライアント側であらかじめデータキーを生成してオブジェクトを暗号化し、そのデータキーをKMSに預けて管理してもらう必要がある
  4. DKMSのCMK(カスタマーマスターキー相当)そのものがオブジェクトごとに複製され、各オブジェクトが専用のCMKで暗号化される
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:BAI作成・独立検証済

解説

SSE-KMSエンベロープ暗号化(envelope encryption)の仕組みで動く。KMSはデータそのものを暗号化しない (KMSの暗号化APIには扱えるデータサイズに上限があり、GB単位のオブジェクトを直接暗号化する用途には使わない)。

  • S3は、指定されたCMKに対して kms:GenerateDataKey を呼び出し、一意なデータキー(プレーンテキスト版+暗号化版のペア)を取得する。
  • プレーンテキストのデータキーでオブジェクト本体をS3側がAES-256で暗号化し、暗号化が終わったらプレーンテキストのデータキーはメモリから破棄する。
  • 暗号化されたデータキーはオブジェクトのメタデータとして一緒に保存される。
  • 復号時はメタデータ中の暗号化データキーをKMSの kms:Decrypt でCMKを使って復号し、得られたプレーンテキストのデータキーでオブジェクトを復号する。

この方式により、大きなオブジェクトでもKMSの呼び出し回数を抑えつつ(1オブジェクトにつきキー生成1回)、CMK自体はデータキーの保護のためだけに使われる。

各誤答が違う理由
  • AKMSの暗号化APIには扱えるデータ量の上限があり、オブジェクト本体を直接暗号化する用途には使われない。実際はデータキーだけをKMSが扱う。
  • Cそれはクライアント側暗号化(KMS暗号化SDK等)やSSE-Cの考え方。SSE-KMSはS3側が透過的にエンベロープ暗号化を行い、クライアントはデータキーを意識しない。
  • DCMKは複製されない。オブジェクトごとに生成・使い捨てされるのはデータキーであり、CMK自体はデータキーの暗号化/復号にのみ使われる。
ひっかけ: 「KMSがオブジェクト本体を直接暗号化している(A)」という誤解が最頻出。KMSが暗号化するのはデータキーだけで、オブジェクト本体の暗号化はS3側がデータキーを使って行う。 また「クライアント側でデータキーを管理する必要がある(C)」はSSE-C/クライアント側暗号化との混同。SSE-KMSはS3が透過的にエンベロープ暗号化を行う。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
この分野をもっと解いて、得点源に
IAMとセキュリティ設計 を含む問題を分野別に演習できます。
演習する →