翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS KMS キーリング
クライアント側の暗号化ライブラリの名前が AWS Database Encryption SDK に変更されました。このデベロッパーガイドでは、引き続き DynamoDB Encryption Client に関する情報を提供します。 |
AWS KMS キーリングは、対称暗号化または非対称 RSA AWS KMS keysを使用してデータキーを生成、暗号化、復号します。 AWS Key Management Service (AWS KMS) は KMS キーを保護し、FIPS 境界内で暗号化オペレーションを実行します。可能な限り、 AWS KMS キーリング、または同様のセキュリティプロパティを持つキーリングを使用することをお勧めします。
キーリングで対称マルチリージョン KMS AWS KMS キーを使用することもできます。マルチリージョンを使用した詳細と例については AWS KMS keys、「」を参照してくださいマルチリージョンの使用 AWS KMS keys。マルチリージョンキーの詳細については、「AWS Key Management Service デベロッパーガイド」の「マルチリージョンキーを使用する」を参照してください。
AWS KMS キーリングには、次の 2 種類のラッピングキーを含めることができます。
-
ジェネレーターキー: プレーンテキストのデータキーを生成し、暗号化します。データを暗号化するキーリングには、ジェネレーターキーが 1 つ必要です。
-
追加キー: ジェネレーターキーが生成したプレーンテキストのデータキーを暗号化します。 AWS KMS キーリングには、0 個以上の追加キーを含めることができます。
レコードを暗号化するにはジェネレーターキーが必要です。 AWS KMS キーリングに AWS KMS キーが 1 つしかない場合、そのキーはデータキーの生成と暗号化に使用されます。
すべてのキーリングと同様に、 AWS KMS キーリングは個別に使用することも、同じタイプまたは異なるタイプの他のキーリングを持つマルチキーリングで使用することもできます。
トピック
AWS KMS キーリングに必要なアクセス許可
AWS Database Encryption SDK は を必要とせず AWS アカウント 、 に依存しません AWS のサービス。ただし、 AWS KMS キーリングを使用するには、 AWS アカウント と、キーリング AWS KMS keys の に対する以下の最小限のアクセス許可が必要です。
-
AWS KMS キーリングで暗号化するには、ジェネレーターキーに対する kms:GenerateDataKey アクセス許可が必要です。 AWS KMS キーリングのすべての追加キーに対する kms:Encrypt アクセス許可が必要です。
-
AWS KMS キーリングで復号するには、キー AWS KMS リング内の少なくとも 1 つのキーに対する kms:Decrypt アクセス許可が必要です。
-
キーリングで構成されるマルチキーリングで暗号化するには、ジェネレータ AWS KMS ーキーリングのジェネレーターキーに対する kms:GenerateDataKey アクセス許可が必要です。他のすべてのキーリングの他のすべての AWS KMS キーに対する kms:Encrypt アクセス許可が必要です。
-
非対称 RSA AWS KMS キーリングで暗号化するには、キーリングの作成時に暗号化に使用するパブリックキーマテリアルを指定する必要があるため、kms:GenerateDataKey または kms:Encrypt は必要ありません。このキーリングで暗号化する場合、 AWS KMS 呼び出しは行われません。非対称 RSA AWS KMS キーリングで復号するには、kms:Decrypt アクセス許可が必要です。
のアクセス許可の詳細については AWS KMS keys、「 AWS Key Management Service デベロッパーガイド」の「認証とアクセスコントロール」を参照してください。
AWS KMS キーリング AWS KMS keys での の識別
AWS KMS キーリングには、1 つ以上の を含めることができます AWS KMS keys。 AWS KMS キーリングで を指定する AWS KMS key には、サポートされている AWS KMS キー識別子を使用します。キーリング AWS KMS key 内の を識別するために使用できるキー識別子は、 オペレーションと言語の実装によって異なります。 AWS KMS keyのキー識別子の詳細については、AWS Key Management Service デベロッパーガイドの「キー識別子」を参照してください。
ベストプラクティスとして、自らのタスクにとって実用的である最も具体的なキー識別子を使用します。
-
AWS KMS キーリングで暗号化するには、キー ID、キー ARN、エイリアス名、またはエイリアス ARN を使用してデータを暗号化できます。
注記
暗号化キーリングで KMS キーのエイリアス名またはエイリアス ARN を指定すると、暗号化オペレーションによって、現在エイリアスに関連付けられているキー ARN が、暗号化されたデータキーのメタデータに保存されます。エイリアスは保存されません。エイリアスの変更は、暗号化されたデータキーの復号に使用される KMS キーには影響しません。
-
AWS KMS キーリングで復号するには、キー ARN を使用して を識別する必要があります AWS KMS keys。詳細については、「ラッピングキーの選択」を参照してください。
-
暗号化および復号に使用するキーリングでは、キー ARN を使用して AWS KMS keysを指定する必要があります。
復号時に、 AWS Database Encryption SDK は、暗号化されたデータ AWS KMS キーの 1 つを復号 AWS KMS key できる のキーリングを検索します。具体的には、 AWS Database Encryption SDK は、マテリアルの説明内の暗号化されたデータキーごとに次のパターンを使用します。
-
AWS Database Encryption SDK は、マテリアルの説明のメタデータからデータキーを暗号化 AWS KMS key した のキー ARN を取得します。
-
AWS Database Encryption SDK は、キー ARN AWS KMS key が一致する の復号キーリングを検索します。
-
キーリングで一致するキー ARN AWS KMS key を持つ が見つかった場合、 AWS Database Encryption SDK は KMS キーを使用して暗号化されたデータキーを復号するように AWS KMS に要求します。
-
それ以外の場合は、暗号化された次のデータキーに進みます (ある場合)。
AWS KMS キーリングの作成
各 AWS KMS キーリングは、同じ AWS KMS key または異なる AWS アカウント および AWS KMS keys の 1 つまたは複数の で設定できます AWS リージョン。 AWS KMS key は、対称暗号化キー (SYMMETRIC_DEFAULT
) または非対称 RSA KMS キーである必要があります。対称暗号化マルチリージョン KMS キーを使用することもできます。マルチ AWS KMS キーリングでは、1 つ以上のキーリングを使用できます。 マルチキーリング
データを暗号化および復号する AWS KMS キーリングを作成することも、暗号化または復号専用の AWS KMS キーリングを作成することもできます。 AWS KMS キーリングを作成してデータを暗号化する場合は、ジェネレーターキーを指定する必要があります。ジェネレーターキー AWS KMS key は、プレーンテキストのデータキーを生成して暗号化するために使用される です。データキーは数学的には KMS キーとは無関係です。次に、必要に応じて、同じプレーンテキストのデータキーを暗号化 AWS KMS keys する追加の を指定できます。このキーリングで保護された暗号化されたフィールドを復号するには、使用する復号キーリングに、キーリングで AWS KMS keys 定義されている の少なくとも 1 つが含まれているか、含まれていない必要があります AWS KMS keys。( AWS KMS キーリングに がない AWS KMS keys は、 AWS KMS 検出キーリングと呼ばれます)。
暗号化キーリングまたはマルチキーリング内のすべてのラッピングキーは、データキーを暗号化できる必要があります。いずれかのラッピングキーが暗号化に失敗すると、暗号化メソッドは失敗します。そのため、呼び出し元は、キーリング内のすべてのキーについて必要な許可を持っている必要があります。検出キーリングを使用して、単独またはマルチキーリングでデータを暗号化すると、暗号化操作は失敗します。
次の例では、 CreateAwsKmsMrkMultiKeyring
メソッドを使用して、対称暗号化 KMS AWS KMS キーを持つ キーリングを作成します。CreateAwsKmsMrkMultiKeyring
メソッドは自動的に AWS KMS クライアントを作成し、キーリングが単一リージョンキーとマルチリージョンキーの両方を正しく処理するようにします。これらの例では、キー ARNs を使用して KMS キーを識別します。詳細については、「AWS KMS キーリング AWS KMS keys での の識別」を参照してください。
次の例では、 CreateAwsKmsRsaKeyring
メソッドを使用して、非対称 RSA KMS AWS KMS キーを持つ キーリングを作成します。非対称 RSA AWS KMS キーリングを作成するには、次の値を指定します。
-
kmsClient
: 新しい AWS KMS クライアントを作成する -
kmsKeyID
: 非対称 RSA KMS キーを識別するキー ARN -
publicKey
: 渡したキーのパブリックキーを表す UTF-8 エンコードされた PEM ファイルの ByteBuffer UTF-8kmsKeyID
-
encryptionAlgorithm
: 暗号化アルゴリズムはRSAES_OAEP_SHA_256
または である必要がありますRSAES_OAEP_SHA_1
マルチリージョンの使用 AWS KMS keys
AWS Database Encryption SDK では、マルチリージョンをラッピングキー AWS KMS keys として使用できます。1 つの でマルチリージョンキーを使用して暗号化する場合 AWS リージョン、別の で関連するマルチリージョンキーを使用して復号できます AWS リージョン。
マルチリージョン KMS キーは、同じキーマテリアルとキー ID AWS リージョン を持つ異なる AWS KMS keys の のセットです。これらの関連キーは、さまざまなリージョンで同じキーであるかのように使用できます。マルチリージョンキーは、クロスリージョン呼び出しを行うことなく、1 つのリージョンで暗号化し、別のリージョンで復号する必要がある一般的なディザスタリカバリおよびバックアップシナリオをサポートします AWS KMS。マルチリージョンキーの詳細については、「AWS Key Management Service デベロッパーガイド」の「マルチリージョンキーを使用する」を参照してください。
マルチリージョンキーをサポートするために、 AWS Database Encryption SDK AWS KMS multi-Region-awareキーリングが含まれています。CreateAwsKmsMrkMultiKeyring
メソッドは、単一リージョンキーとマルチリージョンキーの両方をサポートします。
-
単一リージョンキーの場合、マルチリージョン対応シンボルは、単一リージョン AWS KMS キーリングのように動作します。データを暗号化した単一リージョンキーを使用してのみ、暗号化テキストの復号が試されます。 AWS KMS キーリングの操作性を簡素化するために、対称暗号化 KMS キーを使用するたびに
CreateAwsKmsMrkMultiKeyring
メソッドを使用することをお勧めします。 -
マルチリージョンキーの場合、マルチリージョン対応シンボルは、データを暗号化したのと同じマルチリージョンキー、または指定したリージョン内の関連するマルチリージョンキーを使用して暗号文の復号を試みます。
複数の KMS キーを使用するマルチリージョン対応キーリングでは、複数の単一リージョンキーとマルチリージョンキーを指定できます。ただし、関連するマルチリージョンキーのセットごとに 1 つのキーしか指定できません。同じキー ID で複数のキー識別子を指定すると、コンストラクタの呼び出しは失敗します。
次の例では、マルチリージョン KMS AWS KMS キーを使用して キーリングを作成します。この例では、ジェネレーターキーとしてマルチリージョンキーを指定し、子キーとして単一リージョンキーを指定します。
マルチリージョン AWS KMS キーリングを使用すると、Strict モードまたは Discover モードで暗号文を復号できます。厳格モードで暗号文を復号するには、暗号文を復号するリージョン内の関連するマルチリージョンキーのキー ARN を使用してマルチリージョン対応シンボルをインスタンス化します。別のリージョン (例: レコードが暗号化されたリージョン) で関連するマルチリージョンキーのキー ARN を指定した場合、マルチリージョン対応シンボルは、その AWS KMS keyのクロスリージョン呼び出しを実行します。
Strict モードで復号する場合、マルチリージョン対応シンボルにはキー ARN が必要です。関連するマルチリージョンキーの各セットからキー ARN を 1 つだけ受け付けます。
AWS KMS マルチリージョンのキーを使用して、検出モードで復号することもできます。検出モードで復号する場合は、 AWS KMS keysを指定しません。(単一リージョン AWS KMS の検出キーリングの詳細については、「」を参照してくださいAWS KMS 検出キーリングの使用。)
マルチリージョンキーで暗号化した場合、検出モードのマルチリージョン対応シンボルは、ローカルリージョン内の関連するマルチリージョンキーを使用して復号しようとします。何も存在しない場合、呼び出しは失敗します。検出モードでは、 AWS Database Encryption SDK は暗号化に使用されるマルチリージョンキーのクロスリージョン呼び出しを試みません。
AWS KMS 検出キーリングの使用
復号するときは、 AWS Database Encryption SDK が使用できるラッピングキーを指定することがベストプラクティスです。このベストプラクティスに従うには、ラ AWS KMS ッピングキーを AWS KMS 指定したものに制限する復号キーリングを使用します。ただし、AWS KMS 検出キーリング、つまりラッピングキーを指定しない AWS KMS キーリングを作成することもできます。
AWS Database Encryption SDK は、標準 AWS KMS の検出キーリングと AWS KMS マルチリージョンキーの検出キーリングを提供します。 AWS Database Encryption SDK でのマルチリージョンキーの使用については、「マルチリージョンの使用 AWS KMS keys」を参照してください。
ラッピングキーが指定されていないため、検出キーリングはデータを暗号化できません。検出キーリングを使用して、単独またはマルチキーリングでデータを暗号化すると、暗号化操作は失敗します。
復号時に、検出キーリングを使用すると、 AWS Database Encryption SDK は、暗号化されたデータキーを所有またはアクセスできるユーザーに関係なく、暗号化されたデータキーを暗号化 AWS KMS key した を使用して復号するように AWS KMS に要求できます AWS KMS key。呼び出しは、呼び出し元にその AWS KMS keyに対する kms:Decrypt
許可がある場合にのみ成功します。
重要
復号マルチキーリングに AWS KMS 検出キーリングを含めると、検出キーリングは、マルチキーリングの他のキーリングで指定されたすべての KMS キー制限を上書きします。マルチキーリングは、最も制限の少ないキーリングのように動作します。検出キーリングを単独または複数のキーリングで使用してデータを暗号化すると、暗号化オペレーションは失敗します
AWS Database Encryption SDK は、便利な AWS KMS 検出キーリングを提供します。ただし、次の理由から、可能な限り制限されたキーリングを使用することをお勧めします。
-
真正性 – AWS KMS 検出キーリングは、呼び出し元 AWS KMS key が復 AWS KMS key 号に使用するアクセス許可を持っている限り、マテリアルの説明でデータキーを暗号化するために使用された を使用できます。これは、呼び出し元 AWS KMS key が使用する ではない場合があります。例えば、暗号化されたデータキーの 1 つが、誰でも使用できる安全性 AWS KMS key の低い で暗号化されている可能性があります。
-
レイテンシーとパフォーマンス – AWS Database AWS KMS Encryption SDK は、他の AWS アカウント およびリージョン AWS KMS keys の によって暗号化されたデータキーを含むすべての暗号化されたデータキーを復号しようとし、呼び出し元 AWS KMS keys に復号に使用するアクセス許可がないため、検出キーリングは他のキーリングよりもかなり遅くなる可能性があります。
検出キーリングを使用する場合は、検出フィルターを使用して、使用できる KMS キーを、指定された AWS アカウント および パーティション内のキーに制限することをお勧めします。アカウント ID とパーティションの検索については、「」のAWS アカウント 「識別子と ARN 形式」を参照してくださいAWS 全般のリファレンス。
次のコード例では、 AWS Database Encryption SDK が使用できる KMS AWS KMS キーをaws
パーティションと111122223333
サンプルアカウントのキーに制限する検出フィルターを使用して、 検出キーリングをインスタンス化します。
このコードを使用する前に、例の AWS アカウント とパーティションの値を AWS アカウント とパーティションの有効な値に置き換えます。KMS キーが中国リージョンにある場合は、aws-cn
のパーティションの値を使用します。KMS キーが AWS GovCloud (US) Regionsにある場合は、aws-us-gov
のパーティションの値を使用します。他のすべての AWS リージョンについては、aws
のパーティションの値を使用します。
AWS KMS リージョン検出キーリングの使用
AWS KMS リージョンレベルの検出キーリングは、KMS キーの ARN を指定しないキーリングです。代わりに、 AWS Database Encryption SDK は、特に KMS キーのみを使用して復号化できます AWS リージョン。
AWS KMS リージョン検出キーリングを使用して復号する場合、 AWS Database Encryption SDK は、指定された の AWS KMS key で暗号化されたデータキーを復号します AWS リージョン。成功するには、呼び出し元が、データキーを暗号化 AWS リージョン した指定された AWS KMS keys 内の少なくとも 1 つの に対するkms:Decrypt
アクセス許可を持っている必要があります。
他の検出キーリングと同様、リージョンレベルの検出キーリングは暗号化には影響しません。暗号化されたフィールドを復号する場合にのみ機能します。暗号化と復号に使用されるマルチキーリングでリージョンレベルの検出キーリングを使用する場合、それは復号時にのみ有効です。マルチリージョン検出キーリングを単独または複数のキーリングで使用してデータを暗号化すると、暗号化オペレーションは失敗します。
重要
復号マルチキーリングに AWS KMS リージョン検出キーリングを含めると、リージョン検出キーリングは、マルチキーリングの他のキーリングで指定されたすべての KMS キー制限を上書きします。マルチキーリングは、最も制限の少ないキーリングのように動作します。 AWS KMS 検出キーリングは、単独で使用する場合も、マルチキーリングで使用する場合も、暗号化には影響しません。
AWS Database Encryption SDK のリージョン検出キーリングは、指定されたリージョンの KMS キーでのみ復号を試みます。検出キーリングを使用する場合は、 AWS KMS クライアントでリージョンを設定します。これらの AWS Database Encryption SDK の実装では、リージョンごとに KMS キーをフィルタリングしませんが、指定されたリージョン外の KMS キーの復号リクエストは失敗 AWS KMS します。
検出キーリングを使用する場合は、検出フィルターを使用して、復号に使用される KMS キーを、指定された AWS アカウント および パーティション内のキーに制限することをお勧めします。
例えば、次のコードは、検出フィルターを使用して AWS KMS リージョン検出キーリングを作成します。このキーリングは、 AWS Database Encryption SDK を、米国西部 (オレゴン) リージョン (us-west-2) のアカウント 111122223333 の KMS キーに制限します。