AWS認定資格 WEB問題集&徹底解説
デベロッパー–アソシエイト
解説
正解は A です。AWS KMS の GenerateDataKey API を呼び出すことで、データ暗号化キー(DEK)とその暗号化済みバージョンが返されます。Lambda のコード内でこのデータキーを使ってデータをクライアントサイドで暗号化し、暗号化済みデータを S3 にアップロードすることができます。この方式はエンベロープ暗号化と呼ばれ、AWS が推奨するアプリケーションレベルの暗号化ベストプラクティスです。S3 にアップロードされる前にデータが暗号化されるため、要件を完全に満たします。
選択肢 B:S3 バケットのサーバーサイド暗号化とバケットポリシーによるアップロード制限は有効なセキュリティ対策ですが、この方式では暗号化は S3 への書き込み時に AWS 側で行われます。問題の要件は「アップロード前にアプリケーションレベルで暗号化する」ことであり、要件を満たしません。
選択肢 C:AWS KMS のカスタマーマスターキー(CMK)は大量データの直接暗号化には適していません。KMS API には送受信データサイズの制限(最大 4 KB)があるため、JSON ファイル全体を直接暗号化することはできません。GenerateDataKey を使ったエンベロープ暗号化が正しいアプローチです。
選択肢 D:SSE-S3 はサーバーサイド暗号化であり、データが S3 に到達した後で AWS によって暗号化されます。アップロード前のクライアントサイド暗号化には該当せず、要件を満たしません。
AWS Key Management Service (AWS KMS)
AWS Lambda
選択肢 B:S3 バケットのサーバーサイド暗号化とバケットポリシーによるアップロード制限は有効なセキュリティ対策ですが、この方式では暗号化は S3 への書き込み時に AWS 側で行われます。問題の要件は「アップロード前にアプリケーションレベルで暗号化する」ことであり、要件を満たしません。
選択肢 C:AWS KMS のカスタマーマスターキー(CMK)は大量データの直接暗号化には適していません。KMS API には送受信データサイズの制限(最大 4 KB)があるため、JSON ファイル全体を直接暗号化することはできません。GenerateDataKey を使ったエンベロープ暗号化が正しいアプローチです。
選択肢 D:SSE-S3 はサーバーサイド暗号化であり、データが S3 に到達した後で AWS によって暗号化されます。アップロード前のクライアントサイド暗号化には該当せず、要件を満たしません。
関連サービスの解説
Amazon Simple Storage Service (Amazon S3)AWS Key Management Service (AWS KMS)
AWS Lambda
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 82%
No.12 解説
ある企業は、AWS Lambda を使用して医療データを処理し、結果を Amazon S3 バケットに JSON 形式で保存するサーバーレスアーキテクチャを構築しています。このデータは法規制の対象となる機密情報であり、S3 にアップロードされる前にアプリケーションレベルで暗号化する必要があります。
Lambda 関数のコード内でデータを暗号化してから S3 にアップロードするための、最も適切な実装方法はどれですか?
Lambda 関数のコード内でデータを暗号化してから S3 にアップロードするための、最も適切な実装方法はどれですか?
- AWS KMS の GenerateDataKey API を呼び出してデータキーを取得し、そのデータキーを使って Lambda のコード内でデータを暗号化する
- S3 バケットのデフォルトの暗号化設定を有効にし、バケットポリシーで暗号化されていないアップロードを拒否する
- AWS KMS のマスターキーを直接使用して Lambda のコード内でデータを暗号化する
- Amazon S3 マネージドキー(SSE-S3)を使用して S3 バケット側でサーバーサイド暗号化を適用する