AWS Key Management Service の概念 - AWS Key Management Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Key Management Service の概念

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

カスタマーマスターキー (CMK)

Aカスタマーマスターキー(CMK) は、のプライマリリソースです。AWS KMS。CMK を使用して、データの暗号化、復号、再暗号化できます。また、外部で使用できるデータキーを生成することもできますAWS KMS。通常、対称 CMK を使用しますが、暗号化や署名には非対称 CMK を作成して使用できます。

対称 CMK と非対称 CMK のプライベートキーが、AWS KMS を暗号化されないままにすることはありません。CMK を管理するには、AWS Management ConsoleまたはAWS KMSAPI暗号化オペレーションで CMK を使用するには、AWS KMS API を使用する必要があります。この戦略はデータキーとは異なります。AWS KMS ではデータキーは保存、管理、追跡されません。AWS KMS の外部で使用する必要があります。

デフォルトでは、AWS KMS は CMK のキーマテリアルを作成します。このキーマテリアルを抽出、エクスポート、表示、管理することはできません。また、このキーマテリアルは削除できません。 CMK を削除する必要があります。ただし、次の操作を実行できます。独自のキーマテリアルをインポートするCMK にキーマテリアルを作成するか、または CMK のキーマテリアルをAWS CloudHSMクラスターに関連付けられたAWS KMSカスタムキーストア

AWS KMSもサポートしています。マルチリージョンCMKでデータを暗号化できます。 AWS リージョン で解読し、別の AWS リージョン 。

CMK を暗号化キーまたは署名キーにするキーマテリアルに加えて、CMK は、キー ID、作成日、説明、キーステータスなどのメタデータを含みます。

CMK の作成および管理については、「開始方法」を参照してください。CMK の使用については、『』を参照してください。AWS Key Management ServiceAPI リファレンス

AWS KMS は、カスタマー管理の CMK、AWS 管理の CMK、AWS 所有の CMK という 3 種類の CMKをサポートします。

CMK のタイプ CMK メタデータを表示できる CMK を管理できる 私のにのみ使用 AWS アカウント 自動回転
カスタマー管理 CMK はい はい はい オプション。365 日 (1 年) ごと。
AWS 管理 CMK はい いいえ はい 必須。1095 日 (3 年) ごと。
AWS 所有の CMK いいえ いいえ いいえ 可変

お客様が管理する CMK をAWS管理対象の CMK を使用する場合は、KeyManagerのフィールドには、DescribeKeyオペレーションの応答を返します。カスタマー管理の CMK の場合、KeyManager 値は Customer です。AWS 管理の CMK の場合、KeyManager 値は AWS です。

AWS KMS と統合された AWS サービスでは、CMK のサポートが異なります。一部の AWS サービスでは、デフォルトで AWS 所有の CMK または AWS が管理する CMK を使用してデータが暗号化されます。他の AWS サービスでは、選択したカスタマー管理の CMK でデータを暗号化できます。また、他のAWS は、AWS 所有 CMK の容易性、AWS 管理 CMK の可視性、カスタマー管理 CMK の管理を行えるよう CMK のすべてのタイプをサポートしています。AWS のサービスが提供する暗号化オプションの詳細については、ユーザーガイドの「保管時の暗号化」トピックまたはサービスの開発者ガイドを参照してください。

カスタマー管理の CMK

カスタマー管理の CMKあなたのCMKです AWS アカウント 作成、所有、管理している。これらの CMK は、 キーポリシー、IAM ポリシー、および許可の確立と管理、, 有効化と無効化暗号化素材のローテーション, 、タグの追加など、完全に制御できます。, 、CMK を参照するエイリアスの作成 、および CMK の削除のスケジュール設定を行います

カスタマー管理の CMK は、カスタマー管理キーのページAWS Management ConsoleforAWS KMS。カスタマー管理の CMK を明確に識別するには、Desc ribeKey オペレーションを使用します。カスタマー管理の CMK の場合、DescribeKey レスポンスで受け取る KeyManager フィールドの値は CUSTOMER です。

暗号化オペレーションでカスタマー管理 CMK を使用し、AWS CloudTrail ログでその使用を監査できます。さらに、多くの AWS KMS と統合されている AWS サービスを使用すると、カスタマー管理 CMK を指定して、保管および管理しているデータを保護できます。

カスタマー管理 CMK の使用には、月額料金と、無料利用枠を超えた使用量に対する料金がかかります。これらは、お客様のアカウントの AWS KMS クォータに対して影響があります。詳細については、「AWS Key Management Service 料金表」および Quotas を参照してください。

AWS 管理の CMK

