AWS Certified Solutions Architect Associate(SAA-C03) 練習問題 23:KMSエンベロープ暗号化とキー管理
AWS KMSを使用した大容量データのエンベロープ暗号化について、正しい説明はどれか。
- KMSキー(CMK)は4KBを超えるデータでも直接Encrypt APIに渡して暗号化するのが標準的な方法であり、大容量ファイルもKMS API経由で直接暗号化する。
- GenerateDataKey APIで平文データキーと暗号化済みデータキーのペアを取得し、平文データキーでデータを暗号化した後は平文データキーを破棄し、暗号化済みデータキーを暗号文と共に保存する。
- カスタマーマネージドキー(CMK)は自動ローテーションを無効化することができず、必ず1年ごとに強制的にローテーションされる。
- KMSキーポリシーを設定しなくても、IAMポリシーだけでそのキーへのアクセス権限を完全に制御できる。
- マルチリージョンキー(Multi-Region Keys)はプライマリキーとレプリカキーで同じキーマテリアルを共有し、かつ全リージョンで完全に同一のキーIDを持つ。
正解と解説を見る
正解:GenerateDataKey APIで平文データキーと暗号化済みデータキーのペアを取得し、平文データキーでデータを暗号化した後は平文データキーを破棄し、暗号化済みデータキーを暗号文と共に保存する。
KMSのEncrypt APIは直接暗号化できるデータサイズに4KBの上限があるため、大容量データには「エンベロープ暗号化」というパターンを使います。正しいのは「GenerateDataKey APIで平文データキーと暗号化済みデータキーを取得し、平文データキーでデータを暗号化した後に平文データキーを破棄する」という内容です。データ本体は高速な対称鍵暗号(平文データキー)で暗号化し、そのデータキー自体をKMSキーで暗号化して保存することで、大容量データでも効率的かつ安全に暗号化できます。
CMKの自動ローテーションはオプトインの機能であり、無効化も可能です。KMSキーポリシー(リソースベースポリシー)はKMSキーへのアクセス制御の起点であり、IAMポリシーだけでは権限を完全に制御できません(キーポリシーでIAMポリシーへの権限委譲を許可する必要があります)。マルチリージョンキーはキーマテリアルを共有しますが、各リージョンのレプリカキーは固有のキーIDを持ちます。