Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

グラントの作成

フォーカスモード
グラントの作成 - AWS Key Management Service

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

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

グラントを作成する前に、グラントをカスタマイズするためのオプションを確認します。グラントの制約を使用して、グラントのアクセス許可を制限することができます。CreateGrant アクセス許可の付与も参照してください。グラントからグラントを作成する許可を取得したプリンシパルは、作成できるグラントが制限されます。

グラントの作成

許可を作成するには、 CreateGrant オペレーションを呼び出します。KMS キー、被付与者プリンシパル、許可されたグラントオペレーションのリストを指定します。オプションの使用停止プリンシパルを指定することもできます。許可をカスタマイズするには、オプションの Constraints パラメータを使用して許可の制約を定義します。

グラントの作成、廃止、取り消しの際、変更が AWS KMS全体で利用可能になるまで短い遅延が発生する場合があります (通常は 5 分未満)。詳細については、「結果整合性 (グラント用)」を参照してください。

例えば、次の CreateGrant コマンドは、keyUserRole ロールを引き受ける権限を持つユーザーに、指定された対称 KMS キーDecrypt オペレーションを呼び出すことを許可するグラントを作成します。グラントでは、RetiringPrincipal パラメータを使用して、グラントを廃止できるプリンシパルを指定します。また、リクエスト内の暗号化コンテキスト"Department": "IT" が含まれている場合にのみアクセス許可を付与する許可制約も含まれます。

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

コードが CreateGrant オペレーションを再試行するか、AWS リクエストを自動的に再試行する SDK を使用する場合は、オプションの名前パラメータを使用して、重複グラントの作成を防止します。は、名前を含む既存のグラントと同じプロパティを持つグラントのCreateGrantリクエスト AWS KMS を取得した場合、リクエストを再試行として認識し、新しいグラントは作成しません。Name 値を使用して、任意の AWS KMS オペレーションでグラントを識別することはできません。

重要

グラント名には、機密情報や重要情報を含めないでください。これは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。

$ aws kms create-grant \ --name IT-1234abcd-keyUserRole-decrypt \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextSubset={Department=IT}

複数のプログラミング言語でのグラントの作成方法を示すコード例については、「AWS SDK または CLI CreateGrantで を使用する」を参照してください。

グラントの制約の使用

グラントの制約は、グラントが被付与者プリンシパルに付与するアクセス許可の条件を設定します。グラントの制約は、キーポリシーまたは IAM ポリシーで、条件キーの代わりになります。各グラントの制約値には、最大 8 個の暗号化コンテキストペアを含めることができます。各グラントの制約の暗号化コンテキスト値は、384 文字を超えることはできません。

重要

このフィールドには、機密情報や重要情報を含めないでください。このフィールドは、CloudTrail ログやその他の出力にプレーンテキストで表示される場合があります。

AWS KMS は、 EncryptionContextEqualsEncryptionContextSubsetの 2 つのグラント制約をサポートしています。どちらも、暗号化オペレーションのリクエストで暗号化コンテキストの要件を確立します。

暗号化コンテキストのグラントの制約は、暗号化コンテキストパラメータを持つグラントペレーションで使用されるように設計されています。

  • 暗号化コンテキストの制約は、対称暗号化 KMS キーのグラントのみで有効です。他の KMS キーを使用する暗号化オペレーションは、暗号化コンテキストをサポートしません。

  • 暗号化コンテキストの制約は、DescribeKey および RetireGrant オペレーションでは無視されます。DescribeKey および RetireGrant には暗号化コンテキストパラメータはありませんが、暗号化コンテキストの制約を持つグラントにこれらのオペレーションを含めることができます。

  • CreateGrant オペレーションのグラントで、暗号化コンテキストの制約を使用することができます。暗号化コンテキストの制約では、CreateGrant 許可で作成された任意のグラントが、同様に厳密またはより厳密な暗号化コンテキストの制約を持っている必要があります。

AWS KMS では、次の暗号化コンテキストの付与制約がサポートされています。

