▪️目的
AWSを利用していると、
- 「データを暗号化したい」
- 「EBSやRDSを暗号化したい」
- 「S3に保存するデータを安全に管理したい」
- 「暗号化に使う鍵をどう管理するの?」
- 「KMSって何をしているの?」
といった場面があります。
そこで登場するのが、**AWS KMS(Key Management Service)**です。
KMSは、AWS上で利用する暗号化キーを作成・管理するためのサービスです。
この記事では、AWS初心者向けに、
- KMSとは何か
- そもそも暗号化とは何か
- KMSキーとは何か
- AWSサービスでKMSがどう使われるのか
- AWS管理キーとカスタマーマネージドキーの違い
- キーポリシーとは何か
- キーローテーションとは何か
について解説します。
目次
- KMSとは?
- そもそも暗号化とは?
- KMSが必要な理由
- KMSキーとは?
- AWSサービスとKMS
- EBSをKMSで暗号化する
- RDSをKMSで暗号化する
- S3とKMS
- AWS管理キーとカスタマーマネージドキー
- KMSのアクセス制御
- キーポリシーとは?
- KMSキーのローテーション
- KMSとIAMの違い
- KMSを利用したAWSの構成例
- KMSを利用するときのポイント
- まとめ
▪️KMSとは?
KMSは、
AWS Key Management Service
の略です。
AWS上で使用する暗号化キーを作成・管理するためのマネージドサービスです。
例えば、EC2のEBSボリュームやRDSのデータを暗号化したい場合に、KMSのキーを利用できます。
イメージとしては、
AWS上のデータ
↓
暗号化
↑
KMSキー
という関係です。
KMSそのものがデータベースやストレージになるわけではありません。
KMSの主な役割は、
「暗号化に利用するキーを安全に管理すること」
です。
▪️そもそも暗号化とは?
KMSを理解するためには、まず暗号化について理解しておきましょう。
暗号化とは、簡単にいうと、
第三者に内容を読まれないように、データを別の形式に変換すること
です。
例えば、
元のデータ
Hello AWS
を暗号化すると、
暗号化後
X7a9fK2...
のように、元の内容がそのままでは分からない状態になります。
そして、正しい鍵を使って復号すると、
X7a9fK2...
↓
復号
↓
Hello AWS
元のデータに戻せます。
つまり、
平文
↓
暗号化
↓
暗号文
↓
復号
↓
平文
という流れです。
▪️KMSが必要な理由
では、
「暗号化するだけならKMSは必要ないのでは?」
と思うかもしれません。
実際、暗号化そのものはKMSがなくても実現できます。
しかし、実際のシステムでは、
暗号化に使う鍵を安全に管理すること
が非常に重要になります。
例えば、自分で暗号化キーを作ってサーバーの中に保存した場合、
サーバー
├─ アプリケーション
├─ データ
└─ 暗号化キー
となります。
もしサーバーが侵害された場合、暗号化キーまで盗まれてしまう可能性があります。
そこで、
AWSサービス
│
│ 暗号化
↓
KMS
│
↓
KMSキー
のように、暗号化キーをAWS側で管理します。
KMSを利用することで、キーの作成、アクセス制御、ローテーションなどをAWSの仕組みを利用して管理できます。
▪️KMSキーとは?
KMSで管理する暗号化用のキーを、
KMS key
と呼びます。
例えば、
KMS
│
├─ Key A
├─ Key B
└─ Key C
のように、用途ごとにキーを作成できます。
例えば、
KMS Key A
↓
本番環境のEBS暗号化
KMS Key B
↓
本番RDSの暗号化
KMS Key C
↓
S3のデータ暗号化
というような設計ができます。
ただし、実際の設計では「何でもキーを分ければよい」というわけではありません。
セキュリティ要件やアクセス管理、運用負荷などを考慮してキーを設計します。
▪️AWSサービスとKMS
KMSの大きな特徴は、
他のAWSサービスと組み合わせて利用できる
ことです。
例えば、
- Amazon EBS
- Amazon RDS
- Amazon S3
- Amazon EFS
- Amazon Secrets Manager
など、暗号化機能を持つAWSサービスでKMSキーを利用できます。
イメージすると、
┌─ EBS
│
├─ RDS
│
KMS Key ─────┼─ S3
│
├─ EFS
│
└─ Secrets Manager
のようになります。
つまりKMSは、
「AWSの各サービスで利用する暗号化キーを管理する共通基盤」
として考えると分かりやすいです。
▪️EBSをKMSで暗号化する
例えばEC2で利用するEBSを暗号化する場合を考えてみましょう。
EC2
│
└─ EBS
│
↓
暗号化
↑
KMS Key
EBSを暗号化しておくことで、保存されているデータを暗号化できます。
例えば、
EC2
│
└─ 暗号化されたEBS
↑
KMS Key
という構成です。
AWSではEBSの暗号化にKMSキーを利用できます。
そのため、
「EC2を暗号化する」というより、「EC2に接続されたEBSのデータを暗号化する」
と考えると理解しやすいでしょう。
▪️RDSをKMSで暗号化する
RDSでもKMSを利用できます。
例えば、
アプリケーション
│
↓
RDS
│
↓
暗号化されたデータ
↑
KMS Key
という構成です。
データベースには、
- ユーザー情報
- 顧客情報
- アプリケーションデータ
など、重要なデータが保存されることがあります。
そのため、保存データの暗号化は非常に重要です。
RDSの暗号化を有効にすることで、KMSキーを利用してデータを保護できます。
▪️S3とKMS
S3でもKMSを利用できます。
例えば、
アプリケーション
│
↓
S3
│
↓
暗号化されたオブジェクト
↑
KMS Key
という構成です。
S3ではサーバーサイド暗号化の仕組みがあり、KMSキーを利用した暗号化もできます。
例えば、
SSE-S3
と
SSE-KMS
などがあります。
SSE-KMSではAWS KMSを利用して暗号化キーを管理します。
KMSを利用することで、暗号化キーへのアクセス制御や監査などをより細かく設計できます。
▪️AWS管理キーとカスタマーマネージドキー
KMSでは、キーの管理方法によっていくつか種類があります。
初心者の段階では、まず、
AWS管理キー
と
カスタマーマネージドキー
の違いを理解しておきましょう。
♦︎AWS管理キー
AWSサービス側で作成・管理されるKMSキーです。
例えば、
AWSサービス
↓
AWS管理キー
↓
暗号化
というように、AWS側でキーの管理を行います。
利用者がキーのライフサイクルやアクセス許可を自由に管理する用途には向きません。
♦︎カスタマーマネージドキー
利用者がKMS上で作成し、管理するキーです。
例えば、
自分でKMSキーを作成
↓
アクセス権限を設定
↓
AWSサービスから利用
ということができます。
キーのアクセス制御やローテーションなどを、自分たちの要件に合わせて管理できます。
比較すると
| 項目 | AWS管理キー | カスタマーマネージドキー |
|---|---|---|
| 管理主体 | AWS | 利用者 |
| 自由度 | 低め | 高い |
| 詳細なアクセス制御 | 限定的 | 設計可能 |
| キーの管理 | AWS | 利用者 |
| 主な用途 | AWSサービスの標準的な暗号化 | 厳密な管理が必要な暗号化 |
なお、AWSにはさらに**AWS所有キー(AWS owned keys)**という区分もあります。
まずは、
「AWSに任せるキー」と「自分で管理するキー」
という違いを押さえておけば十分です。
▪️KMSのアクセス制御
ここがKMSを理解する上で重要なポイントです。
KMSでは、
「誰がKMSキーを使えるのか?」
を管理する必要があります。
例えば、
IAM Role
│
│ KMSキーを利用
↓
KMS Key
という関係です。
しかし、KMSでは単純にIAMポリシーだけを見ればよいわけではありません。
主に、
- キーポリシー
- IAMポリシー
- Grants
などを利用してアクセスを制御します。
▪️キーポリシーとは?
KMSで特に重要なのが、
キーポリシー(Key Policy)
です。
キーポリシーは、
「このKMSキーを誰がどのように利用できるか」
を定義するポリシーです。
KMSキーには必ずキーポリシーが存在し、KMSではキーポリシーがアクセス制御の中心的な仕組みになっています。
例えば、
KMS Key
│
└─ Key Policy
│
├─ Role A → Encrypt / Decrypt
│
└─ Role B → DescribeKey
のように、キーを利用できる主体と操作を定義します。
KMSでは、
IAM Policy
だけでなく、
Key Policy
も確認する必要があります。
特にKMSでアクセス拒否が発生した場合は、
IAMだけを確認して終わりにしない
ことが重要です。
KMSではキーポリシーがIAMポリシーによるアクセス許可に関係します。
▪️KMSキーのローテーション
暗号化キーを長期間同じものとして使い続けるのではなく、定期的に暗号鍵マテリアルを更新することを、
キーローテーション
と呼びます。
カスタマーマネージドキーでは、自動ローテーションを設定できます。
現在のAWS KMSでは、AWSが生成する対称暗号化キーについて自動ローテーションが利用でき、デフォルトでは1年ごとに新しい暗号鍵マテリアルが生成されます。ローテーション期間を指定することもできます。
イメージすると、
KMS Key
│
├─ 古い鍵マテリアル
│
└─ 新しい鍵マテリアル
という形で更新されていきます。
ここで注意したいのは、
キーをローテーションしたから、既存データが全部再暗号化されるわけではない
という点です。
AWS KMSのキー・ローテーションは、保護しているデータそのものを再暗号化するものではありません。
▪️KMSを利用したAWSの構成例
例えばWebシステムを考えてみます。
Internet
│
↓
ALB
│
↓
EC2
│
↓
RDS
│
↓
暗号化されたデータ
↑
KMS Key
さらにEC2のEBSも暗号化すると、
ALB
│
↓
EC2
↙ ↘
EBS RDS
│ │
└─────┬─────┘
↓
KMS Key
というイメージになります。
このようにKMSは、アプリケーションそのものを動かすサービスではなく、
AWS上のデータを暗号化するための基盤
として利用されます。
▪️KMSを利用するときのポイント
KMSを設計するときは、単純に
「全部KMSで暗号化すればOK」
と考えるのではなく、以下の点を考えることが重要です。
① 何を暗号化するのか
例えば、
- EBS
- RDS
- S3
- Secrets Manager
など、対象を明確にします。
② どのキーを利用するのか
AWS管理キーを使うのか、
カスタマーマネージドキーを使うのか
を検討します。
③ 誰がキーを利用できるのか
例えば、
Application Role
↓
Encrypt / Decrypt
のように、必要なIAM Roleだけに権限を与えます。
④ キーポリシーを確認する
KMSではIAMポリシーだけではなく、キーポリシーも確認します。
⑤ ローテーションを検討する
セキュリティ要件に応じて、キーのローテーションを設計します。
⑥ コストも考える
カスタマーマネージドKMSキーは、キーの作成・保管に料金が発生します。
AWSの現行料金では、作成したKMSキーは原則として1キーあたり月額1ドルで、APIリクエストにも料金が発生します。
そのため、
必要なキーを適切に設計する
ことも重要です。
▪️まとめ
今回はAWS KMSについて解説しました。
KMSを一言で表すと、
「AWSで利用する暗号化キーを管理するサービス」
です。
重要なポイントを整理すると、
KMS
↓
暗号化キーを管理
そして、
EBS
RDS
S3
EFS
Secrets Manager
↓
KMS Key
↓
データを暗号化
という形で、さまざまなAWSサービスと連携できます。
また、KMSでは、
- KMSキー
- AWS管理キー
- カスタマーマネージドキー
- キーポリシー
- IAMポリシー
- Grants
- キーローテーション
などの概念が重要です。
特に初心者のうちは、
「IAMは誰がAWSを操作できるか、KMSは暗号化キーを誰が利用できるか」
と整理すると理解しやすいでしょう。
AWSでシステムを設計する場合、データを安全に保管するための暗号化は非常に重要です。
KMS単体を覚えるだけではなく、
EBS × KMS
RDS × KMS
S3 × KMS
Secrets Manager × KMS
のように、実際のAWSサービスと組み合わせて理解することをおすすめします。
次は、KMSと非常に相性の良いAWS Secrets Managerについて学ぶと、AWSの「機密情報を安全に管理する仕組み」がさらに理解しやすくなります。
*「AWS Secrets Manager」の記事はこちら
→「https://lovelabengineer.com/2026/10/09/aws-secrets-managerとは?機密情報を安全に管理する仕組みを初/」

No responses yet