AWS

AWS KMSとは?仕組みから使い方、料金までわかりやすく解説

AWS KMSとは?仕組みから使い方、料金までわかりやすく解説

AWS Key Management Service (AWS KMS) は、クラウド上のデータを保護するための暗号化キーを安全かつ簡単に作成・管理できるフルマネージドサービスです。AWS環境でのセキュリティ対策において、KMSによる暗号化の実装は事実上の標準となっていますが、その仕組みや「エンベロープ暗号化」といった概念は複雑に感じられることも少なくありません。

この記事では、AWS KMSの基礎知識から、具体的な使い方、料金体系、CloudHSMとの違いまでを網羅的に解説します。本記事を読むことで、AWS KMSを活用し、運用負荷を最小限に抑えながら、コンプライアンス要件を満たす堅牢なデータ保護環境を構築するための知識が身につきます。

この記事で分かること

  • AWS KMSの基本的な役割とエンベロープ暗号化の仕組み
  • マネジメントコンソールを使ったキー作成と設定手順
  • KMSの料金体系とコストを抑えるためのポイント

AWS KMSの概要と基本的な役割

クラウド環境でのシステム構築において、情報セキュリティの確保は最優先事項の一つです。その中でも、機密データを保護するための「暗号化」と、その暗号化に用いる「鍵(キー)の管理」は非常に重要な要素となります。AWS KMS(Key Management Service)は、まさにこの暗号化キーの作成と管理を安全かつ容易に行うために設計されたマネージドサービスです。

AWS KMSとはどのようなサービスか

AWS KMSは、データの暗号化に使用される暗号化キーの作成、管理、および制御を行うフルマネージド型のサービスです。ハードウェアセキュリティモジュール(HSM)を使用してキーのセキュリティを保護しており、FIPS 140-2 検証済みの暗号化モジュールによってキーの機密性が担保されています。

最大の特徴は、Amazon S3、Amazon EBS、Amazon RDSといった多くのAWSサービスとネイティブに統合されている点です。これにより、ユーザーは複雑な暗号化ロジックを自前で実装することなく、設定画面での操作やAPIコールだけで、保存データの暗号化を簡単に実装できます。

  • 暗号化キーの作成、ローテーション、無効化、削除を一元管理可能
  • AWS CloudTrailと連携し、キーの使用状況をログとして記録・監査可能
  • 他のAWSサービスとシームレスに連携し、保存データの暗号化を自動化

また、AWS KMSはAWS Key Management Serviceとして、アプリケーション内でのデータ暗号化や署名検証にも利用できるため、開発者はセキュアなアプリケーション構築に専念できます。

AWS Key Management Serviceで実現できること

AWS KMSを利用することで、単にデータを暗号化するだけでなく、誰がどのキーをどのような条件で使用できるかという詳細なアクセス制御が可能になります。具体的に実現できる主な機能は以下の通りです。

機能 内容
データの暗号化・復号 対称キーまたは非対称キーを使用して、テキストデータやファイルを暗号化および復号します。
デジタル署名 非対称キーペアを使用してメッセージに署名を行い、データの完全性と送信元の真正性を検証します。
キーポリシーによる制御 JSON形式のポリシーを使用して、特定のIAMユーザーやロールに対してキーの使用権限を細かく設定します。
監査とコンプライアンス キーの作成や使用履歴がすべてログに記録されるため、セキュリティ監査や規制要件への対応が容易になります。

このように、AWS KMSは単なる鍵の保管庫ではなく、暗号化キーのライフサイクル全体を管理し、システム全体のセキュリティガバナンスを強化するためのプラットフォームとして機能します。

クラウドセキュリティにおける鍵管理の重要性

クラウドセキュリティにおいて、データそのものを暗号化することは基本中の基本ですが、それ以上に重要なのが「暗号化キーをどのように守るか」という点です。どれほど強固なアルゴリズムでデータを暗号化しても、その復号キーが攻撃者の手に渡ってしまえば、データは無防備な状態と同じになります。

オンプレミス環境や独自のサーバーで鍵管理を行う場合、物理的なHSMの導入や維持管理、キーのバックアップ、定期的なローテーション作業など、運用負荷とコストが莫大になります。また、人為的なミスによるキーの紛失や流出のリスクも排除できません。

AWS KMSを利用することで、これらの複雑な管理業務をAWSにオフロードできます。堅牢なインフラストラクチャ上で厳格に管理されたキーを使用することで、データ保護の信頼性を飛躍的に高めることが可能です。また、AWSの責任共有モデルにおいても、ユーザーは「クラウド内のセキュリティ(データ保護)」に責任を持ちますが、KMSを活用することでその責任を果たすためのベストプラクティスを容易に適用できるようになります。

AWS KMSの仕組みとエンベロープ暗号化

AWS Key Management Service(AWS KMS)を深く理解するためには、その中心的な概念である「鍵の階層構造」と「エンベロープ暗号化」という仕組みを知る必要があります。これらは、クラウド環境において高いセキュリティとパフォーマンスを両立させるために設計されたアーキテクチャです。

ここでは、KMSがどのようにしてデータを守っているのか、その技術的な裏側と具体的な処理フローについて解説します。

カスタマーマスターキーとデータキーの違い

AWS KMSでは、セキュリティ強度を高めるために、役割の異なる2種類の鍵を使い分けています。それが「KMSキー(旧称:カスタマーマスターキー / CMK)」と「データキー」です。

