無限ノック › SCS 練習問題一覧 › 問題
SCSデータ保護

あるデータ分析企業が、数GBに及ぶ大容量ファイルをS3にアップロードする前に、アプリケーションレイヤーでクライアントサイド暗号化を実装しようとしています。 AWS KMSを鍵管理に使用する予定ですが、以下の制約があります。 ・KMS Encrypt APIは最大4KBのデータしか直接暗号化できない ・KMS APIコール数を最小限に抑えてコストと遅延を削減したい 最も適切な実装アプローチはどれですか?

A
KMS Encrypt APIを呼び出してファイルを4KBのチャンクに分割して順次暗号化し、暗号化済みチャンクを結合してS3にアップロードする
KMS Encrypt APIには4KB制限があり、大容量ファイルの直接暗号化は不可能です。チャンク分割により複数の暗号化呼び出しが必要となり、API呼び出しコストが爆発的に増加します。
B
KMS GenerateDataKey APIを呼び出して平文データキー(AES-256)を生成し、そのデータキーでファイルをローカルで暗号化した後、暗号化済みデータキーと暗号化済みファイルをセットでS3に保存する(エンベロープ暗号化)
✓ 正解
GenerateDataKey呼び出しは1回のみで、実際のデータ暗号化はローカルで高速実行できます。暗号化済みデータキーをファイルと共に保存することで、KMSの鍵管理を維持しながら大容量データを効率的に処理できます。
C
KMS GenerateDataKeyWithoutPlaintext APIで暗号化済みデータキーのみを取得し、ファイルのアップロードごとにKMS Decrypt APIを呼び出して平文キーを取得してから暗号化する
GenerateDataKeyWithoutPlaintext APIで取得できるのは暗号化済みキーのみで、使用前に必ずDecrypt呼び出しが必要です。選択肢1(エンベロープ暗号化)と比べてAPIコール数が増加し、効率性が低下します。
D
ファイルごとに新しいKMSカスタマー管理キー(CMK)を作成して暗号化し、ダウンロード時にその都度キーを参照する
ファイルごとの新規CMK作成は管理が極めて複雑化し、コストも高騰します。CMK作成数にはアカウント当たりの上限があり、実装不可能な場合があります。

解説

エンベロープ暗号化では、KMS呼び出しはGenerateDataKeyの1回のみで、実際のデータ暗号化はローカルで高速に実行できます。暗号化済みデータキーをファイルと共に保存することでKMSによる鍵管理を維持しつつ大容量データを効率的に処理できます。AWS Encryption SDKもこの方式を採用しています。 選択肢AのKMS Encrypt APIには4KB制限があり大容量ファイルの直接暗号化は不可能で、チャンク分割ではKMS呼び出し数が爆発的に増加します。 選択肢CのGenerateDataKeyWithoutPlaintext APIで取得できるのは暗号化済みキーのみで、使用前に必ずDecrypt呼び出しが必要となり、選択肢Bと比べてAPIコールが増加します。 選択肢Dのファイルごとの新規CMK作成は管理が極めて複雑化し、コストも高騰します。CMK数にはアカウントあたりの上限もあります。

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

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

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