Amazon Elastic Compute Cloud
Guía del usuario de instancias de Linux

Permisos de nivel de recursos admitidos para las acciones de la API de Amazon EC2

Los permisos de nivel de recursos se refieren a la posibilidad de especificar en qué recursos pueden realizar acciones los usuarios. Amazon EC2 es compatible parcialmente con permisos de nivel de recursos. Esto significa que, en algunas acciones de Amazon EC2, puede determinar cuándo se permite utilizarlas a los usuarios en función de si se cumplen una serie de condiciones o de los recursos concretos que pueden utilizar los usuarios. Por ejemplo, puede otorgar permisos a los usuarios para lanzar instancias, pero solo de un tipo específico, y únicamente utilizando una AMI específica.

Si una acción de la API de Amazon EC2 no admite este tipo de permisos de nivel de recurso, puede conceder permisos a los usuarios para que la utilicen, pero tendrá que usar un * (asterisco) para el elemento de recurso de la instrucción de política.

Para obtener más información sobre los recursos que se crean o modifican mediante las acciones de Amazon EC2 y los ARN y las claves de condición de Amazon EC2 que puede utilizar en una instrucción de políticas de IAM, consulte Claves de condición, acciones y recursos de Amazon EC2 en la Guía del usuario de IAM.

Para obtener más información y para políticas de ejemplo, consulte Políticas de IAM para Amazon EC2 en la Guía del usuario de Amazon EC2.

Permisos de nivel de recursos para etiquetar

Algunas acciones de la API de Amazon EC2 de creación de recursos le permiten especificar etiquetas al crear el recurso. Para obtener más información, consulte Etiquetado de los recursos.

Para que los usuarios puedan etiquetar recursos durante la 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 el caso de la acción ec2:CreateTags, puede utilizar la clave de condición ec2:CreateAction para restringir los permisos de etiquetado únicamente a las acciones de creación de recursos. Por ejemplo, la siguiente política permite a los usuarios lanzar 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:region:account:*/*", "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:region:account:*/*", "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 las etiquetas se suministran en una plantilla de lanzamiento y dicha plantilla está especificada en la acción ec2:RunInstances. Para ver una política de ejemplo, consulte Etiquetas en una plantilla de lanzamiento.

Puede controlar las claves y los valores de etiqueta que se aplican a los recursos mediante las claves de condición siguientes:

  • 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 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 obtener más información sobre las condiciones con varios valores, consulte Creación de una condición que pruebe valores de varias claves en la Guía del usuario de IAM. Para ver ejemplos de políticas de IAM, consulte Políticas de ejemplo para trabajar con la AWS CLI o un SDK de AWS.