これら2つの鍵は、保管場所や利用目的が明確に異なります。KMSキーは「鍵を守るための鍵」であり、データキーは「実際のデータを守るための鍵」とイメージすると分かりやすいでしょう。

鍵の種類 保管場所 主な役割
KMSキー
(旧CMK)
AWS KMS内部
(外部への取り出し不可)
データキーの生成、暗号化、復号を行う。
データの暗号化には直接使用しない(サイズ制限あり)。
データキー 利用者のストレージやメモリ上
(暗号化された状態で保存)
実際のデータ(ファイル、データベースなど)の暗号化および復号を行う。

この仕組みにより、最も重要な秘密であるKMSキーは常に堅牢なAWSのハードウェアセキュリティモジュール(HSM)の中に留まり、外部に漏洩するリスクを最小限に抑えています。

エンベロープ暗号化の処理フロー

エンベロープ暗号化(Envelope Encryption)とは、データを暗号化したキーを、さらに別のキーで暗号化して保護する方式のことです。封筒(エンベロープ)の中に手紙(データ)を入れるだけでなく、その封筒自体をさらに金庫(マスターキー)で守るような構造になっています。

なぜ直接マスターキーでデータを暗号化しないのでしょうか。それは、ネットワーク経由での通信遅延を防ぎ、巨大なデータの暗号化処理を高速化するためです。KMSキー自体はAWSのサービス外に出ることができないため、大量のデータを毎回KMSに送信して暗号化するのは非効率です。

エンベロープ暗号化を用いたデータの暗号化フローは以下のようになります。

  1. AWS KMSに対して、データキーの生成をリクエストします。
  2. KMSは、「平文のデータキー」と「KMSキーで暗号化されたデータキー」の2つを生成して返します。
  3. 利用者の環境(EC2やLambdaなど)で、「平文のデータキー」を使って実際のデータを暗号化します。
  4. 暗号化が完了したら、セキュリティのためメモリ上の「平文のデータキー」は即座に破棄します。
  5. 「暗号化されたデータ」と「暗号化されたデータキー」をセットにしてストレージ(S3やEBSなど)に保存します。

逆にデータを復号する際は、保存しておいた「暗号化されたデータキー」をKMSに送信し、KMS内部で復号してもらった上で「平文のデータキー」を受け取り、それを使ってデータを元の状態に戻します。

対称暗号化と非対称暗号化の使い分け

AWS KMSでは、主に「対称暗号化キー」が利用されますが、用途に応じて「非対称暗号化キー」もサポートしています。それぞれの特徴と適切な利用シーンを理解しておくことが重要です。

  • 対称暗号化キー(Symmetric Keys)
    暗号化と復号に同じ鍵を使用する方式です。AES-256などのアルゴリズムが採用されています。S3バケットやEBSボリュームの暗号化など、AWSサービス内での一般的なデータ保護には、処理速度に優れるこの方式がデフォルトで使用されます。
  • 非対称暗号化キー(Asymmetric Keys)
    公開鍵と秘密鍵のペアを使用する方式です。RSAやECC(楕円曲線暗号)などが利用可能です。AWS外のパートナー企業が公開鍵を使ってデータを暗号化し、AWS内のKMSにある秘密鍵でのみ復号できるようにしたい場合や、デジタル署名を行いたい場合に適しています。

基本的には、AWS内部で完結するデータ保護であれば対称暗号化を選択し、外部との安全な鍵交換や署名検証が必要な特殊なケースにおいて非対称暗号化を検討するのが一般的です。

AWS KMSを利用するメリット

AWS KMS(Key Management Service)を導入することは、単にデータを暗号化するだけでなく、運用コストの削減やセキュリティガバナンスの強化といったビジネス上の重要な価値をもたらします。ここでは、企業がAWS KMSを採用する主なメリットについて、運用の手軽さ、連携性、そしてコンプライアンスの観点から詳しく解説します。

フルマネージド型による運用負荷の軽減

従来のオンプレミス環境で暗号化鍵を管理する場合、ハードウェアセキュリティモジュール(HSM)の調達、物理的な設置、メンテナンス、そしてスケーリングの計画など、多大な労力とコストが必要でした。AWS KMSはフルマネージドサービスであるため、これらの物理的な管理負担を一切不要にします。

AWS KMSを利用することで、ユーザーは暗号化鍵の作成とポリシー管理に集中でき、背後にあるインフラストラクチャの可用性や耐久性はAWSによって保証されます。これにより、セキュリティ担当者はインフラの保守ではなく、より本質的なデータ保護戦略にリソースを割くことが可能になります。

  • 物理的なHSMの購入や維持管理コストが不要になる
  • トラフィックの増減に合わせて自動的にスケーリングされる
  • 鍵の可用性と耐久性がAWSのSLAによって担保される

他のAWSサービスとのシームレスな連携

AWS KMSの最大の強みは、他のAWSサービスと深く統合されている点にあります。Amazon EBS、Amazon S3、Amazon RDS、AWS Lambdaなど、100以上のAWSサービスがKMSに対応しており、多くの場合、管理コンソール上のチェックボックスを有効にするだけで暗号化を実装できます。

通常、アプリケーション側で暗号化・復号のロジックを実装するには複雑なコーディングが必要ですが、KMSと連携したAWSサービスを利用すれば、システム開発者は暗号化の複雑な仕組みを意識することなく、透過的にデータを保護できます。

以下の表は、主要なAWSサービスとKMSの連携内容をまとめたものです。

