ITの教科書検索
入門読了 約10分

AWS KMSとは ― 暗号化キーとエンベロープ暗号化

KMSは、データを暗号化する鍵を作成して安全に保管するサービスです。3種類のキーの違い、エンベロープ暗号化の流れ、キーポリシー、ローテーション、料金を説明します。

目次
  1. AWS KMSとは
  2. KMSキーの種類
  3. エンベロープ暗号化
  4. S3のSSE-S3とSSE-KMS
  5. キーポリシー
  6. CloudTrailの記録
  7. キーのローテーション
  8. キーの削除と待機期間
  9. キーマテリアルの持ち込み(BYOK)
  10. CloudHSM・Secrets Managerとの違い
  11. KMSの料金
  12. 練習問題

AWS KMSとは、暗号化に使う鍵を作り、保管し、使わせるサービス

AWSのサービスでデータを暗号化するとき、鍵を作成して保護するのがAWS KMSです。正式名はAWS Key Management Serviceです。KMSで作って管理する鍵を、KMSキーと呼びます。KMSキーは、暗号化されていない形でKMSの外に出ません。利用者は鍵そのものを受け取らず、KMSに暗号化や復号を依頼します。

データを暗号化すると、今度はその鍵を保護する必要が出てきます。鍵を別の鍵で暗号化しても、最上位の鍵はどこかで保護しなければなりません。KMSは、この最上位の鍵を、FIPS 140-3のセキュリティレベル3の認定を受けたHSMの中で保護します。HSMは、暗号の処理と鍵の保管を行う専用の機器です。

KMSは、多くのAWSのサービスと連携しています。AWSの開発者ガイドが挙げるよくある使い方は、EBSのボリューム・S3のバケット・RDSのデータベースの暗号化です。

KMSキーの種類は3つ。違いは利用者が管理できる範囲

KMSキーには、作成者と管理者の違いによって3つの種類があります。利用者が自分で作って管理するキーを、カスタマーマネージドキーと呼びます。キーポリシーの内容・ローテーションの有無・削除の予定まで、利用者が決められます。

AWSのサービスが、利用者のアカウントの中に作るキーもあります。これをAWSマネージドキーと呼びます。aws/s3やaws/ebsのような別名が付きます。利用者はキーとその使用の記録を確認できますが、設定は変更できません。

3つ目のAWS所有のキーは、AWSのサービスが自分のアカウントで保持し、複数の利用者のために使うキーです。料金はかかりませんが、利用者はキーポリシーの変更も、使用の記録の確認もできません。AWSの開発者ガイドによると、2021年以降の新しいサービスにはAWSマネージドキーが作られません。既定の暗号化には、AWS所有のキーが使われます。

KMSキーの3つの種類(AWS KMS開発者ガイド、2026-10-28時点)
比べる点カスタマーマネージドキーAWSマネージドキーAWS所有のキー
作る人利用者AWSのサービスが、利用者のアカウントに作るAWSのサービスが、サービス側のアカウントに作る
キーポリシー利用者が決めるサービスが決める。利用者は見られるが変えられないサービスだけが決め、利用者は見られない
CloudTrailでの記録利用者の証跡に残る利用者の証跡に残る利用者は見られない
自動ローテーション任意。利用者が有効にする毎年。利用者は変えられないサービスごとに異なる
料金月額と使用料がかかる月額はかからない。使用料はかかるかからない

鍵を自分で管理したいとき、使用を監査したいときはカスタマーマネージドキーを使います。手間をかけずに暗号化したいときは、サービスが用意するAWS所有のキーかAWSマネージドキーで十分です。

エンベロープ暗号化とは、データを暗号化した鍵を、さらにKMSキーで暗号化すること

KMSキーで、データを直接暗号化することもできます。ただし、KMSのEncryptという操作で暗号化できるのは4,096バイトまでです。直接暗号化するには、データそのものをKMSに送る必要もあります。

そこで、大きなデータには別の鍵を使います。KMSが作ってアプリに渡す、データの暗号化用の共通鍵をデータキーと呼びます。データはデータキーで暗号化し、データキーはKMSキーで暗号化します。

このように、データを暗号化した鍵を別の鍵でさらに暗号化するやり方を、エンベロープ暗号化と呼びます。エンベロープは、英語で封筒のことです。AWSの開発者ガイドは、暗号化した鍵と暗号化したデータをまとめたものを、この名前で呼んでいます。

AWS KMSKMSキー外に出ない暗号化一緒に保存データキー暗号化済み暗号化ファイル暗号化済み
KMSキーはデータキーを暗号化し、データキーはファイルを暗号化します。KMSキーはKMSの外に出ず、保存先には暗号化したデータキーとファイルが一緒に置かれます。

暗号化したデータキーは、暗号化したデータの隣に置いても安全です。データキーを復号できるのは、KMSキーを使う権限を持つ人だけだからです。鍵を変更したいときも、大きなデータを暗号化し直さずに、小さなデータキーだけを暗号化し直せます。

