グラントトークンを使用する
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