Permisos de IAM necesarios para las plantillas de inicialización de Amazon EC2 - Amazon Elastic Compute Cloud

Permisos de IAM necesarios para las plantillas de inicialización de Amazon EC2

Puede usar los permisos de IAM para controlar si los usuarios pueden mostrar, ver, crear o eliminar plantillas de inicialización o versiones de plantillas de inicialización.

importante

No podrá usar los permisos de nivel de recursos para restringir los recursos que los usuarios pueden especificar en una plantilla de inicialización cuando creen una plantilla de inicialización o una versión de plantilla de inicialización. Por lo tanto, asegúrese de conceder permisos para crear plantillas de inicialización y versiones de plantillas de inicialización solo a los administradores de confianza.

Debe conceder a cualquier persona que vaya a utilizar una plantilla de inicialización los permisos necesarios para crear y acceder a los recursos especificados en la plantilla de inicialización. Por ejemplo:

  • Para inicializar una instancia desde una Imagen de máquina de Amazon (AMI) privada compartida, el usuario debe tener permiso de inicialización para la AMI.

  • Para crear volúmenes de EBS con etiquetas de instantáneas existentes, el usuario debe tener acceso de lectura a las instantáneas y permisos para crear y etiquetar volúmenes.

ec2:CreateLaunchTemplate

Para crear una plantilla de inicialización en la consola o mediante las API, la entidad principal debe tener el permiso ec2:CreateLaunchTemplate en una política de IAM. Siempre que sea posible, utilice etiquetas que le ayuden a controlar el acceso a las plantillas de inicialización de su cuenta.

Por ejemplo, la siguiente declaración de política de IAM otorga a la entidad principal permiso para crear plantillas de inicialización solo si la plantilla usa la etiqueta especificada (purpose=testing).

{ "Sid": "IAMPolicyForCreatingTaggedLaunchTemplates", "Action": "ec2:CreateLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }

Es posible que las entidades principales que crean claves necesiten algunos permisos relacionados.

  • ec2:CreateTags: para añadir etiquetas a la plantilla de inicialización durante la operación CreateLaunchTemplate, la persona que llama CreateLaunchTemplate debe tener el permiso ec2:CreateTags en una política de IAM.

  • ec2:RunInstances: para iniciar instancias de EC2 a partir de la plantilla de inicialización que crearon, la entidad principal también debe tener el permiso ec2:RunInstances en una política de IAM.

En las acciones de creación de recursos que aplican etiquetas, los usuarios deben tener el permiso ec2:CreateTags. La siguiente instrucción de política de IAM utiliza la clave de condición ec2:CreateAction para permitir a los usuarios crear etiquetas únicamente en el contexto de CreateLaunchTemplate. Los usuarios no pueden etiquetar plantillas de inicialización que ya existan ni otros recursos. Para obtener más información, consulte Conceder permisos para etiquetar recursos de Amazon EC2 durante la creación.

{ "Sid": "IAMPolicyForTaggingLaunchTemplatesOnCreation", "Action": "ec2:CreateTags", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateLaunchTemplate" } } }

El usuario de IAM que crea una plantilla de inicialización no tiene automáticamente permiso para usar la plantilla de inicialización que ha creado. Al igual que cualquier otra entidad principal, el creador de la clave necesita obtener permiso a través de una política de IAM. Si un usuario de IAM quiere iniciar una instancia de EC2 a partir de una plantilla de inicialización, debe tener el permiso ec2:RunInstances. Al conceder estos permisos, puede especificar que los usuarios solo puedan usar plantillas de inicialización con etiquetas o ID específicos. También puede controlar la AMI y otros recursos a los que cualquier persona que utilice plantillas de inicialización puede hacer referencia y utilizar al iniciar instancias especificando los permisos a nivel de recursos para la llamada RunInstances. Para ver ejemplos de políticas, consulte Plantillas de lanzamiento.

ec2:DescribeLaunchTemplates

Para mostrar y ver las plantillas de inicialización de la cuenta, la entidad principal debe tener el permiso ec2:DescribeLaunchTemplates en una política de IAM. Puesto que las acciones Describe no admiten permisos a nivel de recurso, debe especificarlos sin condiciones y el valor del elemento de recurso en la política debe ser "*".

Por ejemplo, la siguiente declaración de política de IAM otorga el permiso a la entidad principal para mostrar y ver todas las plantillas de inicialización en la cuenta.

{ "Sid": "IAMPolicyForDescribingLaunchTemplates", "Action": "ec2:DescribeLaunchTemplates", "Effect": "Allow", "Resource": "*" }

ec2:DescribeLaunchTemplateVersions

Las entidades principales que muestran y ven las plantillas de inicialización también deberían tener el permiso ec2:DescribeLaunchTemplateVersions para recuperar todo el conjunto de atributos que componen las plantillas de inicialización.

Para mostrar y ver las versiones de las plantillas de inicialización de la cuenta, la entidad principal debe tener el permiso ec2:DescribeLaunchTemplateVersions en una política de IAM. Puesto que las acciones Describe no admiten permisos a nivel de recurso, debe especificarlos sin condiciones y el valor del elemento de recurso en la política debe ser "*".

Por ejemplo, la siguiente declaración de política de IAM otorga el permiso a la entidad principal para mostrar y ver todas las versiones de las plantillas de inicialización en la cuenta.

{ "Sid": "IAMPolicyForDescribingLaunchTemplateVersions", "Effect": "Allow", "Action": "ec2:DescribeLaunchTemplateVersions", "Resource": "*" }

ec2:DeleteLaunchTemplate

importante

Debe tener precaución al dar permiso a las entidades principales para eliminar un recurso. Eliminar una plantilla de inicialización puede provocar un error en un recurso  de AWS que se base en la plantilla de inicialización.

Para eliminar una plantilla de inicialización, la entidad principal debe tener el permiso ec2:DeleteLaunchTemplate en una política de IAM. Siempre que sea posible, use claves de condición basadas en etiquetas para limitar los permisos.

Por ejemplo, la siguiente declaración de política de IAM otorga a la entidad principal permiso para eliminar plantillas de inicialización solo si la plantilla tiene la etiqueta especificada (purpose=testing).

{ "Sid": "IAMPolicyForDeletingLaunchTemplates", "Action": "ec2:DeleteLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/purpose": "testing" } } }