次の図で、ファイルを暗号化して保存し、あとで復号するまでを1段ずつ進めます。ステップ1から4が暗号化、ステップ5と6が復号です。

STEP 1 / 6
AWS KMSキーは外に出ないKMSキー作成を頼む2つ返すアプリ平文データキー暗号化データキー平文ファイル保存先鍵やデータが動くKMSへの依頼平文(読める状態)暗号化済み
ステップ1:KMSにデータキーを作ってもらう
アプリが、KMSにデータキーの作成を依頼します。KMSはデータキーを作り、指定したKMSキーでそのコピーを暗号化します。アプリには、平文のデータキーと、暗号化したデータキーの2つが返ります。

KMSに送るのは、データキーの作成と復号の依頼だけです。ファイルの暗号化と復号は、KMSの外にあるアプリが平文のデータキーで行います。KMSはデータキーを保存しないので、暗号化したデータキーを保管するのは利用者の側です。

S3のSSE-S3とSSE-KMSの違いは、鍵をS3とKMSのどちらが管理するか

S3の記事で説明したオブジェクトは、保存するときにS3の側で暗号化されます。この仕組みをサーバ側暗号化と呼びます。S3では、鍵の管理方法によって方式が分かれます。2023年1月5日からは、新しく保存するオブジェクトのすべてがSSE-S3で自動的に暗号化されます。

SSE-S3は、S3が管理する鍵で暗号化する方式です。追加の料金はかかりません。S3は、オブジェクトごとに別の鍵を使います。SSE-KMSは、KMSのキーで暗号化する方式です。バケットの既定の設定か、保存のときの指定で選びます。

SSE-KMSを選ぶと、S3は前の節で説明したエンベロープ暗号化を使います。使うKMSキーは、S3用のAWSマネージドキーか、自分で作ったカスタマーマネージドキーから選びます。

S3のSSE-S3とSSE-KMSの違い(Amazon S3ユーザーガイド、2026-10-28時点)
比べる点SSE-S3SSE-KMS
鍵の管理S3AWS KMS
使う鍵S3が管理する鍵KMSキー。2種類から選ぶ
既定新しいオブジェクトに自動で使われるバケットの既定の設定か、保存のときに指定する
追加の料金かからないKMSの料金がかかる

SSE-KMSでは、オブジェクトを読み書きする人に、KMSキーの権限も必要です。保存にはkms:GenerateDataKey、読み出しにはkms:Decryptの権限が必要です。AWSマネージドキーで暗号化したオブジェクトは、別のアカウントと共有できません。

SSE-KMSでは、オブジェクトを読み書きするたびに、S3からKMSへのリクエストが発生します。S3バケットキーを有効にすると、このリクエストを減らせます。AWSは、KMSのリクエストの料金を最大99%減らせると説明しています。S3のどこに個人情報などの機密データがあるかを調べるサービスには、Amazon Macieがあります。

KMSキーを使える人は、キーポリシーで決まる

KMSキーには、必ず1つのキーポリシーが付いています。キーポリシーは、キーの側に付けるポリシーです。そのキーを誰がどの操作に使えるかを書きます。キーポリシーもIAMのポリシーと同じくJSONの文書で、1つ以上のステートメントから成ります。

KMSキーには、ルートユーザーやキーを作った人を含め、明示的に許可された人しかアクセスできません。IAMポリシーで許可しても、キーポリシーがIAMポリシーを有効にしていなければ効きません。キーを作成するときの既定のキーポリシーには、IAMポリシーを有効にするステートメントが含まれます。組織のメンバーアカウントでは、KMSの操作もAWS OrganizationsのSCPが決める上限の中でしか使えません。

キーポリシーは、リージョンごとに適用されます。IAMポリシーは、すべてのリージョンに効きます。キーポリシーが効くのは、同じリージョンにあるKMSキーだけです。

KMSキーを使った記録は、CloudTrailに残る

KMSへの操作は、AWS CloudTrailに記録されます。CloudTrailは、AWSへの操作を誰がいつ行ったかを記録するサービスです。KMSでは、キーの作成やキーポリシーの変更に加えて、データキーの作成や復号の操作も記録されます。

記録を確認すると、どのキーがいつ、誰の操作で使われたかが分かります。カスタマーマネージドキーとAWSマネージドキーの記録は、利用者が確認できます。AWS所有のキーの記録は、利用者には見えません。CloudTrailとCloudWatchの違いは、CloudWatchの記事にまとめています。

キーのローテーションは、カスタマーマネージドキーなら選べる

KMSキーの中で、実際に暗号化に使う秘密の値をキーマテリアルと呼びます。ローテーションは、KMSキーはそのままに、このキーマテリアルを新しくすることです。キーIDやキーポリシーは変わらないので、キーを使うアプリを書き換える必要はありません。

カスタマーマネージドキーでは、自動ローテーションは任意で、利用者が有効にします。有効にすると、既定では365日ごとにキーマテリアルが新しくなります。周期は、90日から2,560日の間で変更できます。定期のローテーションとは別に、すぐにローテーションすることもできます。