AWSサービス 連携内容 メリット
Amazon S3 サーバーサイド暗号化(SSE-KMS) オブジェクトアップロード時に自動で暗号化され、ダウンロード時に自動で復号されます。
Amazon EBS ボリュームの暗号化 ブートボリュームやデータボリュームを暗号化し、保存データおよびスナップショットを保護します。
Amazon RDS データベースインスタンスの暗号化 DBインスタンス、ログ、バックアップデータを包括的に暗号化し、情報漏洩リスクを低減します。

セキュリティコンプライアンスへの対応と監査

企業がクラウドを利用する際、「誰が」「いつ」「どの鍵を使って」「どのデータに」アクセスしたかを追跡することは、セキュリティ監査において極めて重要です。AWS KMSはAWS CloudTrailと完全に統合されており、鍵の使用履歴がすべてログとして記録されます。

このログ機能により、不正アクセスの予兆検知や、事後調査が容易になります。また、AWS KMSのハードウェアセキュリティモジュールは、米国連邦情報処理標準であるFIPS 140-2の検証を受けています。これにより、PCI DSSやHIPAA、GDPRといった厳格な規制要件を満たす必要がある業界でも、安心して利用することができます。

  • APIリクエストを含むすべての鍵操作がCloudTrailに記録される
  • コンプライアンス監査に必要なレポート作成が容易になる
  • FIPS 140-2 検証済みのハードウェアで鍵が保護されるため信頼性が高い

AWS KMSの使い方と設定手順

AWS Key Management Service(AWS KMS)を効果的に活用するためには、適切なキーの作成プロセスと、厳格なアクセス権限の管理が不可欠です。ここでは、AWSマネジメントコンソールを使用した基本的な設定手順から、運用フェーズで重要となる権限管理やキーのローテーション設定について解説します。

マネジメントコンソールでのキー作成方法

AWS KMSで暗号化キー(KMSキー)を作成する最も一般的な方法は、ブラウザベースのAWSマネジメントコンソールを利用することです。直感的な操作で、キーのタイプや使用目的を設定できます。

基本的なKMSキーの作成手順は以下の通りです。

  1. AWSマネジメントコンソールにログインし、KMSコンソールを開きます。
  2. 左側のナビゲーションペインで「カスタマー管理型のキー」を選択し、「キーの作成」をクリックします。
  3. キーのタイプ(対称または非対称)と使用目的を選択します。通常、データの暗号化には「対称」を選択します。
  4. キーのエイリアス(表示名)と説明を入力し、必要に応じてタグを追加します。
  5. キー管理者とキー使用権限を持つユーザーまたはロールを定義します。
  6. 設定内容を確認し、「完了」をクリックしてキーを作成します。

キー作成時に選択する設定項目には、それぞれ特定の用途があります。主な設定項目とその内容は以下の通りです。

設定項目 概要と選択のポイント
キーのタイプ 対称:単一のキーで暗号化と復号を行います。S3やEBSなどのAWSサービスで使用する場合はこちらを選択します。
非対称:RSAやECCキーペアを使用し、暗号化/復号または署名/検証を行います。
キーの使用法 暗号化と復号:データの保護に使用します。
署名と検証:デジタル署名の生成と検証に使用します。
キーマテリアルのオリジン KMS:AWS KMSがキーマテリアルを生成・管理します(推奨)。
外部:オンプレミスなどで生成した独自のキーマテリアルをインポートします。
CloudHSM:AWS CloudHSMクラスター内のカスタムキーストアを使用します。

IAMポリシーによるアクセス権限の管理

AWS KMSのセキュリティにおいて最も重要なのが、誰がどのキーを使用できるかを制御する「アクセス権限の管理」です。KMSでは、通常のIAMポリシーに加えて、各キーに個別に設定されるリソースベースのポリシーである「キーポリシー」が必須となります。

キーポリシーを設定する際は、以下の点に注意して権限を設計します。

  • キーポリシーの優先順位:IAMポリシーでKMSへのアクセスを許可していても、キーポリシー側で明示的に許可されていなければ、そのキーにはアクセスできません。
  • 管理者と使用者の分離:キーの設定変更や削除を行う「キー管理者」と、暗号化・復号のみを行う「キーユーザー」を明確に分け、最小権限の原則を適用します。
  • ルートユーザーの許可:誤ってキーへのアクセス権を失わないよう、通常はAWSアカウントのルートユーザーに対してフルアクセスを許可する設定を含めることが推奨されます(これによりIAMポリシーでの制御が可能になります)。

適切なポリシー設計を行うことで、特定のアプリケーションやユーザーのみがデータを復号できるように制限し、情報漏洩のリスクを最小限に抑えることが可能です。詳細なポリシー構文については、AWS公式ドキュメントのキーポリシーに関するガイドを参照してください。

キーのローテーション設定と管理

暗号化キーを長期間使い続けることは、万が一キーが漏洩した場合のリスクを高めます。そのため、定期的にキーを新しいものに交換する「キーローテーション」が推奨されます。

AWS KMSには、このローテーションを自動化する機能が備わっています。カスタマーマネージドキー(対称キー)の場合、自動ローテーションを有効にすると、AWSは1年(365日)ごとに新しいキーマテリアルを自動的に生成します。この際、古いキーマテリアルも保持されるため、過去に暗号化されたデータも問題なく復号できます。

  • 自動ローテーション:有効化するだけで、1年ごとのローテーションが自動実行されます。アプリケーション側の設定変更は不要です。
  • 手動ローテーション:新しいKMSキーを作成し、アプリケーションの参照先を切り替える方法です。インポートされたキーマテリアルを使用している場合や、非対称キーの場合は手動での対応が必要です。
  • キーの削除と無効化:使用しなくなったキーは削除できますが、一度削除するとそのキーで暗号化したデータは二度と復号できなくなります。安全のため、削除を実行する前に7日から30日の待機期間が設けられています。

