I'm managing KMS permissions to CMK's across AWS accounts, to prove an account with access to another account's KMS key(s) I'm using Grants rather than policies since AWS suggests they're more temporary which fits my need for all intents and purposes.
I'm aware there's a maximum limit of grants per resource so after I've granted permissions and no longer need them, I should clean up the grant(s).
According to AWS, there's two ways to go about this Retire a grant
or Revoke a grant
. Each with a slightly different descriptions:
Retire: To retire a grant for an AWS KMS customer master key, use the RetireGrant operation.
You should retire a grant to clean up after you are done using it.
Revoke: To revoke a grant to an AWS KMS customer master key, use the RevokeGrant operation.
You can revoke a grant to explicitly deny operations that depend on it.
Is the only difference that Revoke is going to deny any ongoing operations or is there more to it? "you should retire a grant when you are done using it" seems a bit vague and I would like a more technical explanation.
Could someone elaborate with the actual differences between the two and I would appreciate any extra resources on the subject.
Resources I've used:
https://docs.aws.amazon.com/cli/latest/reference/kms/retire-grant.html
https://docs.aws.amazon.com/cli/latest/reference/kms/revoke-grant.html
https://api.spotinst.com/elastigroup-for-aws/tutorials/using-cross-account-kms-key-to-encrypt-ebs-volumes-with-spotinst/
https://docs.aws.amazon.com/kms/latest/developerguide/programming-grants.html
https://docs.aws.amazon.com/kms/latest/developerguide/grants.html
https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#grant