Como alternativa, puede utilizar los ARN para identificar la plantilla de inicialización a la que se aplica la política de IAM.

Una plantilla de inicialización tiene el siguiente ARN.

"Resource": "arn:aws:ec2:region:account-id:launch-template/lt-09477bcd97b0d310e"

Puede especificar varios ARN incluyéndolos en una lista o puede especificar un valor Resource de "*" sin el elemento Condition para que la entidad principal pueda eliminar cualquier plantilla de inicialización de la cuenta.

Controle los permisos del control de versiones

Los administradores de confianza pueden conceder acceso para crear y eliminar versiones de una plantilla de inicialización y para cambiar la versión predeterminada de una plantilla de inicialización mediante políticas de IAM similares a las de los ejemplos siguientes.

importante

Tenga cuidado al dar permiso a las entidades principales para crear versiones de plantillas de inicialización o modificar las plantillas de inicialización.

  • Cuando crea una versión de la plantilla de inicialización, afecta a cualquier recurso de AWS que permite a Amazon EC2 iniciar instancias en su nombre con la versión Latest.

  • Cuando modifica una versión de la plantilla de inicialización, puede cambiar qué versión es el Default y por lo tanto afectar los recursos de AWS que permite a Amazon EC2 iniciar instancias en su nombre con esta versión modificada.

