Controlar o acesso a recursos da AWS usando tags - AWS Identity and Access Management

Controlar o acesso a recursos da AWS usando tags

Você pode usar etiquetas para controlar o acesso aos recursos da AWS que forem compatíveis com o etiquetamento, incluindo recursos do IAM. Também é possível etiquetar usuários e funções do IAM para controlar o que eles podem acessar. Para saber como etiquetar usuários e funções do IAM, consulte Recursos de etiquetas do IAM. Além disso, você pode controlar o acesso aos seguintes recursos do IAM: políticas gerenciadas pelo cliente, provedores de identidade do IAM, perfis de instância, certificados de servidor e dispositivos com MFA virtuais. Para visualizar um tutorial de como criar e testar uma política que permite que funções do IAM com etiquetas de entidade de segurança acessem recursos com etiquetas correspondentes, consulte Tutorial do IAM: Definir permissões para acessar recursos da AWS com base em etiquetas. Use as informações na seção a seguir para controlar o acesso a outros recursos da AWS, incluindo recursos do IAM, sem etiquetar usuários ou funções do IAM.

Antes de usar tags para controlar o acesso aos recursos da AWS, você deve entender como a AWS concede acesso. A AWS é composta por conjuntos de recursos. Uma instância do Amazon EC2 é um recurso. Um bucket do Amazon S3 é um recurso. É possível usar a API da AWS, a AWS CLI ou o AWS Management Console para executar uma operação, como a criação de um bucket no Amazon S3. Ao fazer isso, você envia uma solicitação para essa operação. Sua solicitação especifica uma ação, um recurso, uma entidade principal (usuário ou função), uma conta principal e qualquer informação necessária. Todas essas informações fornecem o contexto.

O AWS verifica se você (a entidade principal) está autenticado (cadastrado) e autorizado (tem permissão) para executar a ação especificada no recurso especificado. Durante a autorização, o AWS verifica todas as políticas aplicáveis ao contexto da sua solicitação. A maioria das políticas é armazenada no AWS, como documentos JSON e especifica as permissões para as entidades principais. Para obter mais informações sobre os tipos e os usos de políticas, consulte Políticas e permissões no IAM.

A AWS autorizará a solicitação somente se cada parte de sua solicitação tiver permissão concedida pelas políticas. Para visualizar um diagrama e saber mais sobre a infraestrutura do IAM, consulte Como o IAM funciona. Para obter detalhes sobre como o IAM determina se uma solicitação é permitida, consulte Lógica da avaliação de política.

As etiquetas devem ser levadas em consideração nesse processo porque podem ser anexadas ao recurso ou transmitidas na solicitação para serviços que oferecem suporte a marcação. Para controlar o acesso com base em tags, forneça informações sobre a tag no elemento de condição de uma política. Para saber se um serviço da AWS oferece suporte ao controle de acesso usando tags, consulte Serviços da AWS que funcionam com o IAM e procure os serviços que contêm Sim na coluna ABAC. Selecione o nome do serviço para visualizar a documentação de controle de acesso e a autorização desse serviço.

Depois, é possível criar uma política do IAM que permite ou nega o acesso a um recurso com base na etiqueta desse recurso. Nessa política, é possível usar as chaves de condição da tag para controlar o acesso a qualquer um dos seguintes:

  • Recurso: controle o acesso aos recursos de produtos da AWS com base nas etiquetas desses recursos. Para isso, use a chave de condição ResourceTag/key-name caso queira permitir o acesso ao recurso com base nas tags que estão anexadas ao recurso.

  • Solicitação: controle quais etiquetas podem ser transmitidas em uma solicitação. Para fazer isso, use a chave de condição aws:RequestTag/key-name para especificar quais pares de chave-valor de tag podem ser transmitidos em uma solicitação para aplicar uma tag em um recurso da AWS.

  • Qualquer parte do processo de autorização: use a chave de condição aws:TagKeys para controlar se as chaves de etiquetas específicas podem estar em uma solicitação.

Você pode criar uma política do IAM visualmente, usando JSON ou importando uma política gerenciada existente. Para obter detalhes, consulte Criação de políticas do IAM.

nota

Alguns serviços permitem que os usuários especifiquem etiquetas ao criar o recurso, caso tenham permissões para usar a ação que cria o recurso.

Controlar o acesso aos recursos do AWS

