Saltar al contenido

¿Cómo controlan las claves de condición PrincipalTag, ResourceTag, RequestTag y TagKeys el acceso a las políticas de IAM?

4 minutos de lectura
0

Quiero usar las claves de condición basadas en etiquetas PrincipalTag, ResourceTag, RequestTag y TagKeys en una política de AWS Identity and Access Management (IAM) para controlar el acceso a los recursos de AWS.

Resolución

Los siguientes ejemplos de políticas de IAM utilizan claves de condición para controlar el acceso a los recursos de AWS mediante etiquetas.

Para determinar las acciones de la API que puedes realizar, se recomienda revisar la documentación de la API del servicio que uses.

Clave de condición PrincipalTag

Usa la clave de condición aws:PrincipalTag/tag-key para comparar las siguientes etiquetas:

  • La etiqueta que se adjunta a la entidad principal que hace la solicitud
  • La etiqueta que especificas en la política de IAM

En el siguiente ejemplo, la acción PutObject de Amazon Simple Storage Service (Amazon S3) deniega el acceso al bucket a todos los usuarios, excepto a aquellos con el 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"
        }
      }
    }
  ]
}

Clave de condición ResourceTag

Usa la clave de condición aws:ResourceTag/tag-key para comparar el par clave-valor especificado en la política de IAM con el par clave-valor asociado al registro de AWS. Para más información, consulta Control del acceso a los recursos de AWS.

Puedes usar la clave de condición aws:ResourceTag/Tag-key con la versión global aws:ResourceTag y los servicios de AWS, como ec2:ResourceTag.

En el siguiente ejemplo, la política de IAM permite a los usuarios iniciar, detener y finalizar las instancias de Amazon Elastic Compute Cloud (Amazon EC2) que se encuentran en el entorno de prueba:

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

Clave de condición RequestTag

Usa la clave de condición aws:RequestTag/tag-key para comparar el par clave-valor de la solicitud del usuario con el par de etiquetas especificado en la política de IAM. Puedes usar esta clave de condición para controlar las acciones que crean recursos y para validar las etiquetas durante estas operaciones.

En el siguiente ejemplo, la política de IAM permite a los usuarios crear volúmenes de Amazon Elastic Block Store (Amazon EBS) solo cuando incluyen una etiqueta Env con valores Dev, Prod o 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"
          ]
        }
      }
    }
  ]
}

Clave de condición TagKeys

Usa la clave de condición aws:TagKeys para comparar las claves de etiqueta de una solicitud con aquellas que especifiques en la política de IAM. Esta clave de condición valida las claves de etiqueta que se adjuntan a un recurso.

Cuando una solicitud contiene varios pares clave-valor, usa los operadores de conjunto ForAllValues o ForAnyValue para comparar estos valores.

En el siguiente ejemplo, la política de IAM restringe la creación de etiquetas en los recursos de AWS. Permite a los usuarios crear solo las etiquetas Env y CostCenter cuando los usuarios crean un nuevo volumen de Amazon EBS. El operador de conjunto ForAllValues con la clave de condición aws:TagKeys permite a los usuarios adjuntar las etiquetas necesarias al recurso. La política hace que estas claves de etiqueta sean opcionales durante la creación de recursos e impide la creación de etiquetas con otros pares clave-valor:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "Env",
            "CostCenter"
          ]
        }
      }
    }
  ]
}

Información relacionada

Tutorial de IAM: definición de permisos para acceder a los recursos de AWS en función de etiquetas