Concessões no AWS KMS - AWS Key Management Service

Concessões no AWS KMS

Uma concessão é um instrumento de política que permite que as entidades principais da AWS usem chaves do KMS em operações de criptografia. Ela também pode permitir que essas entidades visualizem uma chave do KMS (DescribeKey) e criem e gerenciem concessões. Ao autorizar o acesso a uma chave do KMS, concessões são consideradas junto com políticas de chave e políticas do IAM. Concessões geralmente são usadas para permissões temporárias, pois você pode criar uma, usar suas permissões e excluí-la sem alterar suas principais políticas ou políticas do IAM.

Concessões são comumente usadas por serviços da AWS que se integram ao AWS KMS para criptografar seus dados em repouso. O serviço cria uma concessão em nome de um usuário na conta, usa suas permissões e desativa a concessão assim que sua tarefa é concluída. Para obter detalhes sobre como os serviçosda AWS usam concessões, consulte Como os serviços da AWS, usam o AWS KMS ou o tópico Criptografia em repouso no manual do usuário ou no guia do desenvolvedor do serviço.

Para exemplos de código que demonstram como trabalhar com subsídios em várias linguagens de programação, consulte Trabalhar com concessões.

Sobre concessões

Concessões são um mecanismo de controle de acesso muito flexível e útil. Quando você cria uma concessão para uma chave do KMS, essa concessão permite que as entidades principais do receptor da concessão chamem as operações de concessão especificadas na chave do KMS, desde que todas as condições especificadas na concessão sejam atendidas.

  • Cada concessão permite o acesso a exatamente uma chave do KMS. Você pode criar uma concessão para uma chave do KMS em uma Conta da AWS diferente.

  • Uma concessão pode permitir acesso a uma chave do KMS, mas não pode negar acesso.

  • Cada concessão deve ter pelo menos uma entidade principal receptora. A entidade principal receptora da concessão pode ser uma identidade em uma Conta da AWS diferente.

  • Uma concessão só pode permitir operações de concessão. Operações de concessão devem ter suporte pela chave do KMS na concessão. Se você especificar uma operação sem suporte, a solicitação CreateGrant falhará com uma exceção ValidationError.

  • As entidades principais receptoras da concessão podem usar as permissões concedidas pela concessão sem especificar a concessão, exatamente como fariam se as permissões fossem provenientes de uma política de chave ou uma política do IAM. No entanto, 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. Para usar as permissões em uma concessão imediatamente, use um token de concessão.

  • Uma entidade principal autorizada pode excluir a concessão (retirar ou revogar a concessão). A exclusão de uma concessão elimina todas as permissões permitidas por ela. Você não precisa descobrir quais políticas adicionar ou remover para desfazer a concessão.

  • A AWS KMS limita o número de concessões em cada chave do KMS. Para obter mais detalhes, consulte Concessões por chave do KMS: 50.000.

Tenha cautela ao criar concessões e ao dar permissão a outras pessoas para criar concessões. A permissão para criar concessões tem implicações de segurança, bem como permitir que a permissão kms:PutKeyPolicy defina políticas.

  • Usuários com permissão para criar concessões para uma chave do KMS (kms:CreateGrant) podem usar uma concessão para permitir que usuários e funções, incluindo serviços da AWS, usem a chave do KMS. As entidades principais podem ser identidades na sua própria Conta da AWS ou identidades em uma conta ou organização diferente.

  • Concessões podem permitir apenas um subconjunto de operações da AWS KMS. É possível usar concessões para permitir que as entidades principais exibam a chave do KMS, usá-la em operações de criptografia e criar e retirar concessões. Para obter mais detalhes, consulte Operações de concessão. Você também pode usar restrições de concessão para limitar as permissões em uma concessão para uma chave de criptografia simétrica.

  • As entidades principais podem obter permissão para criar concessões a partir de uma política de chave ou de uma política do IAM. Esses entidades principais podem criar concessões para qualquer operação de concessão na chave do KMS, mesmo que elas não tenham permissão. Quando você concede a permissão kms:CreateGrant em uma política, pode usar condições de políticas para limitar essa permissão.

  • As entidades principais também podem obter permissão para criar concessões de uma concessão. Essas entidades principais só podem delegar as permissões que lhes foram concedidas, mesmo que tenham outras permissões de uma política. Para obter mais detalhes, consulte Conceder a permissão CreateGrant.

Para obter ajuda com conceitos relacionados a concessões, consulte a Terminologia de concessões.

Conceitos sobre concessões

