Controlar o acesso a etiquetas - AWS Key Management Service

Controlar o acesso a etiquetas

Para adicionar, visualizar e excluir etiquetas, seja no console do AWS KMS do usando a API, as entidades principais precisam de permissões de marcação. Você pode fornecer essas permissões em políticas de chaves. Também é possível fornecê-las em políticas do IAM (incluindo políticas de endpoint da VPC), mas somente se permitido pela política de chaves. A política gerenciada AWSKeyManagementServicePowerUser permite que entidades principais marquem, desmarquem e listem etiquetas em todas as chaves do KMS que a conta é capaz de acessar.

Também é possível pode limitar essas permissões usando chaves de condição globais da AWS para etiquetas. No AWS KMS, essas condições podem controlar o acesso a operações de marcação, como TagResource e UntagResource.

nota

Tenha cuidado ao conceder permissão às entidades principais para gerenciar etiquetas e aliases. Alterar uma etiqueta ou um alias pode conceder ou negar uma permissão à chave gerenciada pelo cliente. Para obter mais detalhes, consulte ABAC para AWS KMS e Usar etiquetas para controlar o acesso a chaves do KMS.

Para mais informações e exemplos de políticas, consulte Controlar o acesso baseado em chaves de etiqueta, no Guia do Usuário do IAM.

As permissões para criar e gerenciar aliases funcionam como a seguir.

kms:TagResource

Permite que as entidades principais adicionem ou editem etiquetas. Para adicionar etiquetas ao criar uma chave do KMS, a entidade principal deve ter permissão em uma política do IAM que não esteja restrita a chaves do KMS específicas.

kms:ListResourceTags

Permite que as entidades principais visualizem etiquetas em chaves do KMS.

kms:UntagResource

Permite que as entidades principais excluam etiquetas de chaves do KMS.

Permissões de etiquetas em políticas

Você pode fornecer permissões de marcação em uma política de chaves ou política do IAM. O seguinte exemplo de política de chaves concede permissão de marcação a usuários selecionados na chave do KMS. Ele concede a todos os usuários que podem assumir os exemplos de funções Administrador ou Desenvolvedor permissão para visualizar etiquetas.

{ "Version": "2012-10-17", "Id": "example-key-policy", "Statement": [ { "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow all tagging permissions", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/LeadAdmin", "arn:aws:iam::111122223333:user/SupportLead" ]}, "Action": [ "kms:TagResource", "kms:ListResourceTags", "kms:UntagResource" ], "Resource": "*" }, { "Sid": "Allow roles to view tags", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:role/Administrator", "arn:aws:iam::111122223333:role/Developer" ]}, "Action": "kms:ListResourceTags", "Resource": "*" } ] }

Para conceder permissão de marcação de entidades principais em várias chaves do KMS, é possível usar uma política do IAM. Para que essa política seja eficiente, a política de chaves de cada chave do KMS deve permitir que a conta utilize políticas do IAM para controlar o acesso à chave do KMS.

Por exemplo, a seguinte política do IAM permite que as entidades principais criem chaves do KMS. Ela também permite que eles criem e gerenciem etiquetas em todas as chaves do KMS na conta especificada. Essa combinação permite que as entidades principais usem o parâmetro Tags da operação CreateKey para adicionar etiquetass a uma chave do KMS enquanto elas a criam.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyCreateKeys", "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }, { "Sid": "IAMPolicyTags", "Effect": "Allow", "Action": [ "kms:TagResource", "kms:UntagResource", "kms:ListResourceTags" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } ] }

Limitar permissões de etiquetas

É possível limitar permissões de marcação usando condições de política. As seguintes condições de política podem ser aplicadas às permissões kms:TagResource e kms:UntagResource. Por exemplo, você pode usar a condição aws:RequestTag/tag-key para permitir que uma entidade principal adicione apenas etiquetas específicas, ou pode impedir que uma entidade principal adicione etiquetas com chaves de etiqueta específicas. Você também pode usar a condição kms:KeyOrigin para impedir que as entidades principais marquem ou desmarcem chaves do KMS com material de chave importado.

Como prática recomendada ao usar etiquetas para controlar o acesso a chaves do KMS, use a chave de condição aws:RequestTag/tag-key ou aws:TagKeys para determinar quais etiquetas (ou chaves de etiqueta) são permitidas.

Por exemplo, a política do IAM a seguir é semelhante à anterior. No entanto, essa política permite que as entidades principais criem etiquetas (TagResource) e excluam etiquetas UntagResource somente para etiquetas com um chave de etiqueta Project.

Como TagResource e UntagResourcepodem incluir várias etiquetas, você deve especificar um operador de conjunto ForAllValues ou ForAnyValue definido com a condição aws:TagKeys. O operador ForAnyValue exige que pelo menos uma das chaves de etiqueta na solicitação corresponda a uma das chaves de etiqueta na política. O operador ForAllValues requer que todas as chaves de etiqueta na solicitação correspondam a uma das chaves de etiqueta na política. O operador ForAllValuestambém retorna true quando não há etiquetas na solicitação, mas TagResource e UntagResource falharão quando nenhuma etiqueta estiver especificada. Para detalhes sobre os operadores de conjunto, consulteUsar várias chaves e valores, no Manual do usuário do IAM.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyCreateKey", "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }, { "Sid": "IAMPolicyViewAllTags", "Effect": "Allow", "Action": "kms:ListResourceTags", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPolicyManageTags", "Effect": "Allow", "Action": [ "kms:TagResource", "kms:UntagResource" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringEquals": {"aws:TagKeys": "Project"} } } ] }