EncryptionContextEquals

EncryptionContextEquals を使用して、許可されたリクエストの正確な暗号化コンテキストを指定します。

EncryptionContextEquals では、リクエストの暗号化コンテキストペアが、グラントの制約の暗号化コンテキストペアと、大文字と小文字の区別で完全に一致することを要求します。このペアは任意の順序で表示できますが、各ペアのキーと値を変更することはできません。

例えば、EncryptionContextEquals のグラントの制約が "Department": "IT" 暗号化コンテキストペアを要求する場合、グラントはリクエストの暗号化コンテキストが完全に "Department": "IT" である場合にのみ、指定されたタイプのリクエストを許可します。

EncryptionContextSubset

EncryptionContextSubset を使用して、リクエストに特定の暗号化コンテキストペアを含めるように要求します。

EncryptionContextSubset では、リクエストにグラントの制約 (完全な大文字と小文字を区別する一致) のすべての暗号化コンテキストペアを含むことを要求しますが、リクエストが追加の暗号化コンテキストペアを持っている可能性もあります。このペアは任意の順序で表示できますが、各ペアのキーと値を変更することはできません。

例えば、EncryptionContextSubset のグラントの制約が、Department=IT の暗号化コンテキストペアを要求する場合、グラントはリクエストの暗号化コンテキストが "Department": "IT" の場合、またはリクエストが "Department": "IT","Purpose": "Test" のような他の暗号化コンテキストペアと共に "Department": "IT" を含む場合に、指定されたタイプのリクエストを許可します。

対称暗号化 KMS キーのグラントで暗号化コンテキストの制約を指定するには、CreateGrant オペレーションの Constraints パラメータを使用します。このコマンドが作成する許可では、keyUserRole ロールを引き受ける権限を持つユーザーに、Decrypt オペレーションを呼び出すためのアクセス許可を付与します。ただし、そのアクセス許可は Decrypt リクエストの暗号化コンテキストが、"Department": "IT" 暗号化コンテキストペアである場合にのみ有効です。

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \ --operations Decrypt \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --constraints EncryptionContextEquals={Department=IT}

したがって、グラントは以下のようになります。keyUserRole ロールに付与されるアクセス許可は、Decrypt リクエストがグラントの制約で指定された同じ暗号化コンテキストペアを使用する場合にのみ有効です。KMS キーでグラントを見つけるには、ListGrants オペレーションを使用します。

