Ir para o conteúdo

Como as chaves condicionais PrincipalTag, ResourceTag, RequestTag e TagKeys controlam o acesso nas políticas do IAM?

4 minuto de leitura
0

Quero usar chaves de condição baseadas em tags PrincipalTag, ResourceTag, RequestTag e TagKeys em uma política do AWS Identity and Access Management (AWS IAM) para controlar o acesso aos recursos da AWS.

Resolução

Os exemplos de políticas do IAM a seguir usam chaves de condição para controlar o acesso aos recursos da AWS com tags.

Para determinar as ações de API que é possível realizar, é uma prática recomendada consultar a documentação da API para o serviço usado.

Chave de condição PrincipalTag

Use a chave de condição aws:PrincipalTag/tag-key para comparar as seguintes tags:

  • A tag anexada à entidade principal que faz a solicitação
  • A tag especificada na política do IAM

No exemplo a seguir, a ação PutObject do Amazon Simple Storage Service (Amazon S3) nega 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 mais informações, consulte Controlling access to AWS resources (Controlar o acesso aos recursos da AWS).

É possível usar a chave de condição aws:ResourceTag/tag-key com a versão global aws:ResourceTag e serviços da AWS, como ec2:ResourceTag.

No exemplo a seguir, a política do IAM permite que os usuários iniciem, parem e encerrem instâncias do Amazon Elastic Compute Cloud (Amazon EC2) que estão no ambiente 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 na solicitação do usuário com o par de tags especificado na política do IAM. É possível usar essa chave de condição para controlar ações que criam recursos e validar tags durante essas operações.

No exemplo a seguir, a política do IAM permite que os usuários criem volumes do Amazon Elastic Block Store (Amazon EBS) somente quando incluem uma tag Env com os 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 aquelas especificadas na política do IAM. Essa chave de condição valida as chaves de tag anexadas a um recurso.

Quando uma solicitação contém vários pares de valor-chave, use os operadores de conjunto ForAllValues ou ForAnyValue para comparar esses valores.

No exemplo a seguir, a política do IAM restringe a criação de tags nos recursos da AWS. Ela permite que os usuários criem somente as tags Env e CostCenter quando criam um novo volume do Amazon EBS. O operador de conjunto ForAllValues com a chave de condição aws:TagKeys permite que os usuários anexem as tags necessárias ao recurso. A política torna essas chaves de tag opcionais durante a criação de recursos e impede a criação de tags com outros pares de valor-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