メニュー
AWS Key Management Service
開発者ガイド

AWS Key Management Service の概念

AWS Key Management Service (AWS KMS) の基本的な用語および概念についてと、それらがデータの保護にどのように役立つかについて説明します。

カスタマーマスターキー

AWS KMS のプライマリリソースはカスタマーマスターキー (CMK) です。CMK を使用してデータを最大 4 KB (4096 バイト) まで暗号化したり復号することができます。データを暗号化するために AWS KMS の外で使用するデータキーの生成、暗号化、復号には、通常 CMK を使用します。

AWS KMS は CMK を保存、トラック、保護します。CMK を使用する場合は、AWS KMS を通じてアクセスします。CMK が AWS KMS を暗号化していない状態にしておくことはありません。 この戦略は AWS KMS が返すデータキーとは異なります (オプションでプレーンテキストの使用も可能)。AWS KMS ではデータキーは保存、管理、または追跡されません。

AWS アカウントには 2 種類の CMK があります。

  • カスタマー管理の CMK は、ユーザーが作成、管理、使用する CMK です。これには CMK の有効化と無効化暗号化情報のローテーション、CMK へのアクセス管理や暗号化オペレーションで CMK を使用する IAM ポリシーとキーポリシーの確立 が含まれます。AWS サービスがカスタマー管理の CMK を使用するように許可できますが、その場合でも CMK の管理権はユーザーが維持します。

     

  • AWS 管理の CMK は、AWS KMS と統合している AWS サービスがユーザーの代理として作成、管理、使用する、ユーザーアカウント内の CMK です。この CMK はユーザーの AWS アカウントおよびリージョンに固有のものです。AWS 管理の CMK を作成したサービスだけが、これを使用できます。

     

    AWS 管理の CMK のエイリアスは aws/service-nameaws/redshift といった形式を使用するので認識できます。通常、サービスのセットアップ時または CMK を初めて使用する時に、サービスがアカウント内に AWS 管理の CMK を作成します。

AWS KMS と統合する AWS サービスはさまざまな方法で使用することができます。一部のサービスは、アカウント内に AWS 管理の CMK を作成します。その他のサービスでは、作成したカスタマー管理の CMK を指定する必要があります。また、その他は AWS 管理の CMK の使いやすさやカスタマー管理の CMK の管理を可能にするため、CMK の両タイプをサポートしています。

データキー

データキーは、大量のデータや他のデータ暗号化キーといったデータを暗号化するための暗号化キーです。AWS KMS CMK を使用してデータキーの生成、暗号化、復号を行うことができますが、AWS KMS がデータキーを保存、管理、トラックすることはなく、AWS KMS がデータキーを使用してデータを暗号化することはできません。アプリケーション内のデータキーを使用し管理する必要があります。

GenerateDataKey API リクエストを行う場合、AWS KMS はユーザーが指定した CMK からデータキーを取得します。CMK は、プレーンテキストのデータキーと CMK で暗号化されたコピーを返します。プレーンテキストのデータキーを使用してデータを暗号化し、できる限り早急にメモリからそれを削除します。データを復号できるように暗号化したデータキーを保管し管理する必要があります。通常、ユーザーは暗号化したデータを使用して暗号化済みのデータキーを保存します。

データを復号するには復号 API リクエストで暗号化されたデータキーを渡します。AWS KMS は CMK を使ってデータキーを復号し、プレーンテキストのデータキーを返します。プレーンテキストのデータキーを使ってデータを復号したら、できる限り早急にメモリからプレーンテキストのデータキーを削除します。

エンベロープ暗号化

AWS KMS はエンベロープ暗号化を使用してデータを保護します。エンベロープ暗号化は、一意なデータキーでプレーンテキストデータを暗号化してから、データキーをキー暗号化キー (KEK) で暗号化する手法です。KEK を別の KEK などで暗号化する選択もできますが、最終的にはマスターキーが必要です。マスターキーは 1 つ以上の他のキーを復号できる、暗号化されていない (プレーンテキストの) キーです。

