Controle de acesso baseado em atributo com tags e AWS Organizations - AWS Organizations

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á.

Controle de acesso baseado em atributo com tags e AWS Organizations

O controle de acesso baseado em atributos permite que você use atributos gerenciados pelo administrador, como tags anexadas a recursos da AWS e identidades da AWS, para controlar o acesso a esses recursos. Por exemplo, você pode especificar que um usuário pode acessar um recurso quando o usuário e o recurso tiverem o mesmo valor para uma determinada tag.

Os recursos marcáveis do AWS Organizations incluem Contas da AWS, a raiz, as unidades organizacionais (UOs) ou as políticas da organização. Quando anexa tags a recursos do Organizations, você pode usar essas tags para controlar quem pode acessar esses recursos. Para isso, adicione elementos Condition às instruções da política de permissões do AWS Identity and Access Management (IAM) que verificam se determinadas chaves e valores de tag estão presentes antes de permitir a ação. Isso permite que você crie uma política do IAM que diga efetivamente "Permitir que o usuário gerencie somente as UOs que têm uma tag com uma chave X e um valor Y" ou "Permitir que o usuário gerencie somente as UOs marcadas com uma chave Z que tem o mesmo valor da chave anexada ao usuário Z".

Você pode basear seus testes de Condition em diferentes tipos de referências de tag em uma política do IAM.

Para obter mais informações sobre o uso de tags para controle de acesso em políticas, consulte Controlar o acesso aos/de usuários e funções do IAM usando tags de recurso do IAM. Para obter a sintaxe completa das políticas de permissão do IAM, consulte a Referência de política JSON do IAM

Verificação das tags anexadas aos recursos especificados na solicitação

Quando faz uma solicitação usando o AWS Management Console, o AWS Command Line Interface (AWS CLI) ou um dos AWS SDKs, você especifica os recursos que deseja acessar com essa solicitação. Se você estiver tentando listar os recursos de um determinado tipo disponíveis, ler ou gravar em um recurso, modificar ou atualizar um recurso, você especifica o recurso a ser acessado como um parâmetro na solicitação. Essas solicitações são controladas pelas políticas de permissões do IAM que você anexa aos seus usuários e funções. Nessas políticas, você pode comparar as tags anexadas ao recurso solicitado e optar por permitir ou negar acesso com base nas chaves e valores dessas tags.

Para verificar uma tag anexada ao recurso, você referencia a tag em um elemento do Condition prefaciando o nome da chave da tag com a seguinte sequência: aws:ResourceTag/

Por exemplo, o exemplo de política a seguir permite que o usuário ou a função execute qualquer operação do AWS Organizations a menos que esse recurso tenha uma tag com a chave department e o valor security. Se essa chave e valor estiverem presentes, a política nega explicitamente operação do UntagResource.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : "organizations:*", "Resource" : "*" }, { "Effect" : "Deny", "Action" : "organizations:UntagResource", "Resource" : "*", "Condition" : { "StringEquals" : { "aws:ResourceTag/department" : "security" } } } ] }

Para obter mais informações sobre como usar esse elemento, consulte Controle de acesso a recurso e aws:ResourceTag no Manual do usuário do IAM.

Verificação de tags anexadas ao usuário ou à função do IAM que está fazendo a solicitação

Você pode controlar o que a pessoa que está fazendo a solicitação (principal) tem permissão para fazer com base nas tags anexadas ao usuário ou à função do IAM dessa pessoa. Para fazer isso, use a chave de condição aws:PrincipalTag/key-name para especificar a tag e o valor que devem ser anexados ao usuário ou à função que está chamando.

O exemplo a seguir mostra como permitir uma ação apenas quando a tag especificada (cost-center) tiver o mesmo valor no usuário principal que chama a operação e no recurso que está sendo acessado pela operação. Neste exemplo, o usuário que chama só pode iniciar e interromper uma instância do Amazon EC2 se a instância estiver marcada com o mesmo valor cost-center que o usuário.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "ec2:startInstances", "ec2:stopInstances" ], "Resource": "*", "Condition": {"StringEquals": {"ec2:ResourceTag/cost-center": "${aws:PrincipalTag/cost-center}"}} } }

Para obter mais informações sobre como usar esse elemento, consulte Controle de acesso dos usuários principais do IAM e aws:PrincipalTag no Manual do usuário do IAM.

Verificar as tags que estão incluídas como parâmetros na solicitação

Várias operações permitem que você especifique tags como parte da solicitação. Por exemplo, ao criar um recurso, você pode especificar as tags anexadas ao novo recurso. Você pode especificar um elemento Condition que usa aws:TagKeys para permitir ou negar a operação baseado em se uma chave de tag específica, ou um conjunto de chaves, está incluída na solicitação. Este operador de comparação não se importa com o valor que a tag contém. Ele só verifica se uma tag com a chave especificada está presente.

Para verificar a chave de tag, ou uma lista de chaves, especifique um elemento Condition com a seguinte sintaxe:

"aws:TagKeys": [ "tag-key-1", "tag-key-2", ... , "tag-key-n" ]

Você pode usar ForAllValues: para prefaciar o operador de comparação para garantir que todas as chaves na solicitação devam corresponder a uma das chaves especificadas na política. Por exemplo, o exemplo de política a seguir só permite qualquer operação do Organizations se todas as três chaves de tags especificadas estiverem presentes na solicitação.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "organizations:*", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "department", "costcenter", "manager" ] } } } }

Ou então, você pode usar ForAnyValue: para prefaciar o operador de comparação para garantir que pelo menos uma das chaves na solicitação deva corresponder a uma das chaves especificadas na política. Por exemplo, o exemplo de política a seguir só permite uma operação do Organizations se pelo menos uma das chaves de tags especificadas estiverem presentes na solicitação.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "organizations:*", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": [ "stage", "region", "domain" ] } } } }

Várias operações permitem especificar tags na solicitação. Por exemplo, ao criar um recurso, você pode especificar as tags anexadas ao novo recurso. É possível comparar um par de chave/valor na política com um par de chave/valor incluído na solicitação. Para fazer isso, referencie a tag em um elemento Condition prefaciando o nome da chave de tag com a seguinte sequência: aws:RequestTag/key-name, depois, especifique o valor da tag que deve estar presente.

Por exemplo, o exemplo de política a seguir nega qualquer solicitação do usuário ou da função para criar uma Conta da AWS na qual a solicitação não tenha a tag costcenter, ou forneça essa tag com um valor diferente de 1, 2 ou 3.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "organizations:CreateAccount", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/costcenter": "true" } } }, { "Effect": "Deny", "Action": "organizations:CreateAccount", "Resource": "*", "Condition": { "ForAnyValue:StringNotEquals": { "aws:RequestTag/costcenter": [ "1", "2", "3" ] } } } ] }

Para obter mais informações sobre como usar esses elementos, consulte aws:TagKeys e aws:RequestTag no Manual do usuário do IAM.