AWS認定資格 WEB問題集&徹底解説
CloudOpsエンジニア -アソシエイト
AWSサービスの一つであるAWS Key Management Service (AWS KMS)はどんな内容なのでしょうか?また、AWS認定資格のSysOpsアドミニストレーター -アソシエイト(SOA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
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. アーキテクチャおよび技術要素
- カスタマーマネージドキーを作成し、キーポリシーでアクセス許可するプリンシパルを設定。
- S3/EBS/RDS 等の AWS サービスが自動的に KMS キーを使ってデータを暗号化(SSE-KMS)。
- アプリケーション層では GenerateDataKey API でデータキーを取得してエンベロープ暗号化。
- すべての 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. 設定・デプロイ手順(ハンズオン例)
- KMS コンソールでカスタマーマネージドキーを作成(対称・AES-256)。
- キーポリシーで管理者(key administrators)と使用者(key users)を分けて設定。
- 自動ローテーションを有効化(例: 365日ごと)。
- S3 バケットのデフォルト暗号化を SSE-KMS に設定し、作成したキー ARN を指定。
- CloudTrail でキーの使用ログ(
kms:Decryptイベント)を確認する。 - 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 は不使用。