無限ノック › DVA 練習問題一覧 › 問題
DVAセキュリティ

開発者が、Amazon S3に保存する大容量データファイル(最大100MB)をクライアントサイドで暗号化するアプリケーションを構築しています。AWS KMSを鍵管理に使用しつつ、API呼び出しコストを最小化したいと考えています。このユースケースに最も適したアプローチはどれですか?

A
KMS Encrypt APIを直接使用して100MBのデータ全体を1回のKMS API呼び出しでクライアントサイド暗号化する
KMS Encrypt APIは最大4KBのペイロード制限があり、100MBのデータを直接暗号化することはできない。大容量データに対してこのAPIを使用するとサイズ超過エラーが発生し、クライアントサイド暗号化が実現できない。
B
KMS GenerateDataKey APIを呼び出してDEK(データ暗号化キー)を取得し、DEKを使ってデータをローカル暗号化するエンベロープ暗号化を使用する
✓ 正解
GenerateDataKey APIでKMSキーで保護されたDEKを生成し、そのDEKでデータをローカル暗号化するエンベロープ暗号化が正しいアプローチ。KMS API呼び出しが1回で済むためコストを最小化でき、大容量データにも対応できる。
C
KMS GenerateRandomを使用してランダムなバイト列をキーとして生成し、そのキーでAES暗号化を行いデータをローカルで暗号化する
GenerateRandomはKMSでランダムバイト列を生成するだけで、生成されたキーはKMSキーによる保護を受けない。暗号化キーをKMSで安全に管理できないため、適切な鍵管理が実現できない。
D
AWS SDKのS3クライアントにSSE-KMSオプションを指定してS3アップロード時にKMS管理キーを使用したサーバーサイド暗号化を適用する
SSE-KMSはS3サービス側(サーバーサイド)でKMS管理キーを使った暗号化を行う機能であり、データはAWSサーバー上で暗号化される。問題の要件はクライアントサイド暗号化であるため、この選択肢は要件を満たさない。

解説

KMS Encrypt APIは最大4KBのデータしか暗号化できないため、大容量データへの直接使用は不可。エンベロープ暗号化ではGenerateDataKeyでKMSキーに守られたDEKを生成し、DEKでローカル暗号化することでKMS API呼び出しを1回に抑えられます。 選択肢AのKMS Encrypt APIは大容量データに不対応です。 選択肢CのGenerateRandomは鍵管理をKMSに委任しないため不適切です。 選択肢DのSSE-KMSはクライアントサイドではなくサーバーサイド暗号化であり要件を満たしません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る