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

あるヘルスケア企業のセキュリティアーキテクトが、患者の健康情報(PHI)をAmazon DynamoDBに保存する際の暗号化方式を設計しています。以下の要件があります。 ・1レコードあたり最大500KBのデータを保存する ・KMSカスタマー管理キー(CMK)を使用したエンベロープ暗号化を実装する ・KMS APIスロットリングを防ぐためデータキーをキャッシュして再利用する ・Java、Python、C++の3言語で書かれたサービスが同じデータを読み書きする この要件を最も効率的かつ標準的な方法で実装するソリューションはどれですか?

A
DynamoDB書き込みごとにKMS GenerateDataKey APIを直接呼び出してデータキーを生成し、暗号化済みデータと暗号化済みデータキーを同一レコードに保存する
KMS GenerateDataKey APIの直接呼び出しによるエンベロープ暗号化は機能しますが、データキャッシュ機能がなくKMS API呼び出しが書き込みごとに発生します。クロス言語の暗号文互換性やアルゴリズム移行対応などSDKの利点も得られず、実装・運用コストが大幅に増加します。
B
AWS Encryption SDKをKMSキーリングおよび暗号化マテリアルキャッシュ(CMC)と組み合わせて使用し、エンベロープ暗号化とデータキーの再利用を実現する
✓ 正解
AWS Encryption SDKはKMSキーリングによるエンベロープ暗号化の標準実装を提供し、暗号化マテリアルキャッシュ(CMC)によりKMS API呼び出しを削減します。Java・Python・C(C++環境から利用可能)など複数言語で同一フォーマットの暗号化データを読み書きでき、すべての要件を満たします。
C
KMS Encrypt APIを使用してDynamoDBに保存するデータをCMKで直接暗号化する
KMS Encrypt APIはCMKでデータを直接暗号化しますが、暗号化できるデータサイズの上限が4KBに制限されています。1レコード最大500KBという要件を満たせず、エンベロープ暗号化の実装要件にも対応していません。
D
DynamoDB Streamsを使用してデータをAmazon S3にエクスポートし、S3のSSE-KMSで暗号化して管理する
DynamoDB StreamsでデータをS3へエクスポートする方法は、データをDynamoDBに保存するという根本要件と矛盾します。暗号化方式の問題ではなくデータの保存先自体が要件から外れるため、適切な解決策ではありません。

解説

AWS Encryption SDKはエンベロープ暗号化のリファレンス実装を提供するライブラリです。KMSキーリングを設定することでCMKを使ってデータ暗号化キー(DEK)を生成・暗号化し、そのDEKでデータ本体を暗号化します。暗号化されたDEKと暗号文はSDKが生成する標準化された暗号化メッセージフォーマットにパッケージ化され、DynamoDBレコードのバイナリ属性として保存できます。 暗号化マテリアルキャッシュ(CMC)を設定すると、生成したDEKを設定した時間・回数・バイト数の上限まで再利用でき、KMS API呼び出し回数を大幅に削減できます。SDKはJava・Python・JavaScript(Node.js)・C・Goなど複数言語向けに公式提供されており、異なる言語間でのデータ読み書き互換性も保証されています。 選択肢AのKMS APIの直接呼び出し手動実装はエンベロープ暗号化として機能しますが、キャッシュ機能・クロス言語互換・暗号アルゴリズム移行対応などSDKが提供する利点が得られず実装コストが高くなります。 選択肢CのKMS Encrypt APIによる直接暗号化はCMKで直接データを暗号化するためデータサイズが最大4KBに制限されており、500KBのPHIデータには対応不可です。またエンベロープ暗号化の要件も満たしません。 選択肢DのDynamoDB Streams + S3への移動はDynamoDBへの保存という前提要件に反する根本的に異なるアーキテクチャです。

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

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

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