AWS認定資格 WEB問題集&徹底解説

CloudOpsエンジニア -アソシエイト

AWS Key Management Service (AWS KMS) の概要と試験出題ポイントは?

AWSサービスの一つであるAWS Key Management Service (AWS KMS)はどんな内容なのでしょうか?また、AWS認定資格のSysOpsアドミニストレーター -アソシエイト(SOA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

AWS KMS 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

AWS Key Management Service (KMS) は、暗号化キーの作成・管理・監査を一元化するフルマネージドの暗号鍵管理サービスです。 S3・EBS・RDS・Secrets Manager など多くの AWS サービスと統合し、「誰が何の暗号鍵を使ってデータを暗号化/復号したか」を CloudTrail に完全記録します。

2022年に旧称「Customer Master Key (CMK)」が「KMS キー」に名称変更されました(機能変更なし)。 主なユースケース: データの保存時暗号化(S3/EBS/RDS)、Secrets Manager のシークレット保護、アプリケーション層での暗号化、コンプライアンス対応。

2. 主な特徴と機能

2.1 KMS キーの種類(最頻出)

  • AWS マネージドキー: AWS サービスが自動作成・管理するキー(例: aws/s3, aws/ebs)。ユーザーはキーポリシーを変更できない。自動ローテーション(年1回)。無料。
  • カスタマーマネージドキー: ユーザーが作成・管理。キーポリシーのカスタマイズ、手動/自動ローテーション、キー削除スケジュール設定が可能。有料(月額管理料 + API リクエスト料)。
  • AWS 所有キー: AWS サービスがサービスインフラで利用する内部キー。ユーザーには見えない。無料。

2.2 エンベロープ暗号化(Envelope Encryption)

  • KMS キーでデータキー(平文)を生成し、そのデータキーでデータを暗号化する2層構造。
  • KMS キー自体でデータを直接暗号化するのは 4KB 以下のみ。大量データは必ずエンベロープ暗号化を使う。
  • GenerateDataKey API → 平文データキーでデータ暗号化 → 暗号化済みデータキーをデータと一緒に保存 → 復号時は EncryptedDataKey を KMS に渡して復号。

2.3 キーポリシーとアクセス制御

  • キーポリシー(リソースポリシー): KMS キーへのアクセスを制御する主要な手段。IAM ポリシーだけでは不十分(キーポリシーにも許可が必要)。
  • IAM ポリシー + キーポリシーの組み合わせ: 両方で許可されている場合のみアクセス可能。
  • グラント (Grant): 一時的なアクセス権限を別のプリンシパルに付与。キーポリシー変更なしで動的に権限委任が可能。

2.4 自動キーローテーション

  • カスタマーマネージドキーは自動ローテーション設定が可能(2023年以降: 90日〜7年で自由設定)。
  • ローテーション後も過去のキーマテリアルは保持されるため、古いデータの復号は継続可能。
  • AWS マネージドキーは自動で年1回ローテーション(無効化不可)。

2.5 マルチリージョンキー

  • 同一のキーマテリアルを複数リージョンに複製。リージョン間でデータを暗号化したまま転送・復号が可能。
  • 用途: マルチリージョン DynamoDB Global Tables のクライアントサイド暗号化、DR 対応アーキテクチャ。

2.6 カスタムキーストア(CloudHSM 統合)

  • CloudHSM クラスターをキーストアとして使用し、FIPS 140-2 レベル 3 準拠のハードウェアでキーマテリアルを管理。
  • 専用 HSM が必要なコンプライアンス要件(金融・医療等)に対応。
  • CloudHSM 利用料金が別途発生する。通常の KMS より高コスト。

3. アーキテクチャおよび技術要素

  1. カスタマーマネージドキーを作成し、キーポリシーでアクセス許可するプリンシパルを設定。
  2. S3/EBS/RDS 等の AWS サービスが自動的に KMS キーを使ってデータを暗号化(SSE-KMS)。
  3. アプリケーション層では GenerateDataKey API でデータキーを取得してエンベロープ暗号化。
  4. すべての KMS API 操作(暗号化/復号/キー管理)が CloudTrail に記録され監査可能。

KMS エンドポイントは VPC エンドポイント(PrivateLink)経由でアクセス可能。 インターネットを経由せずに EC2・Lambda から暗号化/復号が可能。

4. セキュリティと認証・認可

  • キーポリシーの最小権限: KMS キーへの kms:Decrypt / kms:GenerateDataKey 権限を必要最小限に制限。
  • CloudTrail 完全監査: Encrypt / Decrypt / GenerateDataKey など全 API 操作を記録。誰がいつどのキーでデータを復号したか追跡可能。
  • キー削除スケジュール: カスタマーマネージドキーは削除時に 7〜30日の保留期間が必須。誤削除によるデータ損失を防止。
  • キーの無効化: キーを無効化するとそのキーで暗号化されたデータへのアクセスが即時不可能になる(削除より軽い措置)。

5. 料金形態

  • AWS マネージドキー: 無料(キー保管料なし)。
  • カスタマーマネージドキー: キー 1 個あたり月額 1 USD(キーマテリアルを AWS が保管する場合)。
  • API リクエスト: 10,000 リクエスト毎に従量課金。GenerateDataKey / Decrypt 等が対象。
  • マルチリージョンキー: プライマリキーとレプリカキーそれぞれ月額 1 USD。
  • カスタムキーストア(CloudHSM): CloudHSM クラスター料金が別途発生(高コスト)。

6. よくあるアーキテクチャ・設計パターン

  • S3 サーバーサイド暗号化(SSE-KMS): バケットのデフォルト暗号化にカスタマーマネージドキーを設定。誰がどのオブジェクトにアクセスしたか CloudTrail で追跡。
  • EBS ボリューム暗号化: EC2 作成時に KMS キーを指定してスナップショット含め全データを暗号化。
  • Secrets Manager + KMS: データベースパスワードを Secrets Manager に格納し、KMS カスタマーマネージドキーで追加保護。
  • アプリケーション層暗号化(AWS Encryption SDK): KMS エンベロープ暗号化をアプリが直接実装。DynamoDB や S3 のフィールドレベル暗号化。
  • クロスアカウント暗号化: キーポリシーで別 AWS アカウントの IAM ロールに Decrypt 権限を付与し、暗号化データを安全に共有。

7. 設定・デプロイ手順(ハンズオン例)

  1. KMS コンソールでカスタマーマネージドキーを作成(対称・AES-256)。
  2. キーポリシーで管理者(key administrators)と使用者(key users)を分けて設定。
  3. 自動ローテーションを有効化(例: 365日ごと)。
  4. S3 バケットのデフォルト暗号化を SSE-KMS に設定し、作成したキー ARN を指定。
  5. CloudTrail でキーの使用ログ(kms:Decrypt イベント)を確認する。
  6. Lambda / EC2 の IAM ロールにキーポリシーと IAM ポリシーの両方で kms:GenerateDataKey を許可する。

8. 試験で問われやすいポイント

8.1 KMS キーの種類の選択

Q: S3 バケットに保存するデータの暗号化キーを自社で管理し、CloudTrail で使用状況を監査したい場合は?
A: カスタマーマネージドキー(SSE-KMS)。AWS マネージドキーはキーポリシーを変更できず、カスタム制御が不可。

Q: コストを最小限にしてS3の暗号化を有効にしたい場合は?
A: SSE-S3(デフォルト)または AWS マネージドキー(SSE-KMS)。追加料金がかからない。

8.2 エンベロープ暗号化

Q: 100MB のデータを KMS で暗号化するにはどうすればよいか?
A: KMS キーで直接暗号化できるのは 4KB 以下のみ。GenerateDataKey API でデータキーを取得し、そのデータキーで大きなデータを暗号化するエンベロープ暗号化を使う。

8.3 キーポリシーと IAM ポリシーの関係

Q: IAM ポリシーで kms:Decrypt を許可しているが、KMS 操作ができない。原因は?
A: KMS キーポリシーにも対象プリンシパルへの許可が必要。IAM ポリシーだけでは不十分。両方で許可されて初めてアクセス可能。

8.4 キー削除の注意点

Q: KMS カスタマーマネージドキーを即時削除できるか?
A: できない。7〜30日の保留期間が必須。削除後はそのキーで暗号化されたデータは永久に復号不可能になる。

8.5 SSE-KMS vs SSE-S3 vs SSE-C

Q: クライアントが自分の暗号化キーを S3 に持ち込んで暗号化したい場合は?
A: SSE-C(Customer-Provided Keys)。リクエストごとにキーを送信し、S3 は使用後にキーを破棄する。KMS は不使用。