運用においては、まずキーの無効化を行い、一定期間影響がないことを確認した上で削除をスケジュールするという手順を踏むことが、データ損失を防ぐための安全なアプローチです。

AWS KMSの料金体系

AWS KMS(Key Management Service)の料金体系は、初期費用や最低利用料金が発生しない「従量課金制」が採用されています。コストは主に「鍵(キー)の保管数」と「APIリクエスト数」の2つの要素によって決定されます。物理的なHSM(ハードウェアセキュリティモジュール)を自社で導入・維持する場合と比較して、大幅に安価かつ柔軟に運用できる点が大きな特徴です。

キーの保管料金と月額コスト

AWS KMSにおける鍵の保管料金は、その鍵が「AWSマネージドキー」か「カスタマーマネージドキー」かによって大きく異なります。AWSのサービス(S3やEBSなど)を利用する際に自動的に作成される「AWSマネージドキー」は、アカウントに保管されていても料金は発生しません。

一方で、ユーザー自身が作成・管理する「カスタマーマネージドキー(CMK)」については、1つのキーにつき月額1ドルの保管料金が発生します。この料金は、キーが有効か無効かに関わらず、キーが存在する限り課金対象となります。

キーの種類 月額保管料金
(キー1つあたり)
特徴
AWSマネージドキー 無料 AWSサービス側で自動作成・管理されるキー
カスタマーマネージドキー 1.00 USD ユーザーが作成し、詳細な制御が可能なキー
インポートされたキー 1.00 USD オンプレミス等から持ち込んだキー素材

また、セキュリティ要件に応じて「キーの自動ローテーション」を有効にしている場合、ローテーションによって生成された新しいキーバージョンも、それぞれ1つのキーとしてカウントされ課金対象となる点に注意が必要です。

APIリクエスト料金の仕組み

保管料金に加え、実際に暗号化や復号を行う際に発生するAPIリクエストに対しても料金が発生します。これには、アプリケーションからの直接的な呼び出しだけでなく、AWSサービス間(例:S3へのファイルアップロード時に暗号化するなど)の連携によるリクエストも含まれます。

基本的なAPIリクエスト料金は、10,000リクエストあたり0.03ドルです。ただし、RSAキーペアやECCキーペアを使用する非対称暗号化の操作など、一部の特殊なリクエストについては料金設定が異なる場合があります。

  • 対称キーによる暗号化・復号リクエスト:10,000件あたり0.03 USD
  • GenerateDataKey(データキーの生成):10,000件あたり0.03 USD
  • RSA 2048ビットキーによる署名・検証:料金が異なる場合あり

大規模なシステムで頻繁に暗号化処理を行う場合、このリクエスト料金がコストの大部分を占める可能性があります。そのため、データキーをキャッシュして再利用する「AWS Encryption SDK」などを活用し、KMSへのAPIコール数を削減する設計が推奨されます。

無料利用枠の範囲と活用法

AWSには「AWS無料利用枠」が用意されており、AWS KMSについても毎月一定量まで無料で利用することが可能です。この無料枠は、AWSアカウントを作成してから12ヶ月間という制限はなく、無期限で適用されます。

具体的には、すべてのリージョンを合算して「月間20,000件のリクエスト」までが無料となります。この枠を超えた分から、前述の従量課金が適用されます。

  • 開発環境や小規模な検証環境であれば、無料枠内で収まるケースが多い
  • 保管料金(月額1ドル/キー)には無料枠は適用されないため注意が必要
  • CloudTrailによる監査ログの記録など、管理系の操作もリクエスト数に含まれる

詳細な最新の価格設定については、必ず公式の料金ページをご確認ください。AWS Key Management Service の料金を参照することで、リージョンごとの正確な単価を把握できます。

AWS KMSに関するよくある質問

AWS KMS(Key Management Service)の導入や運用において、ユーザーから頻繁に寄せられる疑問点をQ&A形式で解説します。サービス選定や設計時の参考にしてください。

AWS KMSとAWS CloudHSMにはどのような違いがありますか

AWS KMSとAWS CloudHSMは、どちらもクラウド上での暗号化キー管理を提供するサービスですが、管理レベルとテナンシー(占有性)に大きな違いがあります。

AWS KMSは、AWSの多くのサービスとネイティブに統合されたフルマネージド型サービスであり、共有ハードウェア上で論理的に分離されたキー管理を行います。一方、AWS CloudHSMは、お客様専用のハードウェアセキュリティモジュール(HSM)をクラウド上で提供するサービスで、より厳格な規制要件に対応する場合や、暗号化キーに対する完全な排他的制御が必要な場合に適しています。

主な違いを以下の表に整理しました。

比較項目 AW KMS AWS CloudHSM
サービス形態 マルチテナント(共有ハードウェア) シングルテナント(専有ハードウェア)
管理の容易さ 自動化されており非常に容易 クラスター管理など専門知識が必要
AWSサービス連携 標準で多数のサービスと統合 連携には追加の設定や開発が必要な場合あり
コンプライアンス FIPS 140-2 レベル 2 または 3 FIPS 140-2 レベル 3
料金モデル 従量課金(キー保管数+リクエスト数) 時間単位のHSM利用料(比較的高額)

