

# Conceder permisos para etiquetar recursos de Amazon EC2 durante la creación
<a name="supported-iam-actions-tagging"></a>

Algunas acciones de la API de Amazon EC2 de creación de recursos le permiten especificar etiquetas al crear el recurso. Puede utilizar etiquetas de recursos para implementar el control basado en atributos (ABAC). Para obtener más información, consulte [Etiquetar los recursos](Using_Tags.md#tag-resources) y [Controle el acceso mediante acceso basado en atributos](iam-policies-for-amazon-ec2.md#control-access-with-tags).

Para permitir que los usuarios etiqueten los recursos durante su creación, es preciso que tengan permisos para utilizar la acción que crea el recurso (por ejemplo, `ec2:RunInstances` o `ec2:CreateVolume`). Si se especifican etiquetas en la acción de creación de recursos, Amazon realiza una autorización adicional en la acción `ec2:CreateTags` para verificar que los usuarios tengan permisos para crear etiquetas. Por lo tanto, los usuarios también deben tener permisos explícitos para usar la acción `ec2:CreateTags`. 

En la definición de la política de IAM de la acción `ec2:CreateTags`, utilice el elemento `Condition` con la clave de condición `ec2:CreateAction` para otorgar permisos de etiquetado a la acción que crea el recurso.

En el ejemplo siguiente se muestra una política que permite a los usuarios iniciar instancias y aplicar cualquier etiqueta a las instancias y los volúmenes durante el lanzamiento. No se permite a los usuarios etiquetar ningún recurso (no pueden llamar directamente a la acción `ec2:CreateTags`).

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

Igualmente, la siguiente política permite a los usuarios crear volúmenes y aplicar cualquier etiqueta a los volúmenes durante la creación de estos. No se permite a los usuarios etiquetar ningún recurso (no pueden llamar directamente a la acción `ec2:CreateTags`).

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateVolume"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "CreateVolume"
          }
       }
    }
  ]
}
```

La acción `ec2:CreateTags` solo se evalúa si se aplican etiquetas durante la acción de creación de recursos. Por lo tanto, un usuario que tenga permisos para crear un recurso (suponiendo que no existan condiciones de etiquetado) no necesita permisos para utilizar la acción `ec2:CreateTags` si no se especifica ninguna etiqueta en la solicitud. Sin embargo, si el usuario intenta crear un recurso con etiquetas, la solicitud dará un error si el usuario no tiene permisos para utilizar la acción `ec2:CreateTags`.

La acción `ec2:CreateTags` también se evalúa si se proporcionan etiquetas en una plantilla de lanzamiento. Para ver una política de ejemplo, consulte [Etiquetas en una plantilla de lanzamiento](ExamplePolicies_EC2.md#iam-example-tags-launch-template).

## Controlar el acceso a etiquetas específicas
<a name="control-tagging"></a>

Puede utilizar condiciones adicionales en el elemento `Condition` de las políticas de IAM para controlar las claves y los valores de etiqueta que se pueden aplicar a los recursos.

Las siguientes claves de condición se pueden utilizar con los ejemplos de la sección anterior:
+ `aws:RequestTag`: indicar que una clave de etiqueta o una clave y valor de etiqueta determinados deben existir en una solicitud. También se pueden especificar otras etiquetas en la solicitud.
  + Debe utilizarse con el operador de condición `StringEquals` para aplicar la combinación de valor y clave de etiqueta específica; por ejemplo, para aplicar la etiqueta `cost-center`=`cc123`:

    ```
    "StringEquals": { "aws:RequestTag/cost-center": "cc123" }
    ```
  + Debe utilizarse con el operador de condición `StringLike` para aplicar una clave de etiqueta específica en la solicitud; por ejemplo, para aplicar la clave de etiqueta `purpose`:

    ```
    "StringLike": { "aws:RequestTag/purpose": "*" }
    ```
+ `aws:TagKeys`: aplicar las claves de etiqueta que se usan en la solicitud.
  + Debe utilizarse con el modificador `ForAllValues` para aplicar claves de etiqueta específicas si estas se proporcionan en la solicitud (si se especifican etiquetas en la solicitud, solo se permiten claves de etiqueta específicas; no se permite ninguna etiqueta más). Por ejemplo, se permiten las claves de etiqueta `environment` o `cost-center`:

    ```
    "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] }
    ```
  + Debe utilizarse con el modificador `ForAnyValue` para aplicar la presencia de como mínimo una de las claves de etiqueta especificadas en la solicitud. Por ejemplo, debe haber al menos una de las claves de etiqueta `environment` o `webserver` en la solicitud:

    ```
    "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }
    ```

Estas claves de condición se pueden aplicar a las acciones que crean recursos y admiten el etiquetado, así como a las acciones `ec2:CreateTags` y `ec2:DeleteTags`. Para saber si una acción de la API de Amazon EC2 admite el etiquetado, consulte [Acciones, recursos y claves de condición para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

Para obligar a los usuarios a especificar etiquetas cuando crean un recurso, debe utilizar la clave de condición `aws:RequestTag` o la clave de condición `aws:TagKeys` con el modificador `ForAnyValue` en la acción de creación del recurso. La acción `ec2:CreateTags` no se evalúa si un usuario no especifica etiquetas para la acción de creación del recurso.

En cuanto a las condiciones, la clave de condición no distingue entre mayúsculas y minúsculas, mientras que el valor de condición sí. Por lo tanto, para aplicar la distinción entre mayúsculas y minúsculas de una clave de etiqueta, utilice la clave de condición `aws:TagKeys`, donde la clave de etiqueta se especifica como valor en la condición.

Para ver ejemplos de políticas de IAM, consulte [Políticas de ejemplo para controlar el acceso a la API de Amazon EC2](ExamplePolicies_EC2.md). Para obtener más información, consulte [Condiciones con varias claves o valores de contexto](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-logic-multiple-context-keys-or-values.html) en la *Guía del usuario de IAM*.