Para usar concessões de maneira eficaz, você precisa entender os termos e conceitos que são usados pela AWS KMS.

Restrições de concessão

Uma condição que limita as permissões na concessão. No momento, o AWS KMS oferece suporte a restrições de concessão com base nocontexto de criptografia na solicitação de operação criptográfica. Para obter mais detalhes, consulte Usar restrições de concessão.

ID de concessão

O identificador exclusivo de uma concessão para uma chave do KMS. Você pode usar um ID de concessão, juntamente com um identificador de chave, para identificar uma concessão em uma solicitação RetireGrant ou RevokeGrant.

Operações de concessão

As operações do AWS KMS que você pode permitir em uma concessão. Se você especificar outras operações, a solicitação CreateGrant falhará com uma exceção ValidationError. Estas são também as operações que aceitam um token de concessão. Para obter informações detalhadas sobre essas permissões, consulte a Permissões AWS KMS.

Essas operações de concessão realmente representam permissão para usar a operação. Portanto, para a operação ReEncrypt, você pode especificar ReEncryptFrom, ReEncryptTo ou ambos ReEncrypt*.

As operações de concessão são:

As operações de concessão permitidas devem ter suporte pela chave do KMS na concessão. Se você especificar uma operação sem suporte, a solicitação CreateGrant falhará com uma exceção ValidationError. Por exemplo, concessões para chaves do KMS de criptografia simétrica não podem permitir as operações Sign (Assinar), Verify (Verificar), GenerateMac ou VerifyMac. As concessões para chaves assimétricas do KMS não podem permitir nenhuma operação que gere chaves de dados ou pares de chaves de dados.

Token de concessão

Quando você cria uma concessão, pode haver um breve atraso, geralmente menos de cinco minutos, até que a nova concessão esteja disponível noAWS KMS, ou seja, até que ela atinja consistência final. Se você tentar usar uma concessão antes de ela atingir consistência final, poderá obter um erro de acesso negado. Um token de concessão permite que você faça referência à concessão e use as permissões de concessão imediatamente.

Um token de concessão é uma string única, não secreta, de comprimento variável e codificada em base64 que representa uma concessão. Você pode usar o token de concessão para identificar a concessão em qualquer operação de concessão. No entanto, como o valor do token é um resumo de hash, ele não revela detalhes sobre a concessão.

Um token de concessão é projetado para ser usado somente até que a concessão atinja uma consistência final. Depois disso, a entidade principal receptora da concessão pode usar a permissão nessa concessão sem fornecer um token de concessão ou qualquer outra evidência da concessão. Você pode usar um token de concessão a qualquer momento. Porém, uma vez que a concessão for eventualmente consistente, o AWS KMS a usará para determinar permissões, e não o token de concessão.

Por exemplo, o comando a seguir chama a operação GenerateDataKey. Ele usa um token de concessão para representar a concessão que dá ao autor da chamada (a entidade principal receptora da concessão) permissão para chamar GenerateDataKey na chave do KMS especificada.

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --grant-token $token

Também é possível pode usar um token de concessão para identificar uma concessão em operações que gerenciam concessões. Por exemplo, a entidade principal de retirada pode usar um token de concessão em uma chamada para a operação RetireGrant.

$ aws kms retire-grant \ --grant-token $token

CreateGrant é a única operação que retorna um token de concessão. Você não pode obter um token de concessão de qualquer outra operação do AWS KMS ou do evento de log do CloudTrail para a operação CreateGrant. As operações ListGrants e ListRetirableGrants retornam oID de concessão, mas não um token de concessão.

Para obter mais detalhes, consulte Usar um token de concessão.

Entidade principal receptora da concessão

A identidade que obtém as permissões especificadas na concessão. Uma concessão deve ter pelo menos uma entidade principal receptora da concessão. A entidade principal receptora da concessão pode ser qualquer entidade principal da AWS, incluindo uma Conta da AWS (root), um usuário do IAM, uma função do IAM, um usuário ou função federada ou um usuário de função assumida. A entidade principal receptora da concessão pode estar na mesma conta da que a chave do KMS ou uma conta diferente. No entanto, a entidade principal receptora da concessão não pode ser umaentidade principal do serviço, umgrupo do IAM ou umAWS organização.

Retira (uma concessão)

Encerra uma concessão. Você retira uma concessão ao terminar de usar as permissões.

A revogação e a retirada de uma concessão excluem essa concessão. No entanto, o processo é feito por uma entidade principal especificada na concessão. A revogação geralmente é feita por um administrador de chave. Para obter mais detalhes, consulte Retirar e revogar concessões.