AWS KMSのキーローテーションは自動的に行われますか

キーローテーション(鍵の更新)が自動で行われるかどうかは、キーの種類と設定によって異なります。セキュリティポリシーに応じて適切な設定を行うことが重要です。

  • AWSマネージドキー:AWSによって自動的に管理され、1年(約365日)ごとに自動でローテーションされます。この設定を変更することはできません。
  • カスタマーマネージドキー:デフォルトでは無効ですが、設定を有効にすることで1年ごとに自動ローテーションさせることが可能です。
  • インポートされたキーマテリアル:外部から持ち込んだ鍵素材を使用する場合、AWS側での自動ローテーションは行われません。手動でのローテーションが必要です。

自動ローテーションを有効にしても、古いキーで暗号化されたデータは自動的に復号可能です。AWS KMSは古いキーのメタデータを保持し続けるため、データの読み取りに支障が出ることはありません。

AWS KMSの料金体系と無料枠について教えてください

AWS KMSの料金は、主に「作成したキーの保管料金」と「APIリクエスト料金」の2つで構成されています。初期費用は不要で、使った分だけの従量課金となります。

  • キー保管料金:カスタマーマネージドキー1つにつき月額1ドル。AWSマネージドキーの保管は無料です。
  • APIリクエスト料金:暗号化や復号などのAPIリクエスト10,000回あたり0.03ドル(リージョンにより多少異なります)。

また、AWSには無料利用枠が用意されています。AWS KMSの場合、1ヶ月あたり20,000件のリクエストまでが無料となります。この無料枠は、AWSアカウントを作成してから12ヶ月経過後も継続して適用されます。

詳細な最新の料金については、AWS KMS の料金ページをご確認ください。

AWS KMSで作成したキーは他のリージョンでも使えますか

基本的に、AWS KMSで作成したキー(KMSキー)は、作成されたリージョン内でのみ使用可能な「リージョナルリソース」です。例えば、東京リージョンで作成したキーを使って、そのまま大阪リージョンのデータを直接暗号化・復号することはできません。

ただし、災害対策(DR)やグローバル展開のために複数のリージョンで同じキーを使用したい場合は、「マルチリージョンキー」という機能を利用できます。これを使用すると、あるリージョンで作成した主キーを別のリージョンに複製し、関連するキーとして同期させることが可能です。

AWS KMSを導入するセキュリティ上のメリットは何ですか

AWS KMSを利用することで、自前で暗号化システムを構築・運用する場合と比較して、以下のような強力なセキュリティ上のメリットを享受できます。

  • 鍵の一元管理とアクセス制御:すべての鍵を中央で管理し、AWS IAM(Identity and Access Management)と連携して、「誰が」「どの鍵を」「いつ」使えるかを細かく制御できます。
  • 監査ログの記録:AWS CloudTrailと統合されており、鍵の使用履歴がすべてログとして記録されます。これにより、不正アクセスの検知やコンプライアンス監査が容易になります。
  • 堅牢なハードウェアセキュリティ:AWS KMSのハードウェアセキュリティモジュールは、FIPS 140-2 検証済みの暗号化モジュールを使用しており、物理的・論理的に高い安全性が担保されています。

AWS KMSとAWS CloudHSMにはどのような違いがありますか

AWSで暗号化鍵を管理する際、AWS Key Management Service (AWS KMS) と AWS CloudHSM のどちらを選定すべきか、その違いを明確に理解しておくことは重要です。両者はともに暗号化キーの生成や保護を行いますが、その裏側にあるインフラストラクチャの構成、管理の責任範囲、および対応するインターフェースに大きな違いがあります。

管理形態とテナンシー(占有性)の違い

最も根本的な違いは、サービスが提供されるハードウェアの利用形態です。AWS KMSは、AWSが管理する共有ハードウェア(マルチテナント)上で論理的に分離されたキー管理を行うフルマネージドサービスです。これに対し、AWS CloudHSMは、ユーザー専用のハードウェアセキュリティモジュール(HSM)をAWSクラウド内で占有して利用するシングルテナント型のサービスです。

この違いにより、運用負荷と柔軟性が大きく異なります。

  • AWS KMS:AWSがハードウェアのパッチ適用、スケーリング、可用性を管理するため、ユーザーはキーの作成とポリシー設定に集中できます。
  • AWS CloudHSM:ハードウェアのプロビジョニングはAWSが行いますが、HSM内のユーザー管理、ファームウェアの更新、クラスターの管理などはユーザー自身の責任で行う必要があります。

機能とコストの比較表

それぞれのサービス特性を整理すると、以下のようになります。選定の際は、コンプライアンス要件とコストのバランスを考慮する必要があります。

比較項目 AWS KMS AWS CloudHSM
テナンシー マルチテナント(共有ハードウェア) シングルテナント(専用ハードウェア)
管理の容易さ 高い(フルマネージド) 低い(ユーザーによる管理が必要)
AWSサービス連携 ネイティブに統合(S3, EBS, RDS等) 一部統合されているが、主にカスタムアプリ向け
標準規格対応 AWS SDK / API PKCS#11, JCA/JCE, Microsoft CNG
FIPS認証 FIPS 140-2 レベル 2(一部レベル 3) FIPS 140-2 レベル 3
料金体系 キー保管料+APIリクエスト従量課金 HSMごとの時間単位課金(高額になる傾向)

コンプライアンスとインターフェースの要件