AWS管理の CMKは、アカウント内の CMK であり、ユーザーの代理として作成、管理、使用するものです。AWSと統合されているAWS KMS。ある程度AWSのサービスでは、AWS管理 CMK。他の人はAWSCMK を所有しているか、選択した CMK を提供する場合もあります。

以下の操作を実行できます。を表示するAWS管理の CMKアカウントでは、キーポリシーを表示する, および使用の監査がAWS CloudTrailログ。ただし、これらの CMK の管理、ローテーション、キーポリシーの変更はできません。また、AWS が管理する CMK を暗号化オペレーションで直接使用することはできません。サービスはユーザーに代わってそれらを作成し、使用します。

AWS管理対象の CMK はAWSマネージドキーのページAWS Management ConsoleforAWS KMS。ほとんどの AWS 管理の CMK はエイリアスでも識別できます。その形式は aws/service-name で、aws/redshift のようになります。AWS 管理の CMK を明確に識別するには、DescribeKey オペレーションを使用します。AWS 管理の CMK の場合、DescribeKey レスポンスで受け取る KeyManager フィールドの値は AWS です。

AWS が管理する CMK の月額料金はかかりません。これらは、無料利用枠を超える量を使用した場合は有料になりますが、一部の AWS サービスでこれらのコストがカバーされます。詳細については、サービスのユーザーガイドまたは開発者ガイドの「保管時の暗号化」トピックを参照してください。AWS 管理の CMK は、アカウントの各リージョンの CMK 数のリソースクォータに対してカウントされません。ただし、これらの CMK を使用するのがお客様のアカウントのプリンシパルでない場合、それらの CMK はリクエストレートのクォータにカウントされます。詳細については、「AWS Key Management Service 料金表」および Quotas を参照してください。

AWS 所有 CMK

AWS所有 CMKは CMK のコレクションであり、AWSサービスは、複数ので使用するために所有および管理する AWS アカウント 。もののAWS所有の CMK はお客様の AWS アカウント 、AWSサービスは、そのAWS所有の CMK を使用して、アカウントのリソースを保護します。

作成または管理する必要はありません。AWS所有の CMK ただし、表示、使用、追跡、監査はできません。AWS 所有 CMK に関しては、月額料金や使用料金は請求されません。また、CMK は、アカウントの AWS KMS クォータには影響しません。

