Controle el uso de la plantilla de lanzamiento de Amazon EC2 en los grupos de Auto Scaling - Amazon EC2 Auto Scaling

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Controle el uso de la plantilla de lanzamiento de Amazon EC2 en los grupos de Auto Scaling

Amazon EC2 Auto Scaling admite el uso de plantillas de lanzamiento de Amazon EC2 con los grupos de Auto Scaling. Le recomendamos que permita a los usuarios crear grupos de Auto Scaling a partir de plantillas de lanzamiento, ya que de esta forma podrán utilizar las características más recientes de Amazon EC2 Auto Scaling y Amazon EC2. Por ejemplo, los usuarios deben especificar una plantilla de lanzamiento para utilizar una política de instancias mixtas.

Puede utilizar la política AmazonEC2FullAccess para proporcionar a los usuarios acceso completo para trabajar con recursos de Amazon EC2 Auto Scaling, plantillas de lanzamiento y otros recursos de EC2 en su cuenta. O bien puede crear sus propias políticas de IAM personalizadas para conceder a los usuarios permisos detallados que les permitan trabajar con plantillas de lanzamiento, tal y como se describe en este tema.

Una política de ejemplo que puede personalizar para su propio uso

A continuación, se incluye un ejemplo de una política de permisos básica que puede personalizar para su propio uso. La política proporciona a los usuarios permisos para crear, actualizar y eliminar todos los grupos de escalado automático, pero solo si el grupo utiliza la etiqueta purpose=testing. A continuación, concede permiso para todas las acciones Describe. Como las acciones Describe no admiten permisos de nivel de recursos, debe especificarlas en una instrucción aparte sin condiciones.

Las identidades de IAM (usuarios o roles) con esta política tienen permiso para crear o actualizar un grupo de escalado automático mediante una plantilla de lanzamiento porque también tienen permiso para usar la acción ec2:RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": [ "autoscaling:Describe*", "ec2:RunInstances" ], "Resource": "*" } ] }

Es posible que los usuarios que crean o actualicen grupos de escalado automático necesiten algunos permisos relacionados, tales como:

Estos permisos para que las acciones se completen al lanzar instancias se comprueban cuando el usuario interactúa con un grupo de escalado automático. Para obtener más información, consulte Validación de permisos para ec2:RunInstances y iam:PassRole.

Los siguientes ejemplos muestran instrucciones de política que puede utilizar para controlar el acceso que los usuarios de IAM tienen para usar plantillas de lanzamiento.

Requerimiento de plantillas de lanzamiento que tengan una etiqueta específica

Al conceder permisos ec2:RunInstances, puede especificar que los usuarios solo puedan usar plantillas de lanzamiento con etiquetas o ID específicos para limitar los permisos al lanzar instancias con una plantilla de lanzamiento. También puede controlar la AMI y otros recursos a los que cualquier persona que utilice plantillas de lanzamiento puede hacer referencia y utilizar al lanzar instancias especificando los permisos adicionales a nivel de recursos para la llamada RunInstances.

