SOAセキュリティとコンプライアンス
ある企業は、AWS KMS で作成したカスタマーマネージドキー(CMK、キーマテリアルは AWS が生成)を使用して S3 の機密データを暗号化しています。セキュリティ監査で「暗号化キーが 2 年間ローテーションされていない」と指摘されました。既存の暗号化データを再暗号化する作業を避けつつ、年次キーローテーションのコンプライアンス要件を満たす方法として最も適切なものはどれですか?
A新しい KMS CMK を作成して S3 バケットのデフォルト暗号化キーを更新する。S3 Batch Operations で既存オブジェクトを新しいキーで再暗号化し、旧 CMK は 30 日後に削除スケジュールを設定する。
新規 CMK への切り替えには既存 S3 オブジェクトの再暗号化が必要で、S3 Batch Operations の実行コスト・時間・誤操作によるデータ損失リスクが発生する。「再暗号化を避ける」という要件を直接満たさない。
BAWS KMS の ImportKeyMaterial API を使用して外部で生成した新しいキーマテリアルをインポートし、既存のキーマテリアルを上書きすることで同一キー ID のままローテーション要件を達成する。
ImportKeyMaterial API で新しいキーマテリアルに上書きすると、古いマテリアルで暗号化されたデータが復号不能になる。また AWS 生成キーマテリアルの CMK にはインポート操作自体が非対応であり要件を満たせない。
CCMK の自動キーローテーションを有効化する。AWS KMS が年 1 回新しいキーマテリアルを生成してキー ID に紐付け、古いキーマテリアルは保持されるため既存の暗号化データを再暗号化せずに復号できる。
✓ 正解
KMS 自動キーローテーションは年 1 回新しいキーマテリアルを生成しつつ、古いマテリアルをすべて保持して既存の暗号文を復号可能に維持する。キー ID は不変でアプリケーション変更も不要なため、再暗号化なしに要件を満たす。
DAWS Secrets Manager のシークレットローテーション機能を設定し、Lambda 関数を 365 日ごとにトリガーして KMS キーエイリアスを新しい CMK に切り替えて S3 バケットの暗号化設定を更新する。
AWS Secrets Manager はデータベース認証情報や API キーなどのシークレットを管理するサービスであり、KMS のキーマテリアルをローテーションする機能は提供していない。KMS キー管理の要件には対応できない。
解説
選択肢CのAWS KMS 自動キーローテーションを有効化すると、年に 1 回(デフォルト、90 日〜2560 日の範囲で設定可能)新しいキーマテリアルが生成されます。重要なポイントは以下のとおりです。
・キー ID・キーエイリアス・キーポリシーはそのまま維持されるためアプリケーション変更不要
・AWS KMS はすべての古いキーマテリアルを内部に保持するため、ローテーション前に暗号化されたデータは以前のマテリアルで自動復号可能
・既存データの再暗号化は不要
これにより、最小の運用作業でコンプライアンス要件(年次ローテーション)を満たせます。
選択肢Aの新規 CMK 作成と S3 Batch Operations による再暗号化は既存データの再暗号化が必要で大規模な作業が発生し、問題の「再暗号化を避ける」要件を満たしません。
選択肢BのImportKeyMaterial API で新しいキーマテリアルに上書きすると、古いマテリアルで暗号化されたデータが復号不能になります。また AWS 生成の CMK(キーオリジンが AWS_KMS のキー)にキーマテリアルをインポートする操作は対応していません。
選択肢DのAWS Secrets Manager はデータベースパスワードや API キーなどのシークレットを管理するサービスであり、KMS キーマテリアルのローテーション機能は提供していません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSOAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →