SAA-C03セキュアなアーキテクチャの設計MEDIUM単一選択

ある企業が、Amazon RDS for PostgreSQL に保存されているカード番号などの機密データを、アプリケーション層で暗号化してから保存したい。暗号化キーの管理は AWS に委託しながら、アプリケーションコードからの暗号化・復号を透過的に実行したい。最も適切なアプローチはどれか。

  1. A. RDS のサーバー側暗号化(SSE)だけで十分であり、アプリ層での暗号化は不要。
  2. B. Amazon Macie でカード番号フィールドを検出して自動暗号化する。
  3. C. RDS の列暗号化機能を使ってカード番号列を暗号化する。
  4. D. AWS Encryption SDK をアプリケーションに組み込み、AWS KMS のデータキーを使ってフィールドレベルの暗号化を実装する。KMS はマスターキー(CMK)の保護を担当し、データキーの暗号化・復号はアプリで行う。
解答と解説を見る

正解: D

AWS Encryption SDK はアプリケーションでエンベロープ暗号化(KMS がデータキーを保護し、実際のデータはデータキーで暗号化)を実装するためのライブラリである。アプリケーションコードに SDK を組み込むことで、任意のフィールドをアプリ層で暗号化してから RDS に保存できる。KMS の CMK を使うためキー管理は AWS が担当し、アクセス制御や監査ログも KMS で管理できる。選択肢AのRDS SSE はストレージレベルの暗号化で、RDS への接続権限があれば暗号化されていないデータが見える。アプリ層(フィールドレベル)の暗号化とは別の概念。選択肢CのRDS の列暗号化機能は PostgreSQL では pgcrypto 拡張を使った実装が必要で、AWS KMS との透過的な統合は AWS Encryption SDK ほど容易ではない。選択肢BのMacie は S3 上のデータの分類・検出サービスであり、RDS データの自動暗号化機能は持たない。

▸ この試験を本気で演習する(全150問・無料)