¿Cómo puedo usar las etiquetas de políticas de IAM para restringir la forma en que se puede crear una instancia de EC2 o un volumen de EBS y acceder a estos?
Quiero conceder acceso a identidades de AWS Identity and Access Management (IAM) para que lancen nuevas instancias de Amazon Elastic Compute Cloud (Amazon EC2). También quiero conceder acceso a identidades de IAM para que creen nuevos volúmenes de Amazon Elastic Block Store (Amazon EBS) cuando apliquen etiquetas específicas.
Descripción breve
Especifica etiquetas para las instancias de EC2 y los volúmenes de Amazon EBS como parte de la llamada a la API con la que se crearán los recursos. Aplica condiciones a la política de IAM para exigir a los usuarios de IAM que etiqueten recursos específicos.
En los siguientes ejemplos de políticas no se permite que los usuarios creen grupos de seguridad ni pares de claves, por lo que deberán seleccionar grupos de seguridad y pares de claves existentes.
En el siguiente ejemplo de políticas de IAM se permite a los usuarios lanzar instancias con las siguientes configuraciones:
- Claves y valores de etiquetas coincidentes
- Al menos una etiqueta y un valor coincidentes
- Al menos una clave de etiqueta coincidente
- Solo la lista de etiquetas especificadas
Las políticas de IAM de ejemplo también permiten a los usuarios administrar instancias y volúmenes que tienen claves y valores de etiquetas coincidentes.
Nota: Para usar las políticas de ejemplo, sustituye los valores del ejemplo por tus valores.
Resolución
Restricción de la creación de instancias de EC2 y volúmenes de EBS en función de las etiquetas
Las siguientes políticas de ejemplo permiten a un usuario lanzar una instancia y crear un volumen en función de las etiquetas.
Lanzamiento de instancias de EC2 que tengan valores y claves de etiqueta coincidentes
En el siguiente ejemplo de política, la condición RequestTag controla el cumplimiento de las etiquetas. Si el usuario aplica una etiqueta que no está incluida en la política, se le denegará la acción. Para imponer la distinción entre mayúsculas y minúsculas, utiliza la condición aws:TagKeys:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowToDescribeAll", "Effect": "Allow", "Action": [ "ec2:Describe*" ], "Resource": "*" }, { "Sid": "AllowRunInstances", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*::image/*", "arn:aws:ec2:*::snapshot/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:key-pair/*" ] }, { "Sid": "AllowRunInstancesWithRestrictions", "Effect": "Allow", "Action": [ "ec2:CreateVolume", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "aws:RequestTag/key1": "value1", "aws:RequestTag/key2": "value2" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "key1", "key2" ] } } }, { "Sid": "AllowCreateTagsOnlyLaunching", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringEquals": { "ec2:CreateAction": [ "RunInstances", "CreateVolume" ] } } } ] }
Importante: Para lanzar correctamente las instancias de EC2, la política anterior debe incluir claves y valores de etiquetas coincidentes. Si los pares de claves y valores no coinciden, se mostrará Launch Failed o algún otro mensaje de error parecido de la API.
Resultados del ejemplo
Clave/Valor | Resultado |
key1/value1 y key2/value2 | allow |
key1/value1 | deny |
key1/value2 | deny |
sin claves ni valores | deny |
Inicio de instancias de EC2 que tengan al menos una clave de etiqueta coincidente
En el siguiente ejemplo de política, reemplaza el bloque de condiciones AllowRunInstancesWithRestrictions cuando al menos una clave de etiqueta se llame key1. No se requiere ningún valor específico para la etiqueta key1 y puedes añadir etiquetas en la solicitud RunInstances:
"Condition": { "StringEquals": { "aws:RequestTag/key1": "value1" }, "ForAnyValue:StringEquals": { "aws:TagKeys": [ "key1" ] } }
Resultados del ejemplo
Clave/Valor | Resultado |
key1/value1 y key2/value2 | allow |
key1/value1 | allow |
key1/value2 | allow |
sin claves ni valores | deny |
Inicio de instancias de EC2 que solo tengan la lista de etiquetas especificada
En el siguiente ejemplo de política, sustituye el bloque de condiciones AllowRunInstancesWithRestrictions cuando se proporcionen las claves de etiqueta key1 y key2 en la solicitud. No se requiere ningún valor específico para ninguna de las claves de etiqueta y no puedes agregar etiquetas en la solicitud RunInstances:
"Condition": { "StringLike": { "aws:RequestTag/key1": "*", "aws:RequestTag/key2": "*" }, "ForAllValues:StringEquals": { "aws:TagKeys": [ "key1", "key2" ] } }
Nota: En la política anterior, la condición StringLike es obligatoria para que los valores puedan incluir comodines que coincidan con varios caracteres (*).
Resultados del ejemplo
Clave/Valor | Resultado |
key1/CualquierValor y key2/CualquierValor | Allow |
key1/CualquierValor | Deny |
key2/CualquierValor | Deny |
Sin claves ni valores | Deny |
key1/CualquierValor, key2/CualquierValor, key3/CualquierValor | Deny |
Restricción de la administración de instancias de EC2 y volúmenes de EBS en función de las claves y los valores de las etiquetas
Las políticas de ejemplo siguientes restringen la administración de instancias y volúmenes por parte de los usuarios en función de las claves y los valores de las etiquetas.
Administración de instancias de EC2 que tengan valores y claves de etiqueta coincidentes
En el siguiente ejemplo de política se restringe el acceso a una identidad de IAM solo para iniciar, detener o reiniciar instancias de EC2. La instancia debe tener una etiqueta de clave Owner con un valor de etiqueta Bob:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances" ], "Resource": [ "arn:aws:ec2:*:111122223333:instance/*" ], "Condition": { "StringEquals": { "ec2:ResourceTag/Owner": "Bob" } } } ] }
Nota: Sustituye Owner por la clave de tu etiqueta, Bob por el nombre de tu usuario de IAM y el ARN del recurso por el ARN de tu recurso.
Para obtener más información, consulta ¿Puedo restringir el acceso de IAM Identity a recursos específicos de Amazon EC2?
Administración de volúmenes de EBS que tengan valores y claves de etiqueta coincidentes
En el siguiente ejemplo de política se permite que la identidad de IAM separe o elimine un volumen de EBS. Para la acción de la API DeleteVolume, el volumen debe tener una clave de etiqueta Owner con un valor de etiqueta Mary. Para la acción de la API DetachVolume, tanto la instancia como el volumen deben tener la misma clave de etiqueta Owner con el valor de etiqueta Mary:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "ec2:DetachVolume", "ec2:DeleteVolume" ], "Resource": [ "arn:aws:ec2:*:111122223333:volume/*", "arn:aws:ec2:*:111122223333:instance/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "Mary" } } } ] }
Nota: Sustituye Owner por la clave de tu etiqueta, Mary por el nombre de tu usuario de IAM y el ARN del recurso por el ARN de tu recurso.
Información relacionada
Ejemplos de políticas basadas en identidad de IAM

Contenido relevante
- preguntada hace un meslg...
- preguntada hace 22 díaslg...
- preguntada hace 3 meseslg...
- preguntada hace 2 meseslg...
- preguntada hace un meslg...
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 7 meses