権限の管理
必要な許可を持つプリンシパルは、権限を表示、使用、削除 (使用停止または取り消し) できます。権限を作成および管理するための許可を絞り込むために、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 全体で利用可能になるまで)、5 分未満の短い遅延が発生する可能性があります。権限が結果整合性を取得すると、被付与者プリンシパルは権限トークンや権限の証拠を指定せずに、権限のアクセス許可を使用できます。ただし、権限が新しく、すべての 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
アクセス許可を持つプリンシパルは、権限トークンを使用して、権限が結果整合性を取得する前であっても、新しい権限を使用停止にすることができます。(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 ユーザーに、権限を使用停止にするアクセス許可を委任できます。
-
権限の作成、使用停止、取り消しの際、オペレーションが結果整合性を取得するまで短い遅延が発生することがあります (通常は 5 分未満)。新しい権限をすぐに削除する必要がある場合は、権限が AWS KMS 全体で利用可能になる前に、権限トークンを使用して権限を使用停止にします。権限トークンを使用して権限を取り消すことはできません。