Usar etiquetas para controlar o acesso a chaves do KMS - AWS Key Management Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar etiquetas para controlar o acesso a chaves do KMS

É possível controlar o acesso aoAWS KMS keyscom base nas etiquetas na chave do KMS. Por exemplo, você pode escrever uma política do IAM que permite que as entidades principais habilitem e desabilitem somente as chaves do KMS que possuem uma etiqueta específica. Ou você pode usar uma política do IAM para impedir que as entidades principais usem chaves do KMS em operações de criptografia, a menos que a chave do KMS tenha uma etiqueta específica.

Esse recurso faz parte do suporte do AWS KMS para controle de acesso baseado em atributos( ABAC). Para informações sobre como usar etiquetas para controlar o acesso a recursos da AWS, consulte O que é o ABAC para a AWS? eControlar o acesso a recursos do AWS usando etiquetas de recursos, no Manual do usuário do IAM. Para obter ajuda para resolver problemas de acesso relacionados ao ABAC, consulte Solução de problemas com o ABAC para o AWS KMS.

nota

Pode levar até cinco minutos para que alterações de etiqueta e alias afetem a autorização de chaves do KMS. Alterações recentes podem estar visíveis em operações de API antes de afetarem a autorização.

AWS KMSsuporta a chave de contexto de condição global aws:ResourceTag/tag-key, que permite controlar o acesso às chaves KMS com base nas tags da chave KMS. Como várias chaves do KMS podem ter a mesma etiqueta, esse recurso permite que você aplique a permissão a um conjunto selecionado de chaves do KMS. Também é possível alterar facilmente as chaves do KMS no conjunto alterando suas etiquetas.

No AWS KMS, a chave de condição aws:ResourceTag/tag-key tem suporte apenas em políticas do IAM. Ela não é suportada em políticas de chaves, que se aplicam somente a uma chave KMS, ou em operações que não usam uma chave KMS específica, como as operações ListKeysou ListAliases.

Controlar o acesso com etiquetas é uma maneira simples, escalável e flexível de gerenciar permissões. No entanto, se isso não for projetado e gerenciado corretamente, poderá permitir ou negar acesso às chaves do KMS inadvertidamente. Se estiver usando etiquetas para controlar o acesso, considere as seguintes práticas.

  • Use tags para reforçar a prática recomendada do acesso acesso com privilégio mínimo. Conceda às entidades principais do IAM somente as permissões de que eles precisam nas chaves do KMS que elas devem usar ou gerenciar. Por exemplo, use etiquetas para rotular as chaves do KMS usadas para um projeto. Em seguida, dê permissão à equipe do projeto para usar somente chaves do KMS com a etiqueta do projeto.

  • Tenha cuidado ao conceder às entidades principais as permissões kms:TagResource e kms:UntagResource, com as quais elas podem adicionar, editar e excluir etiquetas. Quando você usa etiquetas para controlar o acesso a chaves do KMS, a alteração de uma etiqueta pode dar permissão às entidades principais para usar chaves do KMS que, de outra forma, elas não teriam permissão de usar. Ele também pode negar acesso a chaves do KMS que outras entidades principais exigem para realizar seus trabalhos. Os administradores de chaves que não tiverem permissão para alterar políticas de chaves ou criar concessões poderão controlar o acesso às chaves do KMS se tiverem permissão para gerenciar etiquetas.

    Sempre que possível, use uma condição de política, como aws:RequestTag/tag-key ou aws:TagKeys, paralimitar as permissões de marcação de uma entidade principal para etiquetas ou padrões de etiquetas específicos em chaves do KMS específicas.

  • Revise as entidades principais na sua Conta da AWS que atualmente têm permissões de marcação e desmarcação e ajuste-as, se necessário. Por exemplo, a política de chaves padrão para administradores de chaves do console inclui as permissões kms:TagResource e kms:UntagResource nessa chave do KMS. As políticas do IAM podem conceder permissões de marcação ou desmarcação em todas as chaves do KMS. Por exemplo, a política AWSKeyManagementServicePowerUsergerenciada permite que os diretores marquem, desmarquem e listem as tags em todas as chaves do KMS.

  • Antes de definir uma política que dependa de uma etiqueta, revise as etiquetas nas chaves do KMS da sua Conta da AWS. Certifique-se de que sua política se aplica somente às etiquetas que você pretende incluir. Use CloudTrail registros e CloudWatch alarmes para alertá-lo sobre alterações nas tags que possam afetar o acesso às suas chaves KMS.

  • As condições de políticas baseadas em etiquetas usam correspondência de padrões. Elas não estão vinculadas a uma instância específica de uma etiqueta. Uma política que usa chaves de condição baseadas em etiquetas afeta todas as etiquetas novas e existentes que correspondem ao padrão. Se você excluir e recriar uma etiqueta que corresponde a uma condição de política, a condição se aplicará à nova etiqueta, assim como à antiga.

Por exemplo, considere a seguinte política do IAM. Ele permite que os diretores liguem para as operações GenerateDataKeyWithoutPlaintexte descriptografem somente em chaves KMS em sua conta que estejam na região Ásia-Pacífico (Cingapura) e tenham uma tag. "Project"="Alpha" Você pode anexar essa política a funções no exemplo do projeto Alpha.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyWithResourceTag", "Effect": "Allow", "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "Alpha" } } } ] }

O exemplo de política do IAM a seguir permite que as entidades principais usem qualquer chave dp KMS na conta para determinadas operações de criptografia. Porém, ela proíbe as entidades principais de usar estas operações criptográficas em chaves do KMS com uma tag "Type"="Reserved" ou sem etiqueta "Type".

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMAllowCryptographicOperations", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMDenyOnTag", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Type": "Reserved" } } }, { "Sid": "IAMDenyNoTag", "Effect": "Deny", "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "Null": { "aws:ResourceTag/Type": "true" } } } ] }