Gerencias concessões
Entidades principais com as permissões necessárias podem exibir, usar e excluir (retirar ou revogar) concessões. Para refinar permissões para criar e gerenciar concessões, o AWS KMS oferece suporte a várias condições de política que você pode usar em políticas de chave e políticas do IAM.
Tópicos
Controlar o acesso a concessões
Você pode controlar o acesso às operações que criam e gerenciam concessões em políticas de chaves, políticas do IAM e concessões. As entidades principais que recebem a permissão CreateGrant
de uma concessão tem permissões de concessão mais limitadas.
Operação de API | Política de chaves ou política do IAM | Grant |
---|---|---|
CreateGrant | ✓ | ✓ |
ListGrants | ✓ | - |
ListRetirableGrants | ✓ | - |
Retirar concessões | (Limitado. Consulte Retirar e revogar concessões) | ✓ |
RevokeGrant | ✓ | - |
Ao usar uma política de chaves ou uma política do IAM para controlar o acesso a operações que criam e gerenciam concessões, você pode usar uma ou mais das seguintes condições de política para limitar a permissão. O AWS KMS oferece suporte a todas as seguintes chaves de condição relacionadas a concessões. Para obter informações e exemplos detalhados, consulte Chaves de condição do AWS KMS.
- kms:GrantConstraintType
-
Permite que as entidades principais criem uma concessão somente quando esta inclui a restrição de concessão especificada.
- kms:GrantIsForAWSResource
-
Permite que as entidades principais chamem
CreateGrant
,ListGrants
ouRevokeGrant
somente quando um serviço da AWS integrado ao AWS KMSenvia a solicitação em nome da entidade principal. - kms:GrantOperations
-
Permite que as entidades principais criem uma concessão, mas limita a concessão às operações especificadas.
- kms:GranteePrincipal
-
Permite que as entidades principais criem uma concessão somente para a entidade principal receptora da concessão.
- kms:RetiringPrincipal
-
Permite que as entidades principais criem uma concessão somente quando esta especifica um entidade principal de retirada.
Visualizar concessões
Para visualizar a concessão, use a operação ListGrants. Você deve especificar a chave do KMS à qual as concessões se aplicam. Você também pode filtrar a lista de concessões por ID de concessão ou entidade principal receptora da concessão. Para obter mais exemplos, consulte Visualizar uma concessão.
Para visualizar todas as concessões na Conta da AWSe Região com uma entidade principal de retirada, use ListRetirableGrants. As respostas incluem detalhes sobre cada concessão.
O campo GranteePrincipal
na resposta ListGrants
geralmente contém o principal favorecido da concessão. No entanto, quando a entidade principal receptora na concessão é um serviço da AWS, o campo GranteePrincipal
contém a entidade principal de serviço, que pode representar várias entidades principais entidade receptoras de concessão diferentes.
Por exemplo, o comando a seguir lista todas as concessões para uma chave do 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" ] } ] }
Usar um token de concessão
Ao criar uma concessão, esta pode não entrar em vigor imediatamente. É provável que haja um breve intervalo, de menos de cinco minutos, até que a concessão atinja consistência final, isto é, antes que a nova concessão esteja disponível no AWS KMS. Uma vez que a concessão tenha alcançado consistência final, a entidade principal receptora da concessão poderá usar as permissões na concessão sem especificar o token de concessão ou qualquer evidência da concessão. No entanto, se a concessão for tão nova a ponto de ainda não ser conhecida pelo AWS KMS, a solicitação poderá falhar com um erro de AccessDeniedException
.
Para usar as permissões em uma nova concessão imediatamente, use o token de concessão para a concessão. Salve o token de concessão retornado pela operação CreateGrant. Em seguida, envie o token de concessão na solicitação para a operação AWS KMS. Você pode enviar um token de concessão para qualquer operação de concessão do AWS KMS e pode enviar vários tokens de concessão na mesma solicitação.
O exemplo a seguir usa a operação CreateGrant
para criar uma concessão que permite as operações GenerateDataKey e Decrypt. Ele salva o token de concessão retornado por CreateGrant
na variável token
. Em seguida, em uma chamada para GenerateDataKey
, ele usa o token de concessão na variável 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
As entidades principais com permissão também podem usar um token de concessão para retirar uma nova concessão mesmo antes que esta atinja consistência final. (A operação RevokeGrant
não aceita um token de concessão.) Para obter mais detalhes, consulte Retirar e revogar concessões.
# Retire the grant
$
aws kms retire-grant --grant-token $token
Retirar e revogar concessões
Para excluir uma concessão, retire-a ou revogue-a.
As operações RetireGrant e RevokeGrant são muito semelhantes. Ambas excluem uma concessão, o que elimina as permissões por ela permitidas. A principal diferença entre elas é como elas são autorizadas.
- RevokeGrant
-
Como a maioria das operações do AWS KMS, o acesso à operação
RevokeGrant
é controlado por meio de políticas de chaves e políticas do IAM. A API RevokeGrant pode ser chamada por qualquer entidade principal com permissõeskms:RevokeGrant
. Essa permissão está incluída nas permissões padrão fornecidas aos administradores de chaves. Normalmente, os administradores revogam uma concessão para negar permissões que são permitidas pela concessão. - RetireGrant
-
A concessão determina quem pode retirá-la. Esse design permite que você controle o ciclo de vida de uma concessão sem alterar políticas de chaves ou políticas do IAM. Normalmente, você retira uma concessão ao terminar de usar suas permissões.
Uma concessão pode ser retirada por uma entidade principal de retirada especificada nessa concessão. A entidade principal receptora da concessão também pode retirar a concessão, mas somente se ela também for uma entidade principal de retirada ou se a concessão incluir a operação
RetireGrant
. Como backup, a Conta da AWS em que a concessão foi criada pode retirar essa concessão.Existe uma permissão
kms:RetireGrant
que pode ser usada em políticas do IAM, mas sua utilidade é limitada. Entidades principais especificadas na concessão podem retirar uma concessão sem a permissãokms:RetireGrant
. A permissãokms:RetireGrant
por si só não permite que as entidades principais retirem uma concessão. A permissãokms:RetireGrant
não é eficaz em uma política de chaves.-
Para negar permissão para retirar uma concessão, você pode usar uma ação
Deny
com a permissãokms:RetireGrant
. -
A Conta da AWS que possui a chave do KMS pode delegar a permissão
kms:RetireGrant
para delegar permissão a um usuário do IAM na conta. -
Se a entidade principal de retirada for uma Conta da AWS diferente, os administradores na outra conta poderão usar
kms:RetireGrant
para delegar permissão para retirar a concessão a um usuário do IAM nessa conta.
-
Quando você cria, retira ou revoga uma concessão, pode haver um breve atraso, geralmente de menos de cinco minutos, até que a operação atinja a consistência final. Se precisar excluir uma nova concessão imediatamente antes que ela esteja disponível no AWS KMS, use um token de concessão para retirar a concessão. Não é possível usar um token de concessão para revogar uma concessão.