AWSマネージドキーは、毎年自動でローテーションされます。利用者はこの予定を変えられません。AWS所有のキーのローテーションは、サービスごとに異なります。自動ローテーションを使えるのは、対称キーだけです。外部から持ち込んだキーマテリアルのキーなどは対象外です。

ローテーションのあとも、前のキーマテリアルは残ります。古いデータを復号するとき、KMSは暗号化したときのキーマテリアルを自動で選びます。そのため、ローテーションの前に暗号化したデータも、そのまま復号できます。

KMSキーの削除には、7日から30日の待機期間がある

KMSキーは、削除を予定してから待機期間が過ぎたときに削除されます。待機期間は7日から30日の間で決め、既定は30日です。削除を予定できるのは、カスタマーマネージドキーだけです。AWSマネージドキーとAWS所有のキーは削除できません。

待機期間を置くのは、削除が元に戻せない操作だからです。KMSキーが削除されると、一部の例外を除いて、そのキーで暗号化したデータは復号できなくなります。待機期間は、そのキーが今後も不要かどうかを確認するための時間です。

待機期間中のキーは削除保留中の状態になり、暗号化にも復号にも使えません。待機期間が終わる前なら、削除を取り消せます。取り消したキーは無効の状態に戻るので、使うには有効にし直します。

待機期間が終わると、削除はもう取り消せません。必要かどうか迷うときは、削除ではなくキーを無効にする方法があります。無効にしたキーは、あとから有効に戻せます。

キーマテリアルの持ち込み(BYOK)は、自分で生成した鍵の値をKMSキーにインポートすること

KMSキーのキーマテリアルは、通常はKMSが生成します。キーマテリアルの無いKMSキーを作成し、自分で生成したキーマテリアルをインポートすることもできます。この機能を、一般にBYOK(bring your own key)と呼びます。

持ち込んだキーマテリアルの生成と保護は、利用者の責任になります。KMSから、持ち込んだキーマテリアルを取り出すことはできません。そのため、元のキーマテリアルはAWSの外で保管しておきます。

持ち込んだキーマテリアルは、利用者がいつでも削除できます。有効期限を設定しておくと、期限が来たときにKMSが削除します。削除すると、KMSキーはすぐに使えなくなります。同じキーマテリアルを再度インポートすると、また使えるようになります。

前の節で説明したとおり、持ち込んだキーマテリアルのキーは、自動ローテーションの対象外です。対称キーなら、新しいキーマテリアルをインポートして、すぐにローテーションすることはできます。対称キーで暗号化したデータは、同じキーマテリアルを持っていても、KMSの外では復号できません。

KMSとCloudHSM・Secrets Managerの違い

AWS CloudHSMは、最初の節で説明したHSMを1つの利用者だけで使い、利用者が完全に制御するサービスです。KMSのキーの保管先にCloudHSMを使うこともできます。その場合は、CloudHSMの料金が別にかかります。

AWS Secrets Managerは、データベースのパスワードやAPIキーのような秘密情報を保管するサービスです。取得とローテーションも行います。Secrets Managerの説明では、暗号化の鍵にはKMSを使うよう勧めています。アプリに書きたくないパスワードはSecrets Manager、データを暗号化する鍵はKMSが受け持ちます。

KMSの料金は、キーの月額とリクエストの数で決まる

KMSの料金は、主にカスタマーマネージドキーの数と、KMSへのリクエストの数で決まります。次の表の値は、2026年10月28日にAWSの料金ページで確認したものです。

AWS KMSの料金(2026-10-28時点、AWS KMSの料金ページ)
項目料金
カスタマーマネージドキー1キーあたり月1ドル。1時間単位で按分する
ローテーションしたキー1回目と2回目のローテーションで、月1ドルずつ増える。3回目からは増えない
AWSマネージドキー月額はかからない。キーへのリクエストには料金がかかる
AWS所有のキーかからない
リクエスト(東京リージョン)1万件あたり0.03ドル。非対称キーを使う一部のリクエストは別の単価
無料枠すべてのリージョンを合わせて、月2万件のリクエスト

データキーそのものには、月額の料金はかかりません。データキーにかかるのは、データキーを作るリクエストと、復号するリクエストの料金です。従量課金の考え方は、AWSの料金の記事にまとめています。最新の値は、KMSの料金ページで確認してください。

参考にした資料

練習問題(全5問)

Q1エンベロープ暗号化でファイルを保存するとき、保存先に一緒に置くものとして正しいものはどれ?
Q2大きなファイルを、KMSキーで直接ではなくデータキーで暗号化する理由として正しいものはどれ?
Q3AWSマネージドキーのローテーションの説明として正しいものはどれ?
Q4IAMポリシーでKMSキーの使用を許可したのに、使えなかった。考えられる原因として正しいものはどれ?
Q5キーポリシーを自分で決め、使用をCloudTrailで監査し、自動ローテーションを自分で有効にしたい。選ぶキーはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

AWSの記事を続けて読む

AWS 全38本中25本目