セキュリティ規制や業界標準の要件も、どちらを選ぶかの決定的な要因となります。AWS KMSは、AWSサービスとの親和性が高く、JSON形式のポリシーでアクセス制御を行いますが、暗号化操作はAWS独自のAPIを使用します。

一方、既存のオンプレミスシステムからの移行や、特定の業界規制(厳格な鍵管理要件)に対応する必要がある場合は、AWS CloudHSMが適しています。AWS CloudHSMは、PKCS#11やMicrosoft CNGなどの業界標準APIをサポートしており、アプリケーションのコードを大幅に変更することなくクラウドへ移行することが可能です。また、FIPS 140-2 レベル3の認証を受けたハードウェアを排他的に制御できるため、鍵の生成から破棄までを完全にユーザーの管理下に置くことができます。

推奨されるユースケースの使い分け

基本的には、AWSサービス(Amazon S3やAmazon EBSなど)のデータを暗号化したい場合や、運用負荷を最小限に抑えたい場合はAWS KMSが推奨されます。多くの一般的なWebアプリケーションやデータ分析基盤では、KMSで十分なセキュリティと機能が得られます。

対して、以下のようなケースではAWS CloudHSMの導入を検討します。

  • Oracle DatabaseのTDE(透過的データ暗号化)でマスターキーを外部管理したい場合
  • 独自の認証局(CA)を構築し、秘密鍵をHSM内で厳重に保護したい場合
  • FIPS 140-2 レベル3への準拠が法的または契約上の必須要件である場合
  • 共有ハードウェアの使用がポリシーで禁止されている場合

AWS KMSのキーローテーションは自動的に行われますか

AWS KMS(Key Management Service)におけるキーローテーション(鍵の更新)が自動で行われるかどうかは、利用しているキーの種類(AWSマネージドキーか、カスタマーマネージドキーか)および設定によって異なります。

セキュリティのベストプラクティスとして、暗号化キーを定期的に変更することは非常に重要です。キーをローテーションすることで、万が一キーが漏洩した場合の影響範囲を最小限に抑え、暗号解読の試みに対する耐性を高めることができます。以下に、キーの種類ごとの挙動と設定について詳しく解説します。

キーの種類によるローテーションの違い

AWS KMSには大きく分けて、AWSが管理する「AWSマネージドキー」と、ユーザー自身が作成・管理する「カスタマーマネージドキー」の2種類があります。さらに、外部からキーマテリアルをインポートした場合など、条件によって自動ローテーションの可否が変わります。

キーの種類 自動
ローテーション
ローテーション周期 設定の変更
AWSマネージドキー あり(強制) 1年(365日)ごと 不可(無効化できない)
カスタマーマネージドキー あり(オプション) 1年(365日)ごと 有効/無効の切り替え可
インポートされたキーマテリアルを持つキー なし - 不可(手動のみ)
非対称キー・HMACキー なし - 不可(手動のみ)

このように、AWSマネージドキーは自動的にローテーションされ、ユーザーがその設定を変更することはできません。一方で、カスタマーマネージドキーの場合は、ユーザーが明示的に自動ローテーションを有効化する必要があります。

自動ローテーションが有効な場合の動作と仕組み

自動ローテーションを有効にすると、AWS KMSは指定された周期(通常は1年)で新しい暗号化マテリアル(バッキングキー)を生成します。この際、利用者にとって非常に大きなメリットとなるのが、キーIDやARN(Amazonリソースネーム)が変わらないという点です。

  • 暗号化時: 新しいデータは、ローテーション後に生成された「新しいキー」を使って暗号化されます。
  • 復号時: 過去に暗号化されたデータは、AWS KMSが自動的に「古いキー」を参照して復号します。

システム側でキーIDを変更したり、アプリケーションのコードを書き換えたりする必要はありません。古いキーマテリアルは、それを使用して暗号化されたデータが存在する限り、AWS KMSによって安全に保持され、復号のために利用可能な状態が維持されます。

詳細な仕様については、AWS KMS 公式ドキュメントのキーのローテーションを参照してください。

手動ローテーションが必要なケースと手順

自動ローテーションに対応していない「インポートされたキーマテリアル」や「非対称キー」、あるいは「1年未満の短いスパンでローテーションしたい」といった要件がある場合は、手動でのローテーションが必要です。

手動ローテーションは、既存のキー自体を更新するのではなく、新しいCMK(カスタマーマスターキー)を作成し、アプリケーションが参照するエイリアス(別名)を付け替えることで実現します。

  1. 新しいカスタマーマネージドキーを作成する。
  2. アプリケーションがキーIDではなく「エイリアス」を参照していることを確認する。
  3. エイリアスのターゲットを、古いキーから新しいキーに変更する。
  4. 古いキーは削除せず、過去のデータの復号用に残しておく。

手動ローテーションの場合、古いキーを誤って削除してしまうと、過去のデータを復号できなくなるため、キーのライフサイクル管理には十分な注意が必要です。

AWS KMSの料金体系と無料枠について教えてください

AWS KMS(Key Management Service)の料金体系は非常にシンプルで、主に「作成した鍵(KMSキー)の保管料金」と「鍵を使用するためのAPIリクエスト料金」の2つで構成されています。初期費用や最低利用期間といった縛りはなく、実際に利用した分だけ支払いが発生する従量課金制です。

具体的なコスト構造と、コスト削減に役立つ無料利用枠の範囲について解説します。

KMSキーの保管にかかる月額料金