-キーローテーションの戦略AWS所有 CMK はAWSサービスは、CMK を作成および管理します。CMK の種類については、AWSサービスのサポート (AWS所有の CMK については、保管時の暗号化トピックのユーザーガイドまたは開発者ガイドを参照してください。

データキー

データキーは、大量のデータや他のデータ暗号化キーといったデータを暗号化するための暗号化キーです。

あなたは、対称を使用することができますAWS KMS カスタマーマスターキー(CMK) を使用して、データキーを生成、暗号化、復号します。ただし、AWS KMS はデータキーの保存、管理、追跡、またはデータキーの暗号化オペレーションを実行しません。AWS KMS の外部でデータキーを使用して管理する必要があります。

データキーの作成

データキーを作成するには、GenerateDataKeyオペレーション.AWS KMSは、指定した対称 CMK を使用してデータキーを生成します。このオペレーションから、データキーのプレーンテキストコピーと CMK で暗号化されたコピーが返されます。以下の図では、このオペレーションを示しています。


          データキーを生成する

AWS KMS は暗号化されたデータキーのみを返す GenerateDataKeyWithoutPlaintext オペレーションもサポートしています。データキーを使用する必要がある場合、AWS KMS にそのデータキーを復号化するように求めます。

データキーでデータを暗号化する

AWS KMS は、データキーを使用してデータを暗号化することはできません。しかし、あなたは外部でデータキーを使用することができますAWS KMSたとえば、OpenSSL や、のような暗号化ライブラリを使用するなど、AWS Encryption SDK

プレーンテキストのデータキーを使用してデータを暗号化したら、できる限り早急にメモリからそれを削除します。暗号化したデータと一緒に暗号化データキーを安全に保存して、データの復号化に利用することができます。


          の外部でユーザーデータを暗号化するAWS KMS

データキーでデータを復号化する

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

以下の図では、Decrypt オペレーションを使用して暗号化されたデータキーを復号する方法を示しています。


          データキーの復号化

データキーペア

データキーペアは、数学的に関連するパブリックキーとプライベートキーで構成される非対称データキーです。これらは、クライアント側の暗号化と復号化、またはAWS KMS。

OpenSSL などのツールが生成するデータキーペアとは異なり、AWS KMS は、指定した AWS KMS の対称 CMK の下で各データキーペアのプライベートキーを保護します。ただし、AWS KMS はデータキーペアの保存、管理、追跡、またはデータキーペアの暗号化オペレーションを実行しません。AWS KMS の外部でデータキーペアを使用して管理する必要があります。

AWS KMS は、次のタイプのデータキーペアをサポートしています。

  • RSA キーのペア: RSA_2048、RSA_3072、および RSA_4096

  • 楕円曲線キーペア、ECC_NIST_P256、ECC_NIST_P384、ECC_NIST_P521、および ECC_SECG_P256K1

選択するデータキーペアのタイプは、通常、ユースケースまたは規制要件によって異なります。ほとんどの証明書には RSA キーが必要です。楕円曲線キーは、デジタル署名によく使用されます。ECC_SECG_P256K1 キーは、一般的に暗号化通貨に使用されます。AWS KMSでは、署名に ECC キーペアを使用し、暗号化または署名に RSA キーペアを使用することを推奨していますが、両方は使用しないでください。ただし、AWS KMSの外部でデータキーペアの使用に関する制限を強制することはできません。AWS KMS。

データキーペアを作成する

データキーペアを作成するには、 GenerateDataKeyPair または GenerateDataKeyPairwithoutプレーンテキスト 操作を呼び出します。プライベートキーの暗号化に使用する対称 CMK を指定します。

GenerateDataKeyPair は、プレーンテキストパブリックキー、プレーンテキストプライベートキー、暗号化されたプライベートキーを返します。このオペレーションは、デジタル署名を生成する場合など、プレーンテキストプライベートキーをすぐに必要とする場合に使用します。

GenerateDataKeyPairWithoutPlaintext は、プレーンテキストのパブリックキーと暗号化されたプライベートキーを返しますが、プレーンテキストプライベートキーは返しません。このオペレーションは、パブリックキーで暗号化する場合など、プレーンテキストプライベートキーがすぐに必要ない場合に使用します。後で、データを復号化するために平文の秘密鍵が必要な場合は、Dec rypt 操作を呼び出すことができます。

以下の図では、GenerateDataKeyPair オペレーションを示しています。GenerateDataKeyWithoutPlaintext オペレーションは、プレーンテキストプライベートキーを省略します。


          データキーペアの生成

データキーペアでデータを暗号化する

データキーペアを使用して暗号化する場合、ペアのパブリックキーを使用してデータを暗号化し、同じペアのプライベートキーを使用してデータを復号します。通常、データキーペアは、プライベートキーを保持している当事者のみが復号できるデータを多くの当事者が暗号化する必要がある場合に使用されます。

次の図に示すように、パブリックキーを持つ当事者は、そのキーを使用してデータを暗号化します。


          の外部でデータキーペアのパブリックキーを使用してユーザーデータを暗号化するAWS KMS

データキーペアでデータを復号する

データを復号するには、データキーペアでプライベートキーを使用します。オペレーションを成功させるには、パブリックキーとプライベートキーが同じデータキーペアのものである必要があり、また、同じ暗号化アルゴリズムを使用する必要があります。

暗号化された秘密鍵を復号化するには、 復号化 操作に渡します。プレーンテキストプライベートキーを使用してデータを復号します。その後、できるだけ早くプレーンテキストのプライベートキーをメモリから削除します。

次の図は、データキーペアのプライベートキーを使用して暗号テキストを復号する方法を示しています。


          外部のデータキーkey pair プライベートキーを使用してデータを復号します。AWS KMS。

データキーペアでメッセージに署名する

メッセージの暗号化署名を生成するには、データキーペアのプライベートキーを使用します。パブリックキーを持つすべてのユーザーは、メッセージが自分のプライベートキーで署名されたこと、および署名されてから変更されていないことを確認するために使用できます。

プライベートキーが暗号化されている場合は、暗号化されたプライベートキーを Decrypt オペレーションに渡します。AWS KMS は CMK を使用してデータキーを復号し、プレーンテキストプライベートキーを返します。署名を生成するには、プレーンテキストプライベートキーを使用します。その後、できるだけ早くプレーンテキストのプライベートキーをメモリから削除します。

メッセージに署名するには、OpenSSL で dgst コマンドなどの暗号化ハッシュ関数を使用してメッセージダイジェストを作成します。次に、プレーンテキストプライベートキーを署名アルゴリズムに渡します。結果は、メッセージの内容を表す署名です。(最初にダイジェストを作成しなくても、短いメッセージに署名できる場合があります。 メッセージの最大サイズは、使用する署名ツールによって異なります)。

次の図は、データキーペアのプライベートキーを使用してメッセージに署名する方法を示しています。


          外部にあるデータキーkey pair プライベートキーを使用して暗号化署名を生成します。AWS KMS。

データキーペアを使用した署名の検証

データキーペアにパブリックキーを持っているユーザーは、誰でもそれを使用して、プライベートキーで生成した署名を検証できます。検証では、承認されたユーザーが指定したプライベートキーと署名アルゴリズムを使用してメッセージに署名し、メッセージが署名後に変更されていないことを確認します。

署名を検証する当事者は、同じタイプのダイジェストを生成し、同じアルゴリズムを使用して、メッセージの署名に使用されるプライベートキーに対応するパブリックキーを使用する必要があります。

次の図は、データキーペアのパブリックキーを使用してメッセージ署名を検証する方法を示しています。


          外部のデータキーkey pair パブリックキーを使用して暗号化署名を検証します。AWS KMS。

Aliases

エイリアスは CMK のフレンドリ名です。たとえば、CMK を 1234abcd-12ab-34cd-56ef-1234567890ab ではなく、 テストキー として参照できます。

エイリアスを使用すると、AWS Management Console で CMK を識別しやすくなります。エイリアスを使用して、一部の CMK を識別できます。AWS KMS操作、暗号化オペレーション。アプリケーションでは、1 つのエイリアスを使用して、各内の異なる CMK を参照できます。 AWS リージョン 。

また、ポリシーを編集したり、許可を管理したりしなくても、エイリアスに基づいて CMK へのアクセスを許可および拒否できます。この機能はAWS KMS属性ベースのアクセスコントロール (ABAC) のサポート。詳細については、「の ABAC の使用AWS KMS」を参照してください。

AWS KMS では、エイリアスは CMK のプロパティではなく、独立したリソースです。そのため、関連付けられた CMK に影響を与えずに、エイリアスを追加、変更、削除できます。

詳細はこちら:

カスタムキーストア

Aカスタムキーストアである。AWS KMSリソースの FIPS 140-2 レベル 3 ハードウェアセキュリティモジュール (HSM) に関連付けられているAWS CloudHSM所有および管理しているクラスタの。

を作成するときAWS KMSカスタムキーストアのカスタマーマスターキー (CMK)、AWS KMSは、256 ビットの、永続的で、エクスポート不可能な AES (Advanced Encryption Standard) 対称キーが生成されます。AWS CloudHSMクラスターです。このキーマテリアルは、HSM を非暗号化のままにしません。カスタムキーストアで CMK を使用する場合、暗号化オペレーションはクラスター内の HSM で実行されます。

詳細については、「カスタムキーストアの使用」を参照してください。

暗号化オペレーション

AWS KMS の場合、暗号化オペレーション は、CMK を使用してデータを保護する API オペレーションです。CMK は AWS KMS 内に留まるため、暗号化オペレーションで CMK を使用するには AWS KMS を呼び出す必要があります。

CMK で暗号化オペレーションを実行するには、AWS SDK、AWS Command Line Interface (AWS CLI)、または AWS Tools for PowerShell を使用します。AWS KMS コンソールで暗号化オペレーションを実行することはできません。いくつかのプログラミング言語で暗号化操作を呼び出す例については、を参照してください AWS KMS API のプログラミング

以下の表では、AWS KMS 暗号化オペレーションを示しています。また、これらのオペレーションで使用される CMK のキータイプとキー使用法の要件も示します。

オペレーション CMK のキータイプ CMK のキー使用法
復号化 すべて ENCRYPT_DECRYPT
暗号化 すべて ENCRYPT_DECRYPT
GenerateDataKey 対称 ENCRYPT_DECRYPT
GenerateDataKeyPair 非対称 [1] ENCRYPT_DECRYPT
GenerateDataKeyPairWithoutPlaintext 非対称 [1] ENCRYPT_DECRYPT
GenerateDataKeyWithoutPlaintext 対称 ENCRYPT_DECRYPT
GenerateRandom なし。このオペレーションでは CMK を使用しません。 該当なし
ReEncrypt すべて ENCRYPT_DECRYPT
Sign 非対称 SIGN_VERIFY
検証 非対称 SIGN_VERIFY

[1] GenerateDataKeyPairWithoutPlaintext をクリックして GenerateDataKeyPair 、シンメトリック CMK によって保護される非対称データキーペアを生成します。

暗号化オペレーションのアクセス許可については、「AWS KMS アクセス権限」を参照してください。

すべてのユーザーに対する AWS KMS の応答性とパフォーマンスを向上させるために、AWS KMS は、1 秒あたりに呼び出すことができる暗号化オペレーションの数にクォータを設定しています。詳細については、「暗号化オペレーションの共有クォータ」を参照してください。

キー識別子 (KeyId)

キー識別子は、AWS KMS カスタマーマスターキー (CMK) の名前として機能します。これらは、コンソールで CMK を認識するのに役立ちます。それらを使用して、使用する CMK を指定します。AWS KMSAPI オペレーション、IAM ポリシー、および許可します。

AWS KMS は、いくつかのキー識別子を定義します。CMK を作成すると、AWS KMS は CMK のプロパティであるキー ARN とキー ID を生成します。エイリアスを作成すると、AWS KMS は定義したエイリアス名に基づいてエイリアス ARN を生成します。キーおよびエイリアスの識別子は、AWS Management Console および AWS KMS API で表示できます。

左AWS KMSコンソールでは、次の操作を実行できます。の表示とフィルタCMK をキー ARN、キー ID、またはエイリアス名でソートし、キー ID とエイリアス名でソートします。詳細については、「キー ID と ARN を検索する」および「エイリアス名とエイリアス ARN を見つける」を参照してください。

AWS KMS API では、CMK の識別に使用するパラメータの名前は、KeyId またはバリエーション (TargetKeyIdDestinationKeyId など) になります。ただし、これらのパラメータの値はキー ID に限定されません。いくつかは、任意の有効なキー識別子を受け取ることができます。各パラメータの値の詳細については、「」のパラメータの説明を参照してください。AWS Key Management ServiceAPI リファレンス

注記

を使用する場合AWS KMSAPIを使用する場合は、使用するキー識別子に注意してください。API ごとに異なるキー識別子が必要です。通常、タスクに対して実用的である最も完全なキー識別子を使用します。

AWS KMS では、次のキー識別子がサポートされています。

キー ARN

キー ARN は、CMK の Amazon リソースネーム (ARN) です。これは CMK の一意の完全修飾識別子です。キー ARN には AWS アカウント 、リージョン、およびキー ID。CMK のキー ARN を見つける方法については、「キー ID と ARN を検索する」を参照してください。

キー ARN の形式は次のとおりです。

arn:<partition>:kms:<region>:<account-id>:key/<key-id>

以下は単一リージョン CMK のキー ARN の例です。

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

-キー IDのキー ARN の要素マルチリージョンキーから始まるmrk-prefix. 以下はマルチリージョン CMK のキー ARN の例です。

arn:aws:kms:us-west-2:111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab
キー ID

キー ID は、アカウントとリージョン内の CMK を一意に識別します。CMK のキー ID を見つける方法については、「キー ID と ARN を検索する」を参照してください。

以下は単一リージョン CMK のキー ID の例です。

1234abcd-12ab-34cd-56ef-1234567890ab

のキー IDマルチリージョンキーから始まるmrk-prefix. 以下はマルチリージョン CMK のキー ID の例です。

mrk-1234abcd12ab34cd56ef1234567890ab
エイリアス ARN

エイリアス ARN は、AWS KMS エイリアスの Amazon リソースネーム (ARN) です。エイリアスと、それが表す CMK の一意の完全修飾識別子です。エイリアス ARN には AWS アカウント 、リージョン、およびエイリアス名です。

エイリアス ARN は、任意の時点で特定の CMK を識別します。ただし、エイリアスに関連付けられている CMK は変更できるため、エイリアス ARN はさまざまな CMK を異なるタイミングで識別できます。CMK のエイリアス ARN を検索する方法については、「」を参照してください エイリアス名とエイリアス ARN を見つける

エイリアス ARN の形式は次のとおりです。

arn:<partition>:kms:<region>:<account-id>:alias/<alias-name>

以下は、架空の ExampleAlias のエイリアス ARN です。

arn:aws:kms:us-west-2:111122223333:alias/ExampleAlias
エイリアス名

エイリアス名は、最大 256 文字の文字列です。アカウントとリージョン内で関連付けられた CMK を一意に識別します。AWS KMS API では、エイリアス名は常に alias/ で始まります。CMK のエイリアス名の検索については、「」を参照してください エイリアス名とエイリアス ARN を見つける

エイリアス名の形式は次のとおりです。

alias/<alias-name>

以下はその例です。

alias/ExampleAlias

エイリアス名の aws/ プレフィックスは、AWS 管理 CMK 用に予約されています。このプレフィックスでエイリアスを作成することはできません。たとえば、エイリアス名、AWSAmazon Simple Storage Service (Amazon S3) の管理型 CMK は次のとおりです。

alias/aws/s3

キーマテリアル

キーマテリアルは、暗号化アルゴリズムで使用されるビットの秘密文字列です。キー素材を使用する暗号化操作を保護するには、キー素材を秘密にしておく必要があります。

EclipseAWS KMSに設定されている場合、各顧客マスターキーには、メタデータとともにキーマテリアルが含まれます。キー IDおよびキーポリシー。-キーマテリアルのオリジンはさまざまです。あなたは、そのキー材料を使用することができますAWS KMSで生成される、キーのマテリアルはAWS CloudHSMのクラスターカスタムキーストア, または独自のキーマテリアルをインポートする。あなたが使用する場合AWS KMSキーマテリアルを使用するには、自動回転キーマテリアルのうち。

デフォルトでは、各 CMK には一意のキーマテリアルがあります。ただし、のセットを作成することができます。マルチリージョンキー同じキーマテリアルを持ちます。

キーマテリアルのオリジン

キーマテリアルのオリジンは、CMK 内のキーマテリアルのソースを識別する CMK プロパティです。CMK を作成するときにキーマテリアルのオリジンを選択することはできず、変更することもできません。CMK のキーマテリアル原点を検索するには、DescribeKey操作を参照するか、Origin (オリジン)の値暗号化構成CMK の詳細ページの「」タブにある CMK のAWS KMSconsole. ヘルプについては、「キーの表示」を参照してください。

CMK には、次のいずれかのキーマテリアルオリジン値を指定できます。

KMS (デフォルト)

API の値: AWS_KMS

AWS KMS は、独自のキーストアで CMK のキーマテリアルを作成および管理します。これは、ほとんどの CMK のデフォルト値であり、推奨値です。

AWS KMS からキーマテリアルを持つキーを作成する方法については、「キーの作成」を参照してください。

外部

API の値: EXTERNAL

CMK には、インポートされたキーマテリアルがあります。External キーマテリアルオリジンを持つ CMK を作成する場合、CMK にはキーマテリアルがありません。後で、キーマテリアルを CMK に読み込むことができます。インポートしたキーマテリアルを使用する場合は、そのキーマテリアルを AWS KMS の外部で保護して管理する必要があります。これには、キーマテリアルの有効期限が切れた場合の置き換えも含まれます。詳細については、「インポートしたキーマテリアルについて」を参照してください。

読み込まれたキーマテリアルの CMK の作成については、「」を参照してください ステップ 1: キーマテリアルなしで CMK を作成する

カスタムキーストア (CloudHSM)

API の値: AWS_CLOUDHSM

AWS KMS は、CMK のキーマテリアルをカスタムキーストアで作成しました。

カスタムキーストアで CMK を作成する方法については、 カスタムキーストアでの CMK の作成

キー仕様

キー仕様は、CMK の暗号化設定を表す CMK プロパティです。キー仕様によって、CMK が対称か非対称か、CMK のキーマテリアルのタイプ、CMK で使用できる暗号化アルゴリズムまたは署名アルゴリズムが決まります。

通常、CMK に対して選択するキー仕様は、ユースケースと規制要件に基づいています。CMK を作成するときにキー仕様を選択することはできず、変更することもできません。間違ったキー仕様を選択した場合は、CMK を削除し、新しいキー仕様を作成します。

主要仕様のリストと主要仕様の選択に関するヘルプについては、「」を参照してください キー仕様の選択。CMK のキー仕様を見つけるには、DescribeKey操作を参照するか、暗号化設定CMK の詳細ページの「」タブにあるAWS KMSconsole. ヘルプについては、「キーの表示」を参照してください。

注記

EclipseAWS KMSAPIオペレーションでは、CMK のキー仕様は、CustomerMasterKeySpec。これにより、データキー (KeySpec) およびデータキーペア (KeyPairSpec) のキー仕様や、インポート用のキーマテリアル (WrappingKeySpec) のラップ時に使用されるキー仕様とは区別されます。各キー仕様のタイプには、異なる値があります。

CMK の作成時にプリンシパルが使用できるキー仕様を制限するには、km:CustomerMasterKeySpec 条件キーを使用します。kms:CustomerMasterKeySpec 条件キーを使用して、プリンシパルがキー仕様に基づいて CMK の AWS KMS オペレーションを呼び出せるようにすることもできます。たとえば、RSA_4096 キー仕様を使用して CMK の削除をスケジュールするアクセス許可を拒否できます。

キーの使用方法

[Key usage (キーの使用方法)] は、CMK を暗号化と復号に使用するか、署名と検証に使用するかを決定する CMK プロパティです。両方を選択することはできません。CMK を複数のタイプのオペレーションに使用すると、両方のオペレーションの製品が攻撃に対して脆弱になります。

対称 CMK のキーの使用方法は、常に暗号化と復号です。楕円曲線 (ECC) CMK のキーの使用方法は、常に署名と検証です。RSA CMK のキーの使用方法を選択するだけで済みます。CMK を作成するときにキーの使用方法を選することはできず、変更することもできません。間違ったキーの使用方法を選択した場合は、CMK を削除し、新しいキーの使用方法を作成します。

キーの使用方法の選択については、「」を参照してください キー使用法の選択。CMK のキー使用法を見つけるには、DescribeKey操作を選択するか、暗号化設定CMK の詳細ページの「」タブにあるAWS KMSconsole. ヘルプについては、「キーの表示」を参照してください。

プリンシパルが署名と検証のみ、または暗号化と復号のみの CMK を作成できるようにするには、km:CustomerMasterKeyUsage 条件キーを使用します。kms:CustomerMasterKeyUsage 条件キーを使用して、プリンシパルがキーの使用方法に基づいて CMK の API オペレーションを呼び出せるようにすることもできます。たとえば、CMK のキーの使用方法が SIGN_VERIFY である場合のみ、CMK を無効にするアクセス許可を許可できます。

エンベロープ暗号化

データを暗号化するとデータは保護されますが、暗号化キーを保護する必要があります。1 つの戦略としては、それを暗号化します。エンベロープ暗号化は、データキーでプレーンテキストデータを暗号化してから、そのデータキーを別のキーで暗号化する手法です。

データ暗号化キーを別の暗号化キーで暗号化し、その暗号化キーを別の暗号化キーで暗号化することもできます。しかし、最終的には、キーとデータを復号化するために、1 つのキーをプレーンテキストで保持する必要があります。この最上位プレーンテキストキー暗号化キーは、マスターキーと呼ばれます。


        エンベロープ暗号化

AWS KMS は、マスターキーを安全に保管して管理することで、マスターキーを保護するために役立ちます。AWS KMS に保管されたマスターキーはカスタマーマスターキー (CMK) と呼ばれ、AWS KMS FIPS で検証されたハードウェアセキュリティモジュールを非暗号化されたまま移動することはありません。AWS KMS CMK を使用するには、AWS KMS を呼び出す必要があります。


        複数キー暗号化キーによるエンベロープ暗号化

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

  • データキーの保護

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

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

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

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

    一般に、対称キーアルゴリズムは、パブリックキーアルゴリズムよりも高速で、より小さい暗号化テキストを生成します。しかし、パブリックキーのアルゴリズムはロールを本質的に分離し、キー管理を簡単にします。エンベロープ暗号化により、それぞれの戦略を組み合わせることができます。

暗号化コンテキスト

すべてAWS KMS 暗号化オペレーションが対称CMKを持つ場合、暗号化コンテキストこれは、データに関する追加のコンテキスト情報を含めることができるキーと値のペアのオプションのセットである、キーと値のペアのオプションのセットです。AWS KMSは、暗号化コンテキストを追加認証データ(AAD) をサポートする認証されている暗号化

非対称 CMK を使用して、暗号化オペレーションの暗号化コンテキストを指定することはできません。標準の非対称暗号化アルゴリズムAWS KMSの使用は、暗号化コンテキストをサポートしていません。

暗号化リクエストに暗号化コンテキストが含まれている場合、暗号化テキストに暗号化されてバインドされます。このため、データを復号する (または復号して再暗号化する) には、同じ暗号化コンテキストが必要です。復号リクエストで指定された暗号化コンテキストが大文字と小文字を区別して完全に一致しない場合、復号リクエストは失敗します。暗号化コンテキストでのキーと値のペアの順序のみを変更できます。

この暗号化コンテキストはシークレットではありません。これは AWS CloudTrail ログにプレーンテキストで表示されるため、それを使用して暗号化オペレーションを識別して分類できます。

暗号化コンテキストは任意のキーと値で構成できます。ただし、暗号化コンテキストはシークレットではなく暗号化されないため、機密情報を含めないでください。暗号化または復号化されるデータの内容を説明した暗号化テキストの使用をお勧めします。たとえば、ファイルを暗号化するときは、ファイルパスの一部を暗号化コンテキストとして使用することもあります。

暗号化コンテキストペアのキーと値はシンプルなリテラル文字列であることが必要です。整数やオブジェクトなど完全に解決されない型のキーと値は使用できません。整数や浮動小数点数など別の型を使用する場合、AWS KMS では文字列として解釈されます。

"encryptionContext": { "department": "10103.0" }

暗号化コンテキストのキーと値には、アンダースコア (_)、ダッシュ (-)、スラッシュ (/、\)、コロン (:) などの特殊文字を含めることができます。

たとえば、ボリュームとスナップショットを暗号化する場合、Amazon Elastic Block Store(Amazon EBS)CreateSnapshotオペレーションでは、Amazon EBS はボリューム ID を暗号化コンテキスト値として使用します。

"encryptionContext": { "aws:ebs:id": "vol-abcde12345abc1234" }

また、暗号化コンテキストを使用して、アカウントのカスタマーマスターキー (CMK) を絞り込んだり、アクセスを制限したりできます。暗号化コンテキストは許可の制約として、およびポリシーステートメントの条件として使用できます。

暗号化コンテキストを使用して暗号化されたデータの整合性を保護する方法については、 セキュリティブログの「AWS Key Management Service と暗号化コンテキストを使用して暗号化されたデータの整合性を保護する方法AWS」を参照してください。

暗号化コンテキストの詳細。

暗号化コンテキストは主に整合性と信頼性を検証するために使用されます。ただし、暗号化コンテキストを使用して、キーポリシーと IAM ポリシー内の対称カスタマーマスターキー (CMK) へのアクセスを制御することもできます。

-kms:EncryptionContext:コンテキストキーおよびkms:EncryptionContextKeys条件キーでは、要求に特定の暗号化コンテキストキーまたはキーと値のペアが含まれている場合にのみ、アクセス許可を許可(または拒否)します。

たとえば、以下のキーポリシーステートメントは、RoleForExampleAppで CMK を使用するロールはDecryptオペレーション. これはkms:EncryptionContext:context-key条件キーを使用して、リクエストの暗号化コンテキストにAppName:ExampleApp暗号化コンテキストペア。

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

これらの暗号化コンテキスト条件キーの詳細については、「」を参照してください AWS KMS でのポリシー条件の使用

許可を作成するには、制約の付与を使用して、許可のアクセス許可の条件を確立します。AWS KMSは、2 つの許可制約EncryptionContextEqualsおよびEncryptionContextSubsetが関与する。どちらも暗号化コンテキスト暗号化操作の要求で。これらの許可制約を使用すると、許可の許可は、暗号化オペレーションの要求内の暗号化コンテキストが、許可の制約の要件を満たしている場合にのみ有効です。

たとえば、追加できるEncryptionContextEquals許可する許可の制約をGenerateDataKeyオペレーション. この制約により、リクエストの暗号化コンテキストが、許可の制約の暗号化コンテキストに大文字と小文字を区別して一致する場合にのみ、許可の操作を許可します。

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --operations GenerateDataKey \ --constraints EncryptionContextEquals={Purpose=Test}

被付与者プリンシパルからの次のようなリクエストはEncryptionContextEquals制約です。

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --encryption-context Purpose=Test

許可の制約の詳細については、「」を参照してください。許可制約の使用。許可の詳細については、「」を参照してください。許可の使用

AWS KMS は AWS CloudTrail を使用して暗号化コンテキストを記録するため、アクセスされた CMK やデータを判断することができます。ログエントリには、ログエントリ内の暗号化コンテキストによって参照されている特定のデータの暗号化または復号にどの CMK が使用されたかが正確に示されます。

重要

暗号化コンテキストは記録されるため、機密情報が含まれていてはなりません。

Decrypt または ReEncrypt オペレーションを呼び出すときに暗号化コンテキストを簡単に使用できるように、暗号化コンテキストを暗号化されたデータとともに格納できます。暗号化や復号で必要になったときに完全な暗号化コンテキストを作成できる十分な暗号化コンテキストのみを保存することをお勧めします。

たとえば、暗号化コンテキストがファイルへの完全修飾パスである場合、そのパスの一部のみを、暗号化されたファイルの内容とともに保存します。次に、完全な暗号化コンテキストが必要になったら、保存されたフラグメントからコンテキストを再構築します。誰かがファイルを改ざんした場合 (名前の変更、別の場所への移動など)、暗号化コンテキスト値が変更され、復号リクエストは失敗します。

キーポリシー

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

Grant

Agrantはポリシーツールであり、AWS使用するプリンシパルAWS KMSのカスタマーマスターキー (CMK)暗号化オペレーション。また、CMK (DescribeKey)、許可を作成、管理します。CMK へのアクセスを許可するとき、許可はキーポリシーおよびIAM ポリシー。許可は、キーポリシーまたは IAM ポリシーを変更することなく、作成してアクセス権限を使用し、削除できるため、一時的なアクセス権限によく使用されます。許可は限定的であり、作成と取り消しが容易であるため、一時的なアクセス許可やよりきめ細かなアクセス許可を付与するためによく使用されます。

許可の用語を含む許可の詳細については、許可の使用

CMK の使用の監査

次を使用できます。AWS CloudTrailキーの使用状況を監査します。CloudTrail は、の履歴を含むログファイルを作成します。AWSアカウントの API 呼び出しおよび関連イベント。これらのログファイルには、AWS マネジメントコンソール、AWS SDK、コマンドラインツールで行ったすべての AWS KMS API リクエストが含まれます。また、AWS サービスによってお客様に代わって行われた AWS KMS へのリクエストも含まれます。これらのログファイルを使用して、CMK が使用された時間、リクエストされたオペレーション、リクエスタの ID、ソースの IP アドレスなどの重要な情報を見つけることができます。詳細については、「」を参照してください。AWS CloudTrail でのログ記録AWS CloudTrailユーザーガイド

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

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