También debe ser cauteloso a la hora de gestionar los recursos de AWS que interactúan con la versión de plantilla de inicialización Latest o Default, como la flota de EC2 y la flota de spot. Cuando se utiliza una versión diferente de la plantilla de inicialización para Latest o Default, Amazon EC2 no vuelve a comprobar los permisos para completar las acciones al iniciar nuevas instancias a fin de cumplir con la capacidad de destino de la flota porque no hay interacción del usuario con el recurso de AWS. Al conceder permiso a un usuario para llamar a las API de CreateLaunchTemplateVersion y ModifyLaunchTemplate, el usuario también obtiene el permiso iam:PassRole si dirige la flota a una versión de plantilla de inicialización diferente que contenga un perfil de instancia (un contenedor para un rol de IAM). Esto significa que un usuario puede actualizar una plantilla de inicialización para transferir un rol de IAM a una instancia, incluso si no tiene el permiso iam:PassRole. Para gestionar este riesgo, tenga cuidado al conceder permisos a las personas que pueden crear y gestionar las versiones de las plantillas de inicialización.

ec2:CreateLaunchTemplateVersion

Para crear una nueva versión de una plantilla de inicialización, la entidad principal debe tener el permiso ec2:CreateLaunchTemplateVersion para la plantilla de inicialización en una política de IAM.

Por ejemplo, la siguiente declaración de política de IAM otorga a la entidad principal permiso para crear las versiones de plantillas de inicialización solo si la versión usa la etiqueta especificada (environment=production). Como alternativa, puede especificar uno o varios ARN de plantilla de inicialización, o puede especificar un valor Resource de "*" sin el elemento Condition que permite a la entidad principal crear versiones de cualquier plantilla de inicialización de la cuenta.

{ "Sid": "IAMPolicyForCreatingLaunchTemplateVersions", "Action": "ec2:CreateLaunchTemplateVersion", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

ec2:DeleteLaunchTemplateVersion

importante

Como siempre, debe tener precaución al dar permiso a las entidades principales para eliminar un recurso. Eliminar una versión de plantilla de inicialización puede provocar un error en un recurso de AWS que se base en la versión de plantilla de inicialización.

Para eliminar una versión de una plantilla de inicialización, la entidad principal debe tener el permiso ec2:DeleteLaunchTemplateVersion para la plantilla de inicialización en una política de IAM.

Por ejemplo, la siguiente declaración de política de IAM otorga a la entidad principal permiso para eliminar las versiones de plantillas de inicialización solo si la versión usa la etiqueta especificada (environment=production). Como alternativa, puede especificar uno o varios ARN de plantilla de inicialización, o puede especificar un valor Resource de "*" sin el elemento Condition que permite a la entidad principal eliminar versiones de cualquier plantilla de inicialización de la cuenta.

{ "Sid": "IAMPolicyForDeletingLaunchTemplateVersions", "Action": "ec2:DeleteLaunchTemplateVersion", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

ec2:ModifyLaunchTemplate

Para cambiar la versión Default asociada a una plantilla de inicialización, la entidad principal debe tener el permiso ec2:ModifyLaunchTemplate para la plantilla de inicialización en una política de IAM.

Por ejemplo, la siguiente declaración de política de IAM otorga a la entidad principal permiso para modificar plantillas de inicialización solo si la plantilla de inicialización usa la etiqueta especificada (environment=production). Como alternativa, puede especificar uno o varios ARN de plantilla de inicialización, o puede especificar un valor Resource de "*" sin el elemento Condition que permite a la entidad principal modificar cualquier plantilla de inicialización de la cuenta.

{ "Sid": "IAMPolicyForModifyingLaunchTemplates", "Action": "ec2:ModifyLaunchTemplate", "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "production" } } }

Controle el acceso a las etiquetas de las plantillas de inicialización

Puede utilizar claves de condición para limitar los permisos de etiquetado cuando el recurso es una plantilla de inicialización. Por ejemplo, la siguiente política de IAM permite eliminar solo la etiqueta con la clave temporary de las plantillas de inicialización de la cuenta y región especificadas.

{ "Sid": "IAMPolicyForDeletingTagsOnLaunchTemplates", "Action": "ec2:DeleteTags", "Effect": "Allow", "Resource": "arn:aws:ec2:region:account-id:launch-template/*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": ["temporary"] } } }

Para obtener más información sobre las condiciones, claves que puede utilizar para controlar las etiquetas, y las claves y los valores que se pueden aplicar a los recursos de Amazon EC2, consulte Controlar el acceso a etiquetas específicas.