翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
グラントの管理
必要な許可を持つプリンシパルは、グラントを表示、使用、削除 (廃止または取り消し) できます。グラントを作成および管理するための許可を絞り込むために、AWS KMS では、キーポリシーと IAM ポリシーで使用できる複数のポリシー条件をサポートします。
グラントへのアクセスを制御する
キーポリシー、IAM ポリシー、グラントで、グラントを作成および管理するオペレーションへのアクセスを制御できます。グラントから CreateGrant
許可を取得したプリンシパルは、より限定的な許可の付与を行います。
API オペレーション | キーポリシーまたは IAM ポリシー | 権限 |
---|---|---|
CreateGrant | ✓ | ✓ |
ListGrants | ✓ | - |
ListRetirableGrants | ✓ | - |
許可を使用停止にする | (制限あり。「グラントの使用停止と取り消し」を参照してください) | ✓ |
RevokeGrant | ✓ | - |
キーポリシーまたは IAM ポリシーを使用して、グラントを作成および管理するオペレーションへのアクセスを制御する際は、次の 1 つ以上のポリシー条件を使用して、アクセス許可を制限できます。AWS KMS は、グラントに関連する次のすべての条件キーをサポートします。詳細と例については、「AWS KMS 条件キー」を参照してください。
- kms:GrantConstraintType
-
グラントに指定されたグラントの制約が含まれている場合にのみ、プリンシパルにグラントの作成を許可します。
- kms:GrantIsForAWSResource
-
AWS KMS と統合された AWS のサービス
がプリンシパルの代わりにリクエストを送信する場合にのみ、 CreateGrant
、ListGrants
、RevokeGrant
の呼び出しをプリンシパルに許可します。 - kms:GrantOperations
-
プリンシパルにグラントの作成を許可しますが、グラントを指定されたオペレーションに制限します。
- kms:GranteePrincipal
-
指定された被付与者プリンシパルに対してのみ、グラントの作成を許可します。
- kms:RetiringPrincipal
-
グラントが特定の使用停止プリンシパルを指定する場合にのみ、プリンシパルにグラントの作成を許可します。
グラントの表示
許可を表示するには、 ListGrantsオペレーションを使用します。グラントを適用する KMS キーを指定する必要があります。グラント ID または被付与者プリンシパルにより、グラントリストをフィルタリングすることもできます。その他の例については、「許可の表示」を参照してください。
特定の使用停止プリンシパル を持つ AWS アカウントおよびリージョンのすべての許可を表示するには、 を使用しますListRetirableGrants。レスポンスには、各グラントの詳細が含まれます。
注記
通常、ListGrants
レスポンスの GranteePrincipal
フィールドには、グラントの被付与者プリンシパルが含まれます。ただし、グラントの被付与者プリンシパルが AWS のサービスの場合、GranteePrincipal
フィールドにはサービスプリンシパルが含まれます。これは、複数の異なる被付与者プリンシパルを表す場合があります。
例えば、次のコマンドは KMS キーのすべてのグラントを一覧表示します。
$
aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{ "Grants": [ { "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "CreationDate": 1572216195.0, "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a", "Constraints": { "EncryptionContextSubset": { "Department": "IT" } }, "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole", "Name": "", "IssuingAccount": "arn:aws:iam::111122223333:root", "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser", "Operations": [ "Decrypt" ] } ] }
グラントトークンを使用する
AWS KMS API は結果整合性モデルに従います。グラントの作成時、グラントがすぐに有効にならないことがあります。変更が AWS KMS 全体に適用されるまでに若干の遅延が生じることがあります。通常、変更がシステム全体に反映されるまでに数秒もかかりませんが、場合によっては数分かかることがあります。システム全体で変更が完全に伝播されると、被付与者プリンシパルはグラントトークンやグラントの証拠を指定せずに、グラントのアクセス許可を使用できます。ただし、グラントが新しく、一部の AWS KMS で認識されていない場合、リクエストは AccessDeniedException
のエラーにより失敗する可能性があります。
新しいグラントでアクセス許可をすぐに使用するには、グラントのグラントトークンを使用します。CreateGrant オペレーションが返すグラントトークンを保存します。次に、AWS KMS オペレーションのリクエストでグラントトークンを送信します。グラントトークンを任意の AWS KMS グラントオペレーションへ送信できます。また、同じリクエストで複数のグラントトークンを送信できます。
次の例では、 CreateGrant
オペレーションを使用して、 GenerateDataKeyおよび Decrypt オペレーションを許可する許可を作成します。これは、CreateGrant
が token
変数で返すグラントトークンを保存します。次に、GenerateDataKey
オペレーションへの呼び出しで、token
変数のグラントトークンを使用します。
# Create a grant; save the grant token
$
token=$(aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/appUser \ --retiring-principal arn:aws:iam::111122223333:user/acctAdmin \ --operations GenerateDataKey Decrypt \ --query GrantToken \ --output text)
# Use the grant token in a request$
aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ –-key-spec AES_256 \ --grant-tokens $token
アクセス許可を持つプリンシパルは、グラントが AWS KMS 全体で使用可能になる前であっても、グラントトークンを使用して新しいグラントを廃止にすることができます。(RevokeGrant
オペレーションはグラントトークンを承認しません)。詳細については、「グラントの使用停止と取り消し」を参照してください。
# Retire the grant
$
aws kms retire-grant --grant-token $token
グラントの使用停止と取り消し
グラントを削除するには、グラントの廃止または取り消しをします。
RetireGrant および RevokeGrantオペレーションは互いに非常によく似ています。どちらのオペレーションもグラントを削除します。これにより、グラントが許可しているアクセス許可が削除されます。これらのオペレーションの主な違いは、オペレーションの認可方法です。
- RevokeGrant
-
ほとんどの AWS KMS オペレーションと同様に、
RevokeGrant
オペレーションへのアクセスは、キーポリシーおよび IAM ポリシーによって制御されます。RevokeGrant API は、 アクセスkms:RevokeGrant
許可を持つ任意のプリンシパルによって呼び出すことができます。このアクセス許可は、キー管理者に付与される標準のアクセス許可に含まれています。通常、管理者はグラントを取り消して、グラントが許可するアクセス許可を拒否します。 - RetireGrant
-
グラントでは、グラントを廃止にできる管理者を決定できます。この設計により、キーポリシーや IAM ポリシーを変更することなく、グラントのライフサイクルを制御できます。通常、許可の使用を終了したら、グラントを廃止にします。
グラントは、グラントで指定されたオプションの廃止プリンシパルにより廃止にできます。被付与者プリンシパルもグラントを廃止にできますが、
RetireGrant
オペレーションを含むプリンシパルまたはグラントも同時に廃止にする場合に限られます。バックアップとして、グラントが作成された AWS アカウント もグラントを廃止にできます。IAM ポリシーで使用できる
kms:RetireGrant
アクセス許可がありますが、ユーティリティは限られています。グラントで指定されたプリンシパルは、kms:RetireGrant
アクセス許可なしでグラントを廃止にできます。kms:RetireGrant
アクセス許可だけでは、プリンシパルにグラントの廃止を許可できません。kms:RetireGrant
アクセス許可はキーポリシーでは無効です。-
グラントを廃止にするアクセス許可を拒否するには、
kms:RetireGrant
アクセス許可でDeny
アクションを使用します。 -
KMS キーを所有する AWS アカウント は、
kms:RetireGrant
許可をアカウントの IAM プリンシパルに委任できます。 -
廃止プリンシパルが異なる AWS アカウント の場合、他のアカウントの管理者は
kms:RetireGrant
を使用して、そのアカウントの IAM プリンシパルに、グラントを廃止にするアクセス許可を委任できます。
-
AWS KMS API は結果整合性モデルに従います。グラントの作成、廃止、または取り消しを行うと、変更が AWS KMS 全体に適用されるまでに若干の遅延が生じることがあります。通常、変更がシステム全体に反映されるまでに数秒もかかりませんが、場合によっては数分かかることがあります。新しいグラントをすぐに削除する必要がある場合は、グラントが AWS KMS 全体で利用可能になる前に、グラントトークンを使用してグラントを廃止にします。グラントトークンを使用してグラントを取り消すことはできません。