$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab { "Grants": [ { "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Operations": [ "Decrypt" ], "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole", "Constraints": { "EncryptionContextEquals": { "Department": "IT" } }, "CreationDate": 1568565290.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole" } ] }

EncryptionContextEquals のグラントの制約を満たすために、Decrypt オペレーションのリクエストの暗号化コンテキストは、"Department": "IT" ペアである必要があります。被付与者プリンシパルからの次のようなリクエストは、EncryptionContextEquals のグラントの制約を満たします。

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT

グラントの制約が EncryptionContextSubset の場合、リクエストの暗号化コンテキストペアは、グラントの制約の暗号化コンテキストペアを含む必要がありますが、リクエストは他の暗号化コンテキストペアを含んでいる可能性もあります。次のグラントの制約は、リクエスト内の暗号化コンテキストペアの 1 つが "Deparment": "IT" であることを要求します。

"Constraints": { "EncryptionContextSubset": { "Department": "IT" } }

被付与者プリンシパルからの次のリクエストは、この例の EncryptionContextEqual および EncryptionContextSubset のグラントの制約両方を満たします

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT

ただし、被付与者プリンシパルからの次のようなリクエストは、EncryptionContextSubset のグラントの制約を満たしますが、EncryptionContextEquals のグラントの制約は満たしません。

$ aws kms decrypt \ --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --ciphertext-blob fileb://encrypted_msg \ --encryption-context Department=IT,Purpose=Test

AWS サービスでは、多くの場合、 で KMS キーを使用するアクセス許可を付与する許可で暗号化コンテキストの制約が使用されます AWS アカウント。例えば、Amazon DynamoDB では、次のようなグラントを使用して、アカウントで DynamoDB の AWS マネージドキー を使用するアクセス許可を取得します。このグラント内の EncryptionContextSubset のグラントの制約により、要求内の暗号化コンテキストに "subscriberID": "111122223333""tableName": "Services" ペアが含まれる場合にのみ、グラントの許可が有効になります。このグラントの制約は、DynamoDB が AWS アカウントの特定のテーブルに対してのみ、指定された KMS キーを使用することをグラントが許可することを意味します。

この出力を取得するには、アカウントの AWS マネージドキー for DynamoDB で ListGrants オペレーションを実行します。

$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321 { "Grants": [ { "Operations": [ "Decrypt", "Encrypt", "GenerateDataKey", "ReEncryptFrom", "ReEncryptTo", "RetireGrant", "DescribeKey" ], "IssuingAccount": "arn:aws:iam::111122223333:root", "Constraints": { "EncryptionContextSubset": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" } }, "CreationDate": 1518567315.0, "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321", "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com", "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a", "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59" } ] }

CreateGrant アクセス許可の付与

グラントには、CreateGrant オペレーションを呼び出す許可を含めることができます。ただし、被付与者プリンシパルCreateGrant を呼び出す許可をポリシーからではなくグラントから取得すると、その許可は制限されます。

  • 被付与者プリンシパルは、親グラントで一部またはすべてのオペレーションを許可するグラントのみを作成できます。

  • 作成されたグラントのグラントの制約は、少なくとも親グラントの制約と同じくらい厳密である必要があります。

これらの制限は、CreateGrant 許可をポリシーから取得するプリンシパルには適用されませんが、プリンシパルの許可はポリシー条件によって制限されます。

例えば、被付与者プリンシパルが GenerateDataKeyDecrypt、および CreateGrant オペレーションを呼び出せるようにする許可について考えてみます。CreateGrant 許可、親グラントを許可するグラントを呼び出します。

# The original grant in a ListGrants response. { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572216195.0, "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Operations": [ "GenerateDataKey", "Decrypt", "CreateGrant ] "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, } ] }

被付与者プリンシパル、exampleUser はこのアクセス許可を使用して、CreateGrantDecrypt などの元のグラントで、指定されたオペレーションのサブセットを含むグラントを作成できます。子グラントに ScheduleKeyDeletion または ReEncrypt などの他のオペレーションを含めることはできません。

また、子グラントのグラントの制約は、親グラントの制約と同じか、より厳密である必要があります。例えば、子グラントは親グラントの EncryptionContextSubset 制約にペアを追加できますが、削除することはできません。子グラントは EncryptionContextSubset 制約を EncryptionContextEquals 制約に変更することはできますが、その逆はできません。

IAM ベストプラクティスでは、長期の認証情報を持つ IAM ユーザーの使用は推奨されていません。可能な限り、一時的な認証情報を提供する IAM ロールを使用してください。詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。

例えば、被付与者プリンシパルは、親グラントから取得した CreateGrant 許可を使用して、次の子グラントを作成します。子グラントのオペレーションは、親グラントのオペレーションのサブセットであり、グラントの制約がより限定的です。

# The child grant in a ListGrants response. { "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572249600.0, "GrantId": "fedcba9999c1e2e9876abcde6e9d6c9b6a1987650000abcee009abcdef40183f", "Operations": [ "CreateGrant" "Decrypt" ] "RetiringPrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:user/anotherUser", "Constraints": { "EncryptionContextEquals": { "Department": "IT" } }, } ] }

子グラントの被付与者プリンシパル、anotherUserCreateGrant 許可を使用してグラントを作成できます。ただし、anotherUser が作成したグラントは親グラントまたはサブセット内のオペレーションを含める必要があり、グラントの制約は同じか、より厳密である必要があります。

このページの内容

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.