エンベロープ暗号化には、いくつかの利点があります。

  • データキーの保護

    データキーを暗号化する場合、暗号化されたデータキーの保存場所について心配する必要がありません。これは、そのデータキーのセキュリティは暗号化によって本質的に保護されているためです。暗号化されたデータとともに、暗号化されたデータキーを安全に保存できます。

  • 複数のマスターキーでの同じデータの暗号化

    暗号化オペレーションには時間がかかります (特に、暗号化するデータが大きいオブジェクトである場合)。異なるキーで raw データを複数回にわたって再暗号化する代わりに、raw データを保護するデータキーのみを再暗号化できます。

  • 複数のアルゴリズムの強度の結合

    通常、対称キーアルゴリズムが、パブリックキーアルゴリズムよりも迅速に小さい暗号化テキストを作成できますが、パブリックキーアルゴリズムはロールを本質的に分離し、キー管理を簡単にします。それぞれの強みを組み合わせることをお勧めします。

次の図に、エンベロープ暗号化の概要を示します。このシナリオでは、データキーはマスターキーである単一の KEK で暗号化されます。AWS KMS で、CMK はマスターキーを表します。

 エンベロープ暗号化

暗号化コンテキスト

すべての AWS KMS 暗号化オペレーションでは、データに関する追加のコンテキスト情報を含めることができるキーと値のペアのオプションのセットを使用できます。このキーと値のペアは、暗号化コンテキストと呼ばれます。 暗号化コンテキストが暗号化オペレーションで使用されている場合、成功するには対応する復号オペレーションが、復号に一致している必要があります。暗号化コンテキストはシークレットではありません。暗号化コンテキストはログに記録され、これを監査および AWS KMS API オペレーションへのアクセスを制御するときに使用できます。詳細については、「暗号化コンテキスト」を参照してください。

キーポリシー

CMK を作成するときは、その CMK を管理または使用できるユーザーを選択します。これらのアクセス権限は、キーポリシーと呼ばれるドキュメントに含まれます。キーポリシーを使って、カスタマー管理の CMK のアクセス権限をいつでも追加、削除、または変更できますが、AWS 管理の CMK のキーポリシーを編集することはできません。詳細については、「AWS KMS に対する認証とアクセスコントロール」を参照してください。

許可

許可は、キーポリシーに代わってアクセス権限を提供する別のメカニズムです。許可を使用すると、AWS プリンシパルでカスタマー管理型の CMK を使用できる、長期のアクセスを付与することができます。詳細については、「許可の使用」を参照してください。

許可トークン

許可を作成する場合、許可で指定されたアクセス権限は、結果整合性により、即時に反映されない場合があります。潜在的な遅延を軽減する必要がある場合は、CreateGrant API リクエストへのレスポンスで受け取る許可トークンを使用します。いくつかの AWS KMS API リクエストとともに許可トークンを渡し、許可のアクセス権限を即時有効にすることができます。次の AWS KMS API オペレーションでは許可トークンを使用できます。

許可トークンはシークレットではありません。許可トークンには、その対象としているユーザーに関する情報が含まれるため、これを使用してより迅速に許可のアクセス権限を有効にできるユーザーに関する情報が含まれます。

CMK の使用の監査

AWS CloudTrail を使用してキーの使用を監査できます。CloudTrail は、AWS API 呼び出しとアカウントの関連イベントの履歴を含むログファイルを作成します。これらのログファイルには、AWS マネジメントコンソール、AWS SDK、コマンドラインツールで行われたすべての AWS KMS API リクエスト、および統合 AWS サービスを通じて行われたすべてのリクエストが含まれます。これらのログファイルを使って、CMK が使用された日時、リクエストされたオペレーション、リクエスタの ID、リクエスト元の IP アドレスなどについての情報を取得できます。詳細については、「AWS KMS API 呼び出しのログ作成」と『AWS CloudTrail User Guide』を参照してください。

キー管理のインフラストラクチャ

暗号化の一般的な手法では、AES (Advanced Encryption Standard) など一般に利用でき専門家によって検証されたアルゴリズムとシークレットキーを使用して暗号化し、復号する必要があります。暗号化での主な問題の 1 つは、キーを秘密にしておくのが非常に困難なことです。これは通常、キー管理インフラストラクチャ (KMI) のジョブです。AWS KMS はお客様に代わって KMI を運用します。AWS KMS は CMK と呼ばれるマスターキーを作成し、安全に保存します。AWS KMS の動作の詳細については、「AWS Key Management Service 暗号化の詳細」ホワイトペーパーを参照してください。