¿Cómo puedo crear una política de IAM para la restricción basada en etiquetas con las claves de condición PrincipalTag, ResourceTag, RequestTag y TagKeys?

4 minutos de lectura
0

Quiero crear una política de AWS Identity and Access Management (IAM) para la restricción basada en etiquetas. ¿Cómo puedo utilizar las claves de condición PrincipalTag, ResourceTag, RequestTag y TagKeys?

Breve descripción

Utilice las siguientes políticas de ejemplo de IAM para crear restricciones basadas en etiquetas con claves de condición para su caso de uso.

Solución

Clave de condición PrincipalTag

La clave de condición aws:PrincipalTag se utiliza para establecer coincidencias entre la etiqueta asociada a la entidad principal que realiza la solicitud y la etiqueta en la política de IAM. El valor de la clave PrincipalTag se compara con el valor de la etiqueta de IAM con una clave coincidente, si existe en la entidad principal de la solicitud.

En el siguiente ejemplo de política de IAM se proporcionan restricciones para un bucket de Amazon Simple Storage Service (Amazon S3). La acción PutObject de Amazon S3 ha denegado el permiso para acceder al bucket a todos los usuarios, salvo los que tienen 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

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

Durante la evaluación de la política de IAM, la etiqueta ResourceTag se compara con la etiqueta de IAM. El valor de la clave ResourceTag se compara con el valor de la etiqueta de IAM con un par clave-valor coincidente, si existe uno para el recurso de AWS. Esta clave de condición se puede utilizar con la versión global aws:ResourceTag y servicios de AWS, como ec2:ResourceTag. Para obtener más información, consulte Acciones, recursos y claves de condición de los servicios de AWS.

El siguiente ejemplo de política de IAM permite a los usuarios iniciar, detener y terminar instancias 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

La clave de condición aws:RequestTag/tag-key se utiliza para comparar el par clave-valor transferido en la solicitud del usuario con el par de etiquetas especificado en la política de IAM. La clave de condición está disponible para las acciones que crean un recurso o una etiqueta en un recurso, y comprueba el valor de la etiqueta.

Fíjese, por ejemplo, en la siguiente política de IAM. Obliga a los usuarios a crear una etiqueta específica «Env» con los valores «Dev», «Prod» o «QA» al crear un volumen de 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"
          ]
        }
      }
    }
  ]
}

Clave de condición TagKeys

La clave de condición aws:TagKeys se utiliza para comparar las claves de etiqueta en una solicitud con las especificadas en la política de IAM. El valor de la clave TagKeys se compara con la lista de etiquetas de la solicitud de recursos de AWS. La clave de condición TagKeys se utiliza para validar los valores de tag-keys asociadas a un recurso.

Dado que puede definir varios pares clave-valor de etiqueta en una solicitud, dicha solicitud puede tener diversos valores. Estos valores se pueden comparar con los operadores colectivos ForAllValues o ForAnyValue.

En la siguiente política de ejemplo se restringen las etiquetas creadas en un recurso de AWS. Las etiquetas «Env» y «CostCenter» son las únicas claves de etiqueta que los usuarios pueden crear con un nuevo volumen de Amazon EBS. El uso del operador colectivo ForAllValues con aws:TagKeys hace que los usuarios solo puedan asociar las etiquetas requeridas en el recurso de AWS. De este modo, no hace falta que los usuarios proporcionen estas claves de etiqueta en la solicitud de creación de recursos, pero se impide que creen 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

Control del acceso durante solicitudes de AWS

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año