KMSで管理する「マスターキー」の保管に対して発生する料金です。ここでの重要なポイントは、ユーザー自身が作成・管理する「カスタマーマネージドキー」と、AWSの各サービスが自動的に作成する「AWSマネージドキー」で扱いが異なる点です。

キーの種類 月額料金
(キー1つあたり)
備考
カスタマーマネージドキー 1.00 USD ユーザーが作成・管理するキー。保管されている限り課金されます。
AWSマネージドキー 無料 S3やEBSなどで暗号化を選択した際に、AWS側で自動生成されるキーです。
インポートされたキー 1.00 USD 外部からキーマテリアルをインポートした場合も同様に課金されます。

多くのAWSサービス(EBSボリュームの暗号化など)でデフォルトで使用される「AWSマネージドキー」は、保管料がかかりません。一方、より細かいアクセス制御やコンプライアンス要件のために自分でキーを作成(カスタマーマネージドキー)した場合は、1つにつき月額1ドルが発生します。

APIリクエスト料金と無料利用枠

保管しているキーを使ってデータの暗号化や復号を行う際、AWS KMSに対してAPIリクエストが送信されます。このリクエスト数に応じても料金が発生します。

  • 基本料金:10,000リクエストあたり0.03 USD(※リージョンにより多少異なる場合があります)
  • 無料利用枠:毎月20,000リクエストまで無料

この無料利用枠は、AWSアカウントを作成してから12ヶ月間限定のものではなく、期間の制限なく継続的に毎月適用される無料枠です。そのため、開発環境や小規模な利用であれば、APIリクエスト料金はほとんどかからないケースも多くあります。

ただし、S3などのストレージサービスで大量のオブジェクトを個別にKMSで暗号化・復号する場合、アクセス頻度によってはリクエスト数が膨大になり、コストが増加する可能性があるため注意が必要です。

最新の正確なリージョンごとの価格については、公式情報をご確認ください。
AWS Key Management Service の料金

課金を停止する際の注意点

不要になったカスタマーマネージドキーの課金を停止したい場合、単にキーを「無効化(Disabled)」するだけでは課金は止まりません。キーの状態に関しては以下の点に注意してください。

  • キーを「無効化」しても、保管料金(月額1ドル)は発生し続ける
  • 課金を完全に止めるには、キーの「削除スケジュール」を設定し、削除を実行する必要がある
  • 削除されたキーで暗号化されたデータは二度と復号できなくなるため、削除は慎重に行う必要がある

このように、AWS KMSは安価に始められるサービスですが、キーの種類による保管料の違いと、システム規模に応じたリクエスト数の見積もりを把握しておくことが、適切なコスト管理につながります。

AWS KMSで作成したキーは他のリージョンでも使えますか

結論から申し上げますと、AWS KMSで作成したキー(KMSキー)は、デフォルトの状態では作成したリージョン内でのみ使用可能な「リージョナルリソース」です。したがって、基本的には他のリージョンで直接使用することはできません。

しかし、マルチリージョンキーという機能を利用することで、複数のリージョンで同じキーIDとキーマテリアルを持つキーを使用することが可能になります。これにより、あるリージョンで暗号化したデータを、復号のために再暗号化することなく、別のリージョンで復号して利用できるようになります。

AWS KMSキーのリージョン制約と基本原則

AWS KMSの標準的なキー(シングルリージョンキー)は、作成されたAWSリージョンに厳密に紐付けられています。例えば、東京リージョン(ap-northeast-1)で作成したキーは、そのままでは大阪リージョン(ap-northeast-3)やバージニア北部リージョン(us-east-1)のリソースから直接参照したり、暗号化・復号に使用したりすることはできません。

以前は、異なるリージョンへ暗号化データを移動させる場合、元のリージョンで一度データを復号し、移動先のリージョンのキーで再度暗号化する(Re-encrypt)プロセスが必要でした。この方法は手間がかかるだけでなく、一時的に平文データがメモリ上に展開されるリスクや、レイテンシの増加といった課題がありました。

マルチリージョンキーによるクロスリージョン利用

AWS KMSの「マルチリージョンキー」機能は、こうした課題を解決するために設計されました。この機能を使うと、1つの「プライマリキー」を作成し、それを他のリージョンに「レプリカキー」として複製できます。

プライマリキーとレプリカキーは、同じキーIDとキーマテリアル(暗号鍵の中身)を共有します。そのため、システム上は「同じキー」として扱われ、リージョンをまたいだデータの相互運用が可能になります。

機能・特徴 シングルリージョンキー(通常) マルチリージョンキー
利用可能範囲 作成したリージョンのみ 複製した複数のリージョン
キーID リージョン固有 全リージョンで共通(mrk-で始まるID)
主な用途 単一リージョンでのデータ保護 DR対策、グローバル展開
管理の手間 シンプル リージョンごとのポリシー管理が必要

詳細な仕様については、AWS KMS デベロッパーガイドもあわせてご参照ください。

マルチリージョンキーの具体的な利用シーン

マルチリージョンキーは、特にデータの地理的冗長性が求められる場面で威力を発揮します。主な利用シーンは以下の通りです。

  • ディザスタリカバリ(DR):東京リージョンのバックアップデータを大阪リージョンに転送し、災害時に即座に復旧・復号する。
  • グローバルアプリケーション:世界各地に分散した拠点間で、共通の暗号化データを安全に共有・利用する。
  • 運用負荷の軽減:クロスリージョンコピー時の再暗号化処理を不要にし、データパイプラインを簡素化する。