En el siguiente ejemplo, se restringen los permisos para que la acción ec2:RunInstances lance plantillas que se encuentran en la región especificada y que tienen la etiqueta purpose=testing. También permite a los usuarios acceder a los recursos especificados en una plantilla de lanzamiento: AMI, tipos de instancias, volúmenes, pares de claves, interfaces de red y grupos de seguridad.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/ami-*", "arn:aws:ec2:region:account-id:instance/*", "arn:aws:ec2:region:account-id:subnet/*", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/*" ] } ] }

Para obtener más información sobre el uso de políticas basadas en etiquetas con plantillas de lanzamiento, consulte Controlar el acceso a las plantillas de lanzamiento con permisos de IAM en la Guía del usuario de Amazon EC2.

Requerimiento de una plantilla de lanzamiento y un número de versión

También puede usar los permisos de IAM para exigir que se especifique una plantilla de lanzamiento y el número de versión de la plantilla de lanzamiento al crear o actualizar los grupos de escalado automático.

En el ejemplo siguiente, se permite a los usuarios crear y actualizar grupos de escalado automático solo si se especifican una plantilla de lanzamiento y el número de versión de la plantilla de lanzamiento. Si los usuarios con esta política omiten el número de versión para especificar la versión de la plantilla de lanzamiento $Latest o $Default, o intentan usar una configuración de lanzamiento en su lugar, se producirá un error en la acción.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "true" } } }, { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:LaunchConfigurationName": "false" } } } ] }

Requerimiento del uso del servicio de metadatos de instancia, versión 2 (IMDSv2)

Para mayor seguridad, puede establecer los permisos de los usuarios para exigir el uso de una plantilla de lanzamiento que requiera IMDSv2. Para obtener más información, consulte Configuración del servicio de metadatos de la instancia en la Guía del usuario de Amazon EC2.

En el siguiente ejemplo se especifica que los usuarios no pueden llamar a la acción ec2:RunInstances, a no ser que la instancia también requiera el uso de IMDSv2 (indicado por "ec2:MetadataHttpTokens":"required").

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }
sugerencia

Para forzar el lanzamiento de instancias de escalado automático de reemplazo que utilicen una nueva plantilla de lanzamiento o una nueva versión de una plantilla de lanzamiento con las opciones de metadatos de instancia configuradas, puede iniciar la actualización de instancias. Para obtener más información, consulte Actualización de las instancias de escalado automático.

Restricción del acceso a recursos de Amazon EC2

En el siguiente ejemplo se controla la configuración de las instancias que un usuario puede lanzar al restringir el acceso a los recursos de Amazon EC2. Para especificar los permisos de nivel de recurso para los recursos especificados en una plantilla de lanzamiento, debe incluir los recursos en la instrucción de la acción RunInstances.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region:account-id:launch-template/*", "arn:aws:ec2:region::image/ami-04d5cc9b88example", "arn:aws:ec2:region:account-id:subnet/subnet-1a2b3c4d", "arn:aws:ec2:region:account-id:volume/*", "arn:aws:ec2:region:account-id:key-pair/*", "arn:aws:ec2:region:account-id:network-interface/*", "arn:aws:ec2:region:account-id:security-group/sg-903004f88example" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": ["t2.micro", "t2.small"] } } } ] }

En este ejemplo, hay dos instrucciones:

  • La primera instrucción requiere que los usuarios inicien instancias en una subred específica (subnet-1a2b3c4d), utilizando un grupo de seguridad específico (sg-903004f88example) y una AMI específica (ami-04d5cc9b88example). También permite a los usuarios acceder a los recursos especificados en una plantilla de lanzamiento: interfaces de red, pares de claves y volúmenes.

  • La segunda instrucción permite a los usuarios lanzar instancias utilizando únicamente los tipos de instancia t2.micro y t2.small, que usted podría utilizar para controlar costos.

    Sin embargo, tenga en cuenta que actualmente no existe una forma eficaz de impedir por completo que los usuarios que tienen permiso para lanzar instancias con una plantilla de lanzamiento lancen otros tipos de instancias. Esto se debe a que un tipo de instancia especificado en una plantilla de lanzamiento se puede anular para usar tipos de instancia que se definen mediante la selección del tipo de instancia basada en atributos.

Para obtener una lista completa de los permisos de nivel de recurso que puede utilizar para controlar la configuración de las instancias que un usuario puede lanzar, consulte Acciones, recursos y claves de condición para Amazon EC2 en la Referencia de autorizaciones de servicio.

Permisos necesarios para etiquetar instancias y volúmenes

En el siguiente ejemplo, se permite a los usuarios etiquetar instancias y volúmenes en el momento de la creación. Esta política es necesaria si hay etiquetas especificadas en la plantilla de lanzamiento. Para obtener más información, consulte Conceder permiso para etiquetar recursos durante la creación en la Guía del usuario de Amazon EC2.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:region:account-id:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } } ] }

Permisos adicionales de la plantilla de lanzamiento

Debe conceder permisos a los usuarios de la consola para las acciones ec2:DescribeLaunchTemplates y ec2:DescribeLaunchTemplateVersions. Sin estos permisos, los datos de la plantilla de lanzamiento no se pueden cargar en el asistente de grupos de Auto Scaling, y los usuarios no pueden completar el asistente para iniciar instancias con una plantilla de lanzamiento. Puede especificar estas acciones adicionales en el elemento Action de una instrucción de política de IAM.

Validación de permisos para ec2:RunInstances y iam:PassRole

Los usuarios pueden especificar qué versión de una plantilla de lanzamiento utiliza su grupo de escalado automático. Según sus permisos, puede ser una versión numerada específica o la versión $Latest o $Default de la plantilla de lanzamiento. Si es la última, tenga especial cuidado. Esto puede anular los permisos para ec2:RunInstances y iam:PassRole que pretendía restringir.

En esta sección se explica el escenario en el que se utiliza la versión más reciente o la versión predeterminada de la plantilla de lanzamiento con un grupo de escalado automático.

Cuando un usuario llama a las API de CreateAutoScalingGroup, UpdateAutoScalingGroup, o StartInstanceRefresh, Amazon EC2 Auto Scaling comprueba sus permisos con la versión de la plantilla de lanzamiento que sea la última o la versión predeterminada en ese momento antes de continuar con la solicitud. Esto valida los permisos de las acciones que se deben completar al lanzar instancias, como las acciones ec2:RunInstances y iam:PassRole. Para ello, emitimos una llamada de prueba a Amazon RunInstancesEC2 para validar si el usuario tiene los permisos necesarios para la acción, sin necesidad de realizar la solicitud. Cuando se devuelve una respuesta, la lee Amazon EC2 Auto Scaling. Si los permisos de usuario no permiten una acción determinada, Amazon EC2 Auto Scaling falla la solicitud y devuelve un error al usuario que contiene información sobre el permiso que falta.

Una vez finalizadas la verificación y la solicitud iniciales, cada vez que se lanzan instancias, Amazon EC2 Auto Scaling las lanza con la versión más reciente o predeterminada, incluso si ha cambiado, utilizando los permisos de su rol vinculado al servicio. Esto significa que un usuario que utiliza la plantilla de lanzamiento podría posiblemente actualizarla para transferir un rol de IAM a una instancia, incluso si no tiene el permiso iam:PassRole.

Utilice la clave de condición autoscaling:LaunchTemplateVersionSpecified si desea limitar quién tiene acceso a los grupos de configuración para usar la versión $Latest o $Default. Esto garantiza que el grupo de escalado automático solo acepte una versión numerada específica cuando un usuario llame a las API CreateAutoScalingGroup y UpdateAutoScalingGroup. Para ver un ejemplo que muestre cómo añadir esta clave de condición a una política de IAM, consulte Requerimiento de una plantilla de lanzamiento y un número de versión.

En el caso de los grupos de escalado automático que estén configurados para usar la versión de la plantilla de lanzamiento $Latest o $Default, considere limitar quién puede crear y gestionar versiones de la plantilla de lanzamiento, incluida la acción ec2:ModifyLaunchTemplate que permite al usuario especificar la versión predeterminada de la plantilla de lanzamiento. Para obtener más información, consulte Control de permisos de control de versiones en la Guía del usuario de Amazon EC2.

Para obtener más información sobre los permisos para ver, crear y eliminar plantillas de lanzamiento y versiones de plantillas de lanzamiento, consulte Controlar el acceso a las plantillas de lanzamiento con permisos de IAM en la Guía del usuario de Amazon EC2.

Para obtener más información acerca de los permisos de nivel de recurso que puede utilizar para controlar el acceso a la llamada de RunInstances, consulte Acciones, recursos y claves de condición de Amazon EC2 en la Referencia de autorizaciones de servicio.