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

あなたはLambda関数を使って大量のログデータ(1メッセージあたり数MB)をS3に暗号化して保存するシステムを開発しています。AWS KMSを使用する要件がありますが、Lambda関数からKMSに直接暗号化リクエストを送ると、スループット制限(APIリクエストクォータ)に達してしまいます。このパフォーマンス問題を解決するために最も適切なアプローチはどれですか?

A
KMS CMKを使ってすべてのデータを直接暗号化し、KMSクォータの引き上げをAWSに申請する
すべてのデータをKMSで直接暗号化する方式ではAPIコール数自体が削減されず、クォータ引き上げを申請してもコスト増と根本的なスループット制限の課題が残ります。大量データの暗号化処理には非効率で、適切な解決策ではありません。
B
AWS Encryption SDKのデータキーキャッシング機能を使用し、GenerateDataKey APIで取得したデータキーを一定時間ローカルにキャッシュして暗号化に使用する
✓ 正解
KMSのエンベロープ暗号化ではGenerateDataKey APIでデータキーを生成し、そのキーでローカル暗号化します。AWS Encryption SDKのデータキーキャッシングを使うと生成したデータキーを一定時間・一定回数キャッシュでき、KMS APIコール数を大幅に削減してクォータ制限を回避できます。
C
S3のサーバーサイド暗号化(SSE-S3)に切り替えてKMSを使用しないようにする
SSE-S3はS3が管理するキーで自動暗号化する方式であり、AWS KMSを使用するという要件を満たせません。本問題ではKMS利用が明記されているため、KMSを使わないこの選択肢は要件不適合で採用できません。
D
各Lambda実行環境に固定のAES-256キーをハードコードして暗号化する
固定のAES-256キーをコードにハードコードするとキーの漏洩リスクが高く、ローテーションも困難で重大なセキュリティ違反となります。さらにKMSを使用する要件も満たさないため、本番システムでは不適切な実装です。

解説

正解: AWS Encryption SDKのデータキーキャッシング機能を使用し、GenerateDataKey APIで取得したデータキーを一定時間ローカルにキャッシュして暗号化に使用する。 KMSのエンベロープ暗号化では、GenerateDataKey APIでデータキーを生成しそのキーでデータを暗号化します。AWS Encryption SDKのデータキーキャッシングを使うと、生成したデータキーをローカルに一定時間・一定回数キャッシュでき、KMS APIコール数を大幅に削減できます。 選択肢Aは、クォータ引き上げは根本解決にはなりません。 選択肢Cは、SSE-S3はKMS要件を満たしません。 選択肢Dは、ハードコードはセキュリティ違反です。

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

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

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