導入時の注意点とセキュリティ管理

マルチリージョンキーを利用する際は、セキュリティ管理の複雑さが増す点に注意が必要です。キーマテリアルは共有されますが、キーポリシー、IAMポリシー、エイリアス、タグなどは同期されず、リージョンごとに独立して管理する必要があります。

つまり、プライマリキーがあるリージョンで特定のユーザーにアクセス権限を与えても、レプリカキーがあるリージョンではその権限は適用されません。各リージョンで適切な権限設定(最小権限の原則)を個別に適用し、監査を行う必要があります。また、キーの無効化や削除も慎重に行う必要があり、運用設計が重要となります。

AWS KMSを導入するセキュリティ上のメリットは何ですか

AWS KMS(Key Management Service)を導入することは、単にデータを暗号化するだけでなく、セキュリティガバナンス全体を強化する重要な意味を持ちます。クラウド環境において、暗号化キーの管理はデータ保護の要です。AWS KMSを利用することで得られる具体的なセキュリティ上のメリットは、主に「鍵管理の一元化」「監査機能の統合」「ハードウェアレベルの安全性」「きめ細やかなアクセス制御」の4点に集約されます。

一元管理によるガバナンスの強化と運用リスクの低減

従来のオンプレミス環境や個別のアプリケーション実装では、暗号化キーが各サーバーやソースコード内に分散して保管されるケースが少なくありませんでした。これは、鍵の紛失や盗難、更新漏れといったセキュリティリスクを増大させる原因となります。

AWS KMSを導入することで、AWS上の様々なサービス(EBS、S3、RDSなど)で使用される暗号化キーを一箇所で集中的に管理できるようになります。これにより、鍵の作成、無効化、削除といったライフサイクル管理が容易になり、組織全体でのセキュリティポリシーの統一と運用ミスの防止が可能になります。

AWS CloudTrailとの連携による完全な監査証跡

セキュリティコンプライアンスにおいて、「誰が」「いつ」「どのデータに対して」アクセスしたかを追跡できることは極めて重要です。AWS KMSはAWS CloudTrailとシームレスに統合されており、キーの使用履歴がすべてログとして記録されます。

  • どのIAMユーザーまたはロールがキーの使用をリクエストしたか
  • リクエストが実行された日時とIPアドレス
  • 実行された操作内容(暗号化、復号、キーの作成など)
  • リクエストが成功したか失敗したか

このログ機能により、不正アクセスの兆候を早期に検知できるほか、PCI DSSやHIPAAなどのコンプライアンス要件で求められる監査レポートの作成も迅速に行うことができます。

FIPS 140-2 検証済みハードウェアによる高い安全性

AWS KMSのバックエンドでは、ハードウェアセキュリティモジュール(HSM)が使用されています。これは暗号化キーを物理的・論理的に保護するための専用ハードウェアです。AWS KMSのHSMは、米国政府のセキュリティ基準であるFIPS 140-2の検証を受けています。

ソフトウェアベースの暗号化と比較して、HSMを利用するAWS KMSは、鍵自体がプレーンテキスト(平文)の状態でディスクに保存されたり、メモリ上に不用意に展開されたりするリスクを排除します。導入によるセキュリティレベルの違いは以下の通りです。

比較項目 一般的なソフトウェア管理 AWS KMS (HSM利用)
鍵の保管場所 サーバー内のディスクや設定ファイル 耐タンパ性を持つ専用ハードウェア内
物理的セキュリティ サーバーの管理状況に依存 FIPS 140-2 検証済みの厳格な基準
アクセス制御 OSやアプリの権限設定に依存 IAMおよびキーポリシーによる厳密な制御

最小権限の原則に基づいた詳細なアクセス制御

AWS KMSでは、AWS Identity and Access Management (IAM) およびキーポリシーを使用することで、非常に粒度の細かいアクセス制御が可能です。「鍵を管理する管理者」と「鍵を使用してデータを暗号化・復号する利用者」を明確に分離することができます。

例えば、特定のアプリケーションサーバーには「データの暗号化のみ」を許可し、「復号」は許可しないといった設定も可能です。これにより、万が一サーバーがマルウェアに感染した場合でも、データの中身を読み取られるリスクを最小限に抑えることができます。このように、職務分掌と最小権限の原則を徹底できる点こそが、AWS KMSを導入する最大のセキュリティメリットと言えるでしょう。

詳細な仕様やコンプライアンス対応状況については、AWS Key Management Service の特徴もあわせてご確認ください。

まとめ

AWS KMSは、クラウド上のデータを保護するための鍵管理を簡素化し、システム全体のセキュリティを強化する重要なサービスです。本記事では、その仕組みから具体的な使い方、料金体系まで以下のポイントを中心に解説しました。

  • フルマネージド:ハードウェアの管理不要で、暗号化キーの作成やローテーションが容易
  • 高い安全性:エンベロープ暗号化とIAMポリシーによる厳格なアクセス制御
  • シームレスな連携:Amazon S3やAmazon EBSなど、他のAWSサービスと簡単に統合可能

AWS KMSを適切に活用することで、コンプライアンス要件を満たしつつ、データ漏洩リスクを大幅に低減できます。まずはAWSマネジメントコンソールからカスタマー管理キーを作成し、実際の暗号化設定を試してみましょう。

  • fb-button
  • line-button
  • linkedin-button

無料メルマガ

CONTACT

Digital Intelligenceチャンネルへのお問い合わせはこちら

TOP