Retirada da entidade principal

Uma entidade principal que pode retirar uma concessão. Você pode especificar uma entidade de retirada em uma concessão, mas ela não é necessária. A entidade principal de retirada pode ser qualquer entidade principal da AWS, incluindoContas da AWS, usuários do IAM, funções do IAM, usuários federados e usuários de funções assumidas. A entidade principal de retirada pode estar na mesma conta da que a chave do KMS ou uma conta diferente.

Além da entidade principal de retirada especificada na concessão, uma concessão pode ser retirada pela Conta da AWS em que ela foi criada. Se a concessão permitir a operação RetireGrant, a entidade principal receptora da concessão poderá retirar a concessão. Além disso, a Conta da AWS ou uma Conta da AWSque seja a entidade principal de desativação pode delegar a permissão para retirar uma concessão a um principal do IAM no mesmoConta da AWS. Para obter mais detalhes, consulte Retirar e revogar concessões.

Revocar (uma concessão)

Encerra uma concessão. Você revoga uma concessão para negar ativamente as permissões que a concessão permite.

A revogação e a retirada de uma concessão excluem essa concessão. No entanto, o processo é feito por uma entidade principal especificada na concessão. A revogação geralmente é feita por um administrador de chave. Para obter mais detalhes, consulte Retirar e revogar concessões.

Consistência final (para concessões)

Quando você cria, retira ou revoga uma concessão, pode haver um breve atraso, geralmente menos de cinco minutos, antes que a alteração esteja disponível em todo o AWS KMS. Quando esse intervalo estiver completo, consideraremos que a operação tenha atingido a consistência eventual.

Você pode ter conhecimento desse breve atraso se receber erros inesperados. Por exemplo, se você tentar gerenciar uma nova concessão ou usar as permissões em uma nova concessão antes que a concessão seja conhecida emAWS KMSVocê pode obter um erro de acesso negado. Se você retirar ou revogar uma concessão, a entidade principal receptora da concessão ainda poderá usar suas permissões por um breve período até que a concessão seja totalmente excluída. A estratégia típica é tentar novamente a solicitação e alguns SDKs da AWS incluem a lógica automática de retirada e repetição.

O AWS KMS tem recursos para atenuar esse breve atraso.

nota

Os tokens de concessão substituem a validade da concessão até que todos os endpoints do serviço sejam atualizados com o novo estado de concessão. Na maioria dos casos, a consistência final será alcançada em cinco minutos.

Práticas recomendadas para concessões do AWS KMS

O AWS KMS recomenda as seguintes práticas recomendadas ao criar, usar e gerenciar concessões.

  • Limite as permissões na concessão àquelas que são exigidas pela entidade principal receptora da concessão. Use o princípio de acesso com menos privilégio.

  • Use uma entidade principal receptora da concessão específica, como uma função do IAM, e dê a ela permissão para usar somente as operações de API necessárias.

  • Use restrições de concessão do contexto de criptografia para garantir que os autores de chamadas estejam usando a chave do KMS para o propósito pretendido. Para obter detalhes sobre como usar o contexto de criptografia em uma solicitação para proteger seus dados, consulte Como proteger a integridade dos seus dados criptografados usando o AWS Key Management Service e EncryptionContext, no Blog de segurança da AWS.

    dica

    Use a restrição de concessão EncryptionContextEqual sempre que possível. A restrição de concessão EncryptionContextSubset é mais difícil de usar corretamente. Se precisar usá-la, leia atentamente a documentação e teste a restrição de concessão para se certificar de que ela funciona como pretendido.

  • Exclua concessões duplicadas. Concessões duplicadas têm o mesmo ARN de chave, ações de API, entidade principal receptora da concessão, contexto de criptografia e nome. Se você retirar ou revogar a concessão original, mas deixar as duplicatas, as concessões duplicadas restantes constituirão escalonamentos não intencionais de privilégio. Para evitar duplicar concessões ao tentar novamente uma solicitação CreateGrant, use o parâmetro Name. Para detectar concessões duplicadas, use a operação ListGrants. Se você criar acidentalmente uma concessão duplicada, retire ou revogue-a assim que possível.

    nota

    Concessões para chaves gerenciadas da AWS podem parecer duplicadas, mas têm diferentes entidades principais receptoras de 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.

  • Lembre-se de que as concessões não expiram automaticamente. Reitre ou revogue a concessão assim que a permissão não for mais necessária. Concessões que não forem excluídas podem criar riscos de segurança para recursos criptografados.