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

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

AWS Key Management Service の概念

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

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

カスタマーマスターキー は、AWS KMS のプライマリリソースです。

カスタマーマスターキーCMK) は マスターキー. の論理表現です。CMK には、キー ID、作成日、説明、キーステータスなどのメタデータが含まれます。CMK には、データの暗号化と復号に使用されるキーマテリアルも含まれています。

AWS KMS は、対称および非対称 CMKs をサポートします。対称 CMK は、暗号化と復号に使用される 256 ビットのキーを表します。非対称 CMK は、暗号化と復号または署名と検証に使用される RSA キーペア (両方ではない)、または署名と検証に使用される楕円曲線 (ECC) キーペアを表します。対称および非対称 CMKs の詳細については、「対称キーと非対称キーの使用.」を参照してください。

CMKs は AWS KMS で作成されます。対称 CMKs と非対称 CMKs のプライベートキーは、AWS KMS を暗号化されないままにしません。を管理するには、CMK または AWS マネジメントコンソール APIAWS KMS を使用できます。暗号化オペレーションCMKで を使用するには、 API を使用する必要があります。AWS KMSこの戦略はデータキーとは異なります。AWS KMS ではデータキーは保存、管理、追跡されません。 の外部で使用する必要があります。AWS KMS.

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

CMKs の作成および管理の詳細については、「開始方法.」を参照してください。CMKs の使用については、AWS Key Management Service API Reference. を参照してください。

AWS KMS では、カスタマー管理型 CMKs、CMKs マネージド型 AWS および CMKs 所有型 AWS の 3 種類の CMKs. がサポートされています。

のタイプCMK CMK メタデータを表示可能 の管理可能CMK 自分の AWS アカウントでのみ使用 自動回転
カスタマー管理 CMK はい はい はい 省略可能。365 日 (1 年) ごと。
AWS マネージド CMK はい いいえ はい 必須。1095 日 (3 年) ごと。
AWS が所有 CMK いいえ いいえ いいえ 可変

カスタマー管理の CMKs と AWS 管理の CMKs を区別するには、KeyManagerDescribeKey オペレーションのレスポンスで フィールドを使用します。カスタマー管理の CMKs の場合、KeyManager 値は Customer です。 マネージド AWS の場合、CMKs 値は KeyManager です。AWS

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

カスタマー管理の CMKs

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

カスタマー管理の CMKs は、 の [AWS マネジメントコンソールカスタマー管理のキーAWS KMS] ページに表示されます。カスタマー管理の CMK を明確に識別するには、DescribeKey オペレーションを使用します。カスタマー管理型 CMKs の場合、KeyManager レスポンスで受け取る DescribeKey フィールドの値は CUSTOMER. です。

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

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

AWS 管理の CMKs

AWS 管理型 CMKs は、お客様のアカウントにある CMKs で、AWS と統合されている AWS KMS のサービス.がお客様に代わって作成、管理、使用します。一部の AWS のサービスでは、AWS 管理型 CMK. のみがサポートされます。AWS 所有型 CMK を使用するか、または CMKs. の選択肢を提供する場合もあります。

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

AWS 管理の CMKs は、 の AWS の [ マネージドキーAWS マネジメントコンソール] ページに表示されます。AWS KMSほとんどの AWS 管理の CMKs はエイリアスで識別することもできます。その形式は aws/service-name で、aws/redshift のようになります。 管理の AWS を明確に識別するには、CMKDescribeKey オペレーションを使用します。マネージド AWS の場合、CMKs レスポンスの KeyManager フィールドの値は DescribeKey です。AWS

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

AWS 所有型 CMKs

AWS 所有型 CMKs は、CMKs のサービスが複数の AWS アカウントで使用するために所有および管理する AWS のコレクションです。AWS 所有型 CMKs は AWS アカウント内にはありませんが、AWS のサービスは AWS 所有型 CMKs を使用してアカウント内のリソースを保護できます。

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

AWS が所有する CMK のキーローテーション戦略は、CMK を作成および管理する AWS サービスによって決まります。CMKs 所有型 AWS を含む、AWS のサービスがサポートする CMKs のタイプについては、サービスのユーザーガイドまたは開発者ガイドの「保管時の暗号化」トピックを参照してください。

データキー

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

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

データキーの作成

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


          データキーを生成する

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

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

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

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


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

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

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

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


          データキーの復号化

データキーペア

データキーペアは、数学的に関連するパブリックキーとプライベートキーで構成される非対称データキーです。これらは、クライアント側の暗号化と復号、または の外部での署名と検証に使用されるように設計されています。AWS KMS.

などのツールが生成するデータキーペアとは異なり、OpenSSL は指定した AWS KMS の対称 CMK で各データキーペアのプライベートキーを保護します。AWS KMSただし、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 キーは です。暗号通貨によく使用されます.

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

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

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

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

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


          データキーペアの生成

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

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

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


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

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

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

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

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


           の外部にあるデータキーペアのプライベートキーを使用してデータを復号します。AWS KMS.

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

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

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

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

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


           外部のデータキーペアのプライベートキーを使用して暗号化署名を生成します。AWS KMS.

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

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

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

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


           の外部のデータキーペアのパブリックキーを使用して、暗号化署名を確認します。AWS KMS.

Aliases

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

