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?

4 minuto de leitura
0

Quero criar uma política AWS Identity and Access Management (IAM) para restrição baseada em tags. Como faço para usar as chaves de condição PrincipalTag, ResourceTag, RequestTag e TagKeys?

Breve descrição

Use os seguintes exemplos de políticas do IAM para criar uma restrição baseada em tags com chaves de condição para seu caso de uso.

Resolução

Chave de condição PrincipalTag

A chave de condição aws:PrincipalTag é usada para combinar a tag anexada à entidade principal que está fazendo a solicitação com a tag na política do IAM. O valor da chave PrincipalTag é comparado ao valor da tag IAM com a chave de tag correspondente, se presente na entidade principal da solicitação.

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 a permissão do 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

A chave de condição aws:ResourceTag/tag-key compara o par de valores-chave da tag especificado na política do IAM ao par de valores-chave anexado ao recurso da AWS. Para mais informações, consulte Controlling access to AWS resources (Controlar o acesso aos recursos da AWS).

Durante a avaliação da política do IAM, a tag ResourceTag é comparada à tag do IAM. O valor da chave ResourceTag é comparado ao valor da tag do IAM com par de valores-chave correspondente, se presente para o recurso da AWS. Essa chave de condição pode ser usada com a versão global aws:ResourceTag e serviços da AWS, como ec2:ResourceTag. Para mais informações, consulte Actions, resources, and condition keys for AWS services (Ações, recursos e chaves de condição para serviços da AWS).

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

A chave de condição aws:RequestTag/tag-key é usada para comparar o par de valores-chave passado na solicitação do usuário ao par de tags especificado na política do IAM. A chave de condição está disponível para ações que criam um recurso ou uma tag em um recurso e verifica o valor da tag.

Por exemplo, consulte a seguinte política do IAM. Ela obriga os usuários a criar uma tag específica "Env" com valores "Dev", "Prod" ou "QA" ao criar um volume do Amazon Elastic Block Store (Amazon EBS).

{
  "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

A chave de condição aws:TagKeys é usada para comparar as chaves de tag de uma solicitação às chaves especificadas na política do IAM. O valor da chave TagKeys é comparado à lista de tags da solicitação de recursos da AWS. A chave de condição TagKeys é usada para validar 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. Esses valores podem ser comparados usando os operadores de 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 limita os usuários a anexar apenas as tags necessárias ao recurso da AWS. Não é necessário que os usuários forneçam essas chaves de tag na solicitação de criação de recursos, mas eles não poderão criar 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 os recursos da AWS com base em tags

Controlar o acesso durante solicitações da AWS

AWS OFICIAL
AWS OFICIALAtualizada há um ano