グラントの管理 - AWS Key Management Service

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

グラントの管理

必要な許可を持つプリンシパルは、グラントを表示、使用、削除 (廃止または取り消し) できます。グラントを作成および管理するための許可を絞り込むために、AWS KMS では、キーポリシーと IAM ポリシーで使用できる複数のポリシー条件をサポートします。

グラントへのアクセスを制御する

キーポリシー、IAM ポリシー、グラントで、グラントを作成および管理するオペレーションへのアクセスを制御できます。グラントから CreateGrant 許可を取得したプリンシパルは、より限定的な許可の付与を行います。

API オペレーション キーポリシーまたは IAM ポリシー 権限
CreateGrant
ListGrants -
ListRetirableGrants -
許可を使用停止にする (制限あり。「グラントの使用停止と取り消し」を参照してください)
RevokeGrant -

キーポリシーまたは IAM ポリシーを使用して、グラントを作成および管理するオペレーションへのアクセスを制御する際は、次の 1 つ以上のポリシー条件を使用して、アクセス許可を制限できます。AWS KMS は、グラントに関連する次のすべての条件キーをサポートします。詳細と例については、「AWS KMS 条件キー」を参照してください。

kms:GrantConstraintType

グラントに指定されたグラントの制約が含まれている場合にのみ、プリンシパルにグラントの作成を許可します。

kms:GrantIsForAWSResource

AWS KMS と統合された AWS のサービスがプリンシパルの代わりにリクエストを送信する場合にのみ、CreateGrantListGrantsRevokeGrant の呼び出しをプリンシパルに許可します。

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 オペレーションを許可する許可を作成します。これは、CreateGranttoken 変数で返すグラントトークンを保存します。次に、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 全体で利用可能になる前に、グラントトークンを使用してグラントを廃止にします。グラントトークンを使用してグラントを取り消すことはできません。