DVAセキュリティ
開発者はLambda関数内で10MBのファイルを暗号化する必要があります。AWS KMS APIを使用して直接暗号化しようとしたところ、「ValidationException」エラーが発生しました。KMS APIの仕様上の制限を考慮した上で、このファイルを安全に暗号化する最も適切な方法はどれですか?
Aファイルを4KBのチャンクに分割してKMS Encrypt APIで各チャンクを個別に暗号化し、すべてのチャンクを処理した後に結合して元のファイルに復元する
ファイルを4KBのチャンクに分割してKMS Encrypt APIで暗号化する方法は4KB制限を回避できますが、10MBファイルでは約2500回のKMS API呼び出しが必要となりコスト・レイテンシともに非現実的で、AWSのベストプラクティスに反します。
BGenerateDataKey APIでデータキーと暗号化済みキーのペアを生成し、平文キーでファイルをローカル暗号化した後、暗号化済みデータキーとともに保存する(エンベロープ暗号化)
✓ 正解
KMSのGenerateDataKey APIを使ったエンベロープ暗号化は大容量データの暗号化に最適な手法です。平文データキーでローカル暗号化し、暗号化済みキーを暗号文と一緒に保存することでKMS APIへの呼び出しを最小限に抑えられます。
CAWS Certificate Manager(ACM)が管理するプライベートCA証明書を使用してLambda関数内でファイルを非対称暗号化し、安全に保管する
AWS Certificate Manager(ACM)はSSL/TLS証明書のプロビジョニングと管理に特化したサービスであり、Lambda関数内での任意ファイルの暗号化や復号操作には対応していないため、この用途には使用できません。
DファイルをS3にアップロードしてSSE-KMS(S3マネージドのサーバーサイド暗号化)を有効化し、Lambdaは処理のたびにS3から取得する
S3にアップロードしてSSE-KMSを適用する方法はS3保存時の暗号化には有効ですが、Lambda関数内でファイルを暗号化する要件を満たさず、S3への往復通信が発生するため非効率なアーキテクチャです。
解説
KMSのEncrypt APIは最大4KBのデータしか直接暗号化できません。大きなデータにはエンベロープ暗号化が必須です。GenerateDataKey APIはKMSキー(旧称:CMK)で暗号化されたデータキーと平文データキーのペアを返します。アプリは平文キーでデータをローカル暗号化後、平文キーをメモリから消去し、暗号化済みデータキーを暗号文と一緒に保存します。復号時はKMSでデータキーを復号してから使用します。
選択肢Aのファイルを4KBのチャンクに分割してKMS Encrypt APIで暗号化する方法は4KB制限の回避策として技術的には可能ですが、10MBファイルでは約2500回以上のKMS API呼び出しが発生しコスト・レイテンシともに非現実的であり、AWSのベストプラクティスに反します。
選択肢CのAWS Certificate Manager(ACM)はSSL/TLS証明書の管理サービスであり、任意のファイルやデータの暗号化には使用できません。
選択肢DのファイルをS3にアップロードしてSSE-KMSに委任する方法はS3保存時の暗号化には対応しますが、Lambda関数内でファイルを暗号化するという要件に反し、S3への不要なラウンドトリップが発生する非効率な設計です。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →