グラントトークンを使用する - AWS Key Management Service

グラントトークンを使用する

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