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

開発者が AWS Lambda 関数から 10MB のデータを AWS KMS を使って暗号化しようとしています。KMS の Encrypt API を直接呼び出したところ「InvalidRequestException: Plaintext is too long」というエラーが発生しました。このエラーを解決し、大きなデータを効率的に暗号化するための正しいアプローチはどれですか?

A
データを 4KB 以下のチャンクに分割し、各チャンクに対して KMS Encrypt API を個別に呼び出す
「4KB以下に分割して個別に暗号化」は技術的には可能ですが、10MB のデータでは膨大な数の KMS API コールが発生し、コスト・レイテンシが著しく増大するため非効率です。
B
GenerateDataKey API でデータキーを取得し、データをローカル暗号化(エンベロープ暗号化)する
✓ 正解
GenerateDataKey API を呼び出してデータキーを取得し、そのデータキーでデータをローカル暗号化(エンベロープ暗号化)する KMS の Encrypt API は最大 4KB のデータしか直接暗号化できません。大きなデータには「エンベロープ暗号化」を使います。GenerateDataKey で平文データキーと暗号化済みデータキーのペアを取得し、平文データキーでデータをローカル暗号化した後、平文キーをメモリから削除します。暗号化済みデータキーと暗号化済みデータを一緒に保存することで、KMS キーを大量のデータに直接使わずに安全な暗号化が実現できます。
C
KMS の代わりに S3 のサーバーサイド暗号化(SSE-S3)を使用してデータを暗号化する
SSE-S3はS3ストレージ上のオブジェクトを暗号化する機能であり、Lambda 関数内で処理中の任意データを暗号化する用途には使用できません。
D
CloudHSM(専用のハードウェアセキュリティモジュール)を使用してデータを暗号化する
CloudHSM(専用のハードウェアセキュリティモジュール)はVPC連携や専用ハードウェアのプロビジョニングが必要であり、このユースケースには過剰な構成です。

解説

GenerateDataKey API を呼び出してデータキーを取得し、そのデータキーでデータをローカル暗号化(エンベロープ暗号化)する KMS の Encrypt API は最大 4KB のデータしか直接暗号化できません。大きなデータには「エンベロープ暗号化」を使います。GenerateDataKey で平文データキーと暗号化済みデータキーのペアを取得し、平文データキーでデータをローカル暗号化した後、平文キーをメモリから削除します。暗号化済みデータキーと暗号化済みデータを一緒に保存することで、KMS キーを大量のデータに直接使わずに安全な暗号化が実現できます。 選択肢Aの「4KB以下に分割して個別に暗号化」は技術的には可能ですが、10MB のデータでは膨大な数の KMS API コールが発生し、コスト・レイテンシが著しく増大するため非効率です。 選択肢CのSSE-S3はS3ストレージ上のオブジェクトを暗号化する機能であり、Lambda 関数内で処理中の任意データを暗号化する用途には使用できません。 選択肢DのCloudHSM(専用のハードウェアセキュリティモジュール)はVPC連携や専用ハードウェアのプロビジョニングが必要であり、このユースケースには過剰な構成です。

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

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

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