エイリアスを使用すると、 で CMK を識別しやすくなります。AWS マネジメントコンソール. エイリアスを使用して、AWS KMS暗号化オペレーションを含む一部の オペレーションで CMK を識別できます。アプリケーションでは、単一のエイリアスを使用して、各 CMKs リージョンの異なる AWS を参照できます。

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

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

詳細はこちら:

カスタムキーストア

カスタムキーストアは、所有して管理する クラスターの FIPS 140-2 レベル 3 ハードウェアセキュリティモジュール (AWS KMSHSMHSMs リソースです。AWS CloudHSM

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

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

暗号化オペレーション

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

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

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

オペレーション 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] GenerateDataKeyPair および GenerateDataKeyPairWithoutPlaintext は、対称 CMK によって保護される非対称データキーペアを生成します。

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

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

キー識別子 (KeyId)

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

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

AWS KMS コンソールでは、CMKs をキー ARN、キー ID、またはエイリアス名で表示およびフィルタリングし、キー ID とエイリアス名でソートできます。コンソールでキー ID を検索する方法については、「」を参照してください。キー ID と ARN を検索する.

API では、AWS KMS を識別するために使用するパラメータには、CMK またはバリエーション (KeyIdTargetKeyId など) が付けられます。DestinationKeyId ただし、これらのパラメータの値はキー IDs に限定されません。 いくつかは、任意の有効なキー識別子を受け取ることができます。各パラメータの値については、「」のパラメータの説明を参照してください。AWS Key Management Service API Reference.

注記

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

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

キー ARN

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

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

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

以下はキー ARN の例です。

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

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

以下はキー ID の例です。

1234abcd-12ab-34cd-56ef-1234567890ab
エイリアス ARN

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

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

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

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

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

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

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

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

alias/<alias-name>

次に例を示します。

alias/ExampleAlias

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

alias/aws/s3

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

キーマテリアルのオリジンは、CMK 内のキーマテリアルのソースを識別する CMK. プロパティです。CMK を作成するときにキーマテリアルのオリジンを選択し、それを変更することはできません。のキーマテリアルのオリジンを確認するには、CMKDescribeKey オペレーションを使用するか、 コンソールで の詳細ページの [暗号化設定] タブの [オリジンCMK] の値を参照してください。AWS KMSヘルプについては、「キーの表示.」を参照してください。

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

KMS (デフォルト)

API の値: AWS_KMS

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

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

外部

API の値: EXTERNAL

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

インポートしたキーマテリアルでの CMK の作成方法については、「ステップ 1: キーマテリアルなしで CMK を作成する.」を参照してください。

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

API の値: AWS_CLOUDHSM

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

カスタムキーストアで CMK を作成する方法については、「カスタムキーストアでの CMKs の作成」を参照してください。

キー仕様

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

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

主要仕様のリストと主要仕様の選択に関するヘルプについては、「」を参照してください キー仕様の選択. のキー仕様を確認するには、CMKDescribeKey オペレーションを使用するか、 コンソールで の詳細ページの [暗号化設定CMK] タブを参照してください。AWS KMSヘルプについては、「キーの表示.」を参照してください。

注記

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

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

キーの使用方法

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

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

キーの使用方法の選択については、「」を参照してください キー使用法の選択. のキーの使用方法を確認するには、CMKDescribeKey オペレーションを使用するか、 コンソールで の詳細ページの [暗号化設定CMK] タブを選択します。AWS KMSヘルプについては、「キーの表示.」を参照してください。

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

エンベロープ暗号化

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

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


        エンベロープ暗号化

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


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

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

  • データキーの保護

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

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

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

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

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

暗号化コンテキスト

対称 AWS KMS を使用するすべての 暗号化オペレーションCMKsは、データに関する追加のコンテキスト情報を含めることができるオプションのキーと値のペアである暗号化コンテキストを受け入れます。– は、暗号化コンテキストをAWS KMS追加の認証済みデータ (AAD) として使用し、認証済み暗号化をサポートします。

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

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

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

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

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

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

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

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

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

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

暗号化コンテキストを使用して暗号化されたデータの整合性を保護する方法については、 セキュリティブログの投稿「AWS Key Management ServiceHow to Protect the Intent of Your Encrypted Data by Using EncryptionContext and (暗号化データの整合性を保護する方法)AWS」を参照してください。

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

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

kms:EncryptionContextEncryptionContext および kms:EncryptionContextKeysEncryptionContextKeysと値のペアが含まれる場合にのみ、アクセス権限を許可 (または拒否) します。

たとえば、以下のキーポリシーステートメントでは、RoleForExampleApp ロールに CMK オペレーションでの Decrypt の使用を許可します。また、kms:EncryptionContext: 条件キーを使用して、リクエストの暗号化コンテキストに AppName:ExampleApp 暗号化コンテキストペアが含まれる場合にのみ、このアクセス許可を付与します。

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

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

許可を作成するときに、許可のアクセス許可の条件を確立する許可の制約を含めることができます。 では、AWS KMS と EncryptionContextEquals という 2 つの許可の制約をサポートしています。どちらの制約も、暗号化オペレーションのリクエストにEncryptionContextSubset暗号化コンテキストに関係するものです。これらの許可の制約を使用する場合、許可のアクセス許可は、暗号化オペレーションのリクエストの暗号化コンテキストが許可の制約の要件を満たす場合にのみ有効です。

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

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

重要

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

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

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

キーポリシー

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

Grant

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

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

CMK の使用状況の監査

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

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

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