Como faço para criar uma política do IAM para restrição baseada em tags com as chaves de condição PrincipalTag, ResourceTag, RequestTag e TagKeys?
Quero criar uma política do AWS Identity and Access Management (IAM) para restrição baseada em tags. Quero usar as chaves de condição PrincipalTag, ResourceTag, requestTag e TagKeys.
Resolução
Os exemplos de políticas do IAM a seguir usam chaves de condição para criar restrições baseadas em tags.
Observação: para determinar as ações de API que você pode realizar, é uma prática recomendada revisar a documentação da API para o serviço que você está usando.
Chave de condição PrincipalTag
Use a chave de condição aws:PrincipalTag/tag-key para combinar a tag anexada à entidade principal que está fazendo a solicitação com a tag na política do IAM.
O exemplo de política do IAM a seguir fornece restrições para um bucket do Amazon Simple Storage Service (Amazon S3). A ação PutObject do Amazon S3 negou acesso ao bucket a todos os usuários, exceto aqueles com o título Product-Manager:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllButProductManagers", "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::productionbucket/*" ], "Condition": { "StringNotEquals": { "aws:PrincipalTag/job-title": "Product-Manager" } } } ] }
Chave de condição ResourceTag
Use a chave de condição aws:ResourceTag/tag-key para comparar o par chave-valor da tag especificado na política do IAM com o par chave-valor anexado ao recurso da AWS. Para obter mais informações, consulte Controlar o acesso aos recursos do AWS.
Você pode usar essa chave de condição com a versão global aws:ResourceTag e os serviços da AWS, como ec2:ResourceTag. Para obter mais informações, consulte Actions, resources, and condition keys for AWS services.
O exemplo de política do IAM a seguir permite que os usuários iniciem, parem e encerrem instâncias que estão no ambiente de teste:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOnlyForTestEnvironment", "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ec2:ResourceTag/Env": "test" } } } ] }
Chave de condição RequestTag
Use a chave de condição aws:RequestTag/tag-key para comparar o par chave-valor passado na solicitação do usuário com o par de tags especificado na política do IAM. Você pode usar essa chave de condição para ações que criam um recurso ou uma tag de recurso e verificam o valor da tag.
O exemplo de política a seguir força os usuários a criar uma tag Env específica quando criam um volume do Amazon Elastic Block Store (Amazon EBS). Env deve ter valores Dev, Prod ou QA:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateVolumeWithEnvTag", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "StringEquals": { "aws:RequestTag/Env": [ "Dev", "Prod", "QA" ] } } } ] }
Chave de condição TagKeys
Use a chave de condição aws:TagKeys para comparar as chaves de tag em uma solicitação com as chaves especificadas na política do IAM. Essa chave de condição valida as chaves de tag anexadas a um recurso.
Como você pode definir vários pares de valores-chave de tag em uma solicitação, a solicitação pode ter vários valores. Para comparar esses valores, use os operadores do conjunto ForAllValues ou ForAnyValue.
O exemplo de política a seguir restringe as tags criadas em um recurso da AWS. As tags Env e CostCenter são as únicas chaves de tag que os usuários podem criar com um novo volume do Amazon EBS. O uso do operador de conjunto ForAllValues com aws:TagKeys permite que os usuários anexem somente as tags necessárias ao recurso da AWS. Essa política não exige que os usuários forneçam essas chaves de tag na solicitação de criação do recurso. Em vez disso, a política não permite que os usuários criem tags com outros pares de valores-chave:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "Env", "CostCenter" ] } } } ] }
Informações relacionadas
Tutorial do IAM: definir permissões para acessar recursos da AWS com base em etiquetas
Conteúdo relevante
- AWS OFICIALAtualizada há um ano