É possível usar condições em suas políticas do IAM para controlar o acesso aos recursos da AWS com base nas etiquetas desse recurso. Você pode fazer isso usando a chave de condição global aws:ResourceTag/tag-key ou uma chave específica do serviço. Alguns serviços oferecem suporte apenas à versão dessa chave que é específica do serviço e não à versão global.

Atenção

Não tente controlar quem pode passar por uma função marcando a função e, em seguida, usando a chave de condição ResourceTag em uma política com a ação iam:PassRole. Os resultados dessa abordagem não são confiáveis. Para obter mais informações sobre as permissões necessárias para transmitir uma função a um serviço, consulte Conceder permissões a um usuário para passar uma função para um serviço da AWS.

Este exemplo mostra como é possível criar uma política baseada em identidade que permita iniciar ou interromper instâncias do Amazon EC2. Essas operações são permitidas apenas se a etiqueta Owner da instância tiver o valor do nome do usuário. Esta política define permissões para acesso programático e do console.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringEquals": {"aws:ResourceTag/Owner": "${aws:username}"} } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }

É possível anexar essa política aos usuários do IAM na sua conta. Se um usuário chamado richard-roe tentar iniciar uma instância do Amazon EC2, a instância deve ser etiquetada como Owner=richard-roe ou owner=richard-roe. Caso contrário, o acesso será negado a ele. A chave de tag Owner corresponde a Owner e owner porque os nomes da chave de condição não fazem distinção entre maiúsculas e minúsculas. Para ter mais informações, consulte Elementos de política JSON do IAM: Condition.

Este exemplo mostra como criar uma política baseada em identidade que use a etiqueta team de entidade principal no ARN do recurso. A política concede permissão para excluir filas do Amazon Simple Queue Service, mas somente se o nome da fila começar com o nome da equipe seguido de -queue. Por exemplo, qa-queue se qa for o nome da equipe para a etiqueta da entidade principal team.

{ "Version": "2012-10-17", "Statement": { "Sid": "AllQueueActions", "Effect": "Allow", "Action": "sqs:DeleteQueue", "Resource": "arn:aws:sqs:us-east-2::${aws:PrincipalTag/team}-queue" } }

Controlar o acesso durante solicitações do AWS

É possível usar condições em suas políticas do IAM para controlar quais pares de chave-valor da tag podem ser passados em uma solicitação que aplica tags a um recurso da AWS.

Este exemplo mostra como você pode criar uma política baseada em identidade que permita usar a ação CreateTags do Amazon EC2 para anexar tags a uma instância. É possível anexar tags somente se a tag contiver a chave environment e os valores production ou preprod. Se quiser, você poderá usar o modificador ForAllValues com a chave de condição aws:TagKeys para indicar que somente a chave environment é permitida na solicitação. Isso impede que os usuários incluam outras chaves, mesmo acidentalmente, ao usar Environment em vez de environment.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": [ "preprod", "production" ] }, "ForAllValues:StringEquals": {"aws:TagKeys": "environment"} } } }

Controlar o acesso com base em chaves de tag

É possível usar uma condição em suas políticas do IAM para controlar se as chaves de etiquetas específicas podem ser usadas em uma solicitação.

Ao usar políticas para controlar o acesso usando etiquetas, convém usar a chave de condição aws:TagKeys. Os serviços da AWS que oferecem suporte a etiquetas podem permitir que você crie vários nomes de chaves de etiqueta que diferem apenas em termos de maiúsculas ou minúsculas, como etiquetar uma instância do Amazon EC2 com stack=production e Stack=test. Os nomes das chaves não diferenciam maiúsculas de minúsculas em condições da política. Isso significa que, se você especificar "aws:ResourceTag/TagKey1": "Value1" no elemento de condição da política, a condição corresponderá a uma chave de tag de recurso chamada TagKey1 ou tagkey1, mas não ambas. Para evitar etiquetas duplicadas com uma chave que varia de acordo com o caso, use a condição aws:TagKeys para definir as chaves de etiqueta que seus usuários podem aplicar ou use políticas de etiquetas, disponíveis no AWS Organizations. Para obter mais informações, consulte as Tag Policies (Políticas de etiquetas) no Guia do usuário do Organizations.

Este exemplo mostra como você pode criar uma política baseada em identidade que permita criar e marcar um segredo do Secrets Manager, mas apenas com as chaves de tag environment ou cost-center. A condição Null garante que a condição seja avaliada como false se não houver tags na solicitação.

{ "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:TagResource" ], "Resource": "*", "Condition": { "Null": { "aws:TagKeys": "false" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "environment", "cost-center" ] } } }