

# Seguridad en Amazon EC2
<a name="ec2-security"></a>

La seguridad en la nube de AWS es la mayor prioridad. Como cliente de AWS, se beneficiará de una arquitectura de red y un centro de datos que están diseñados para satisfacer los requisitos de seguridad de las organizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y usted. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad de la nube y seguridad en la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta los servicios de AWS en la nube de AWS. AWS también proporciona servicios que puede utilizar de forma segura. Los auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad como parte de los [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/) . Para obtener información sobre los programas de conformidad que se aplican a Amazon EC2, consulte [Servicios de AWS en el ámbito del programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/).
+ **Seguridad en la nube** – las siguientes áreas son su responsabilidad:
  + Control del acceso de la red a las instancias, por ejemplo, mediante la configuración de la VPC y los grupos de seguridad. Para obtener más información, consulte [Control del tráfico de red](infrastructure-security.md#control-network-traffic).
  + Gestión de las credenciales utilizadas para conectarse a las instancias.
  + Gestión del sistema operativo invitado y el software implementado en dicho sistema, que abarca actualizaciones y parches de seguridad. Para obtener más información, consulte [Administración de actualizaciones para instancias de Amazon EC2](update-management.md).
  + Configuración de los roles de IAM que están asociados a la instancia y los permisos vinculados con esos roles. Para obtener más información, consulte [Roles de IAM para Amazon EC2](iam-roles-for-amazon-ec2.md).

Esta documentación le ayuda a comprender cómo aplicar el modelo de responsabilidad compartida cuando se utiliza Amazon EC2. Muestra cómo configurar Amazon EC2 para satisfacer sus objetivos de seguridad y conformidad. También puede aprender a utilizar otros servicios de AWS que ayudan a monitorear y proteger los recursos de Amazon EC2.

**Topics**
+ [Protección de los datos](data-protection.md)
+ [Seguridad de la infraestructura](infrastructure-security.md)
+ [Resiliencia](disaster-recovery-resiliency.md)
+ [Validación de la conformidad](compliance-validation.md)
+ [Administración de identidades y accesos](security-iam.md)
+ [Administración de actualizaciones](update-management.md)
+ [Prácticas recomendadas para las instancias de Windows](ec2-windows-security-best-practices.md)
+ [Pares de claves](ec2-key-pairs.md)
+ [Grupos de seguridad](ec2-security-groups.md)
+ [NitroTPM](nitrotpm.md)
+ [Verificación de instancias de EC2](nitrotpm-attestation.md)
+ [Credential Guard para instancias de Windows](credential-guard.md)
+ [AWS PrivateLink](interface-vpc-endpoints.md)

# Proteger los datos en Amazon EC2
<a name="data-protection"></a>

El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) de AWS se aplica a la protección de datos en Amazon Elastic Compute Cloud. Como se describe en este modelo, AWS es responsable de proteger la infraestructura global que ejecuta toda la Nube de AWS. Eres responsable de mantener el control sobre el contenido alojado en esta infraestructura. También eres responsable de las tareas de administración y configuración de seguridad para los Servicios de AWS que utiliza. Para obtener más información sobre la privacidad de los datos, consulte las [Preguntas frecuentes sobre la privacidad de datos](https://aws.amazon.com/compliance/data-privacy-faq/). Para obtener información sobre la protección de datos en Europa, consulte la publicación de blog sobre el [Modelo de responsabilidad compartida de AWS y GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) en el * Blog de seguridad de AWS*.

Con fines de protección de datos, recomendamos proteger las credenciales de la Cuenta de AWS y configurar cuentas de usuario individuales con AWS IAM Identity Center o AWS Identity and Access Management (IAM). De esta manera, solo se otorgan a cada usuario los permisos necesarios para cumplir sus obligaciones laborales. También recomendamos proteger sus datos de la siguiente manera:
+ Utiliza la autenticación multifactor (MFA) en cada cuenta.
+ Utiliza SSL/TLS para comunicarse con los recursos de AWS. Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Configure los registros de API y de actividad de los usuarios con AWS CloudTrail. Para obtener información sobre cómo utilizar registros de seguimiento de CloudTrail para capturar actividades de AWS, consulte [Working with CloudTrail trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) en la *Guía del usuario de AWS CloudTrail*.
+ Utiliza las soluciones de cifrado de AWS, junto con todos los controles de seguridad predeterminados dentro de los servicios de Servicios de AWS.
+ Utiliza servicios de seguridad administrados avanzados, como Amazon Macie, que lo ayuden a detectar y proteger la información confidencial almacenada en Amazon S3.
+ Si necesita módulos criptográficos validados FIPS 140-3 al acceder a AWS a través de una interfaz de la línea de comandos o una API, utiliza un punto de conexión de FIPS. Para obtener más información sobre los puntos de conexión de FIPS disponibles, consulte [Estándar de procesamiento de la información federal (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Se recomienda encarecidamente no introducir nunca información confidencial o sensible, como por ejemplo, direcciones de correo electrónico de clientes, en etiquetas o campos de formato libre, tales como el campo **Nombre**. Esto incluye cuando trabaja con Amazon EC2 u otros Servicios de AWS mediante la consola, la API, la AWS CLI o los AWS SDK. Cualquier dato que introduzca en etiquetas o campos de formato libre utilizados para los nombres se pueden emplear para los registros de facturación o diagnóstico. Si proporciona una URL a un servidor externo, recomendamos encarecidamente que no incluya información de credenciales en la URL a fin de validar la solicitud para ese servidor.

**Topics**
+ [Seguridad de datos de Amazon EBS](#ebs-data-security)
+ [Cifrado en reposo](#encryption-rest)
+ [Cifrado en tránsito](#encryption-transit)

## Seguridad de datos de Amazon EBS
<a name="ebs-data-security"></a>

Los volúmenes de Amazon EBS se presentan como dispositivos de bloques sin formatear y sin procesar. Estos dispositivos son dispositivos lógicos que se crean en la infraestructura de EBS, y el servicio Amazon EBS garantiza que los dispositivos estén vacíos de forma lógica (es decir, los bloques sin procesar se establecen en cero o contienen datos criptográficamente pseudoaleatorios) antes de cualquier uso o reutilización por parte de un cliente.

Si tiene procedimientos que requieren que todos los datos se borren mediante un método específico, ya sea después o antes de su uso (o ambos), como los que se detallan en **DoD 5220.22-M** (National Industrial Security Program Operating Manual) o **NIST 800-88** (Guidelines for Media Sanitization), puede hacerlo en Amazon EBS. Esa actividad de bloques se reflejará en los medios de almacenamiento subyacentes del servicio Amazon EBS.

## Cifrado en reposo
<a name="encryption-rest"></a>

**Volúmenes de EBS**  
El cifrado de Amazon EBS es una solución de cifrado para volúmenes e instantáneas de EBS. Utiliza AWS KMS keys. Para obtener más información, consulte [Cifrado de Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) en la *Guía del usuario de Amazon EBS*.

[Instancias de Windows] También puede utilizar permisos de Microsoft EFS y NTFS para el cifrado a nivel de carpeta y de archivo.

**Volúmenes de almacén de instancias**  
Los datos incluidos en los volúmenes de almacén de instancias de NVMe se cifran con un cifrado XTS-AES-256 en un módulo de hardware de la instancia. Las claves utilizadas para cifrar los datos escritos en dispositivos de almacenamiento NVMe conectados localmente son por cliente y por volumen. Las claves las genera el módulo de hardware, al que no puede acceder el personal de AWS, y residen dentro de este. Las claves de cifrado se destruyen cuando se detiene o termina la instancia y no se pueden recuperar. No puede deshabilitar este cifrado ni tampoco proporcionar su propia clave de cifrado.

Los datos incluidos en los volúmenes de almacén de instancias de HDD en las instancias H1, D3 y D3en están cifrados con XTS-AES-256 y claves de un solo uso.

Cuando una instancia se detiene, se termina o se pone en hibernación, se restablecen todos los bloques de almacenamiento del volumen de almacén de instancias. Por lo tanto, no se puede obtener acceso a los datos a través del almacén de instancias de otra instancia.

**Memoria**

El cifrado de memoria se encuentra habilitado en las siguientes instancias:
+ Las instancias con procesadores AWS Graviton2 o AWS Graviton posteriores son compatibles con el cifrado de memoria siempre activo. Las claves de cifrado se generan de forma segura dentro del sistema host, no salen del sistema host y se destruyen al reiniciar o apagar el host. Para obtener más información, consulte [Procesadores AWS Graviton](https://aws.amazon.com/ec2/graviton/).
+ Instancias con procesadores escalables Intel Xeon de tercera generación (Ice Lake), como las instancias M6i, y procesadores escalables Intel Xeon de cuarta generación (Sapphire Rapids), como las instancias M7i. Estos procesadores admiten el cifrado de memoria siempre activo mediante Intel Total Memory Encryption (TME).
+ Instancias con procesadores AMD EPYC de tercera generación (Milan), como las instancias M6a, y procesadores AMD EPYC de cuarta generación (Genoa), como las instancias M7a. Estos procesadores admiten el cifrado de memoria siempre activo mediante el cifrado seguro de memoria (SME) de AMD.
+ AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP) es compatible con algunos tipos de instancias basadas en AMD. Para obtener más información, consulte [Encuentre tipos de instancia EC2 compatibles con AMD SEV-SNP](snp-find-instance-types.md).

## Cifrado en tránsito
<a name="encryption-transit"></a>

**Cifrado en la capa física**  
Todos los datos que fluyen en las regiones de AWS a través de la red global de AWS se cifran automáticamente en la capa física antes de salir de las instalaciones seguras de AWS. Todo el tráfico entre las zonas de disponibiliad está cifrado. Las capas adicionales de cifrado, incluidas las que aparecen en esta sección, pueden proporcionar una protección adicional.

**Cifrado proporcionado por la interconexión de Amazon VPC y la interconexión entre regiones de puerta de enlace de tránsito.**  
Todo el tráfico entre regiones que utiliza la interconexión de Amazon VPC y de puerta de enlace de tránsito se cifra de forma masiva automáticamente cuando sale de una región. De manera automática, se proporciona una capa adicional de cifrado en la capa física para todo el tráfico antes de dejar las instalaciones seguras de AWS, como se indicó anteriormente en esta sección.

**Cifrado entre instancias**  
AWS proporciona conectividad privada y segura entre instancias de EC2 de todo tipo. Además, en algunos tipos de instancia, se utilizan las capacidades de descarga del hardware Nitro System subyacente para cifrar de manera automática el tráfico en tránsito entre instancias. Este cifrado utiliza algoritmos de encriptación autenticada con datos asociados (AEAD), con cifrado de 256 bits. No hay impacto en el rendimiento de la red. Para admitir este cifrado adicional del tráfico en tránsito entre instancias, se deben cumplir los siguientes requisitos:
+ Las instancias utilizan los siguientes tipos de instancias:
  + **De uso general**: M5dn, M5n, M5zn, M6a, M6i, M6id, M6idn, M6in, M7a, M7g, M7gd, M7i, M7i-flex, M8a, M8azn, M8g, M8gb, M8gd, M8gn, M8i, M8id, M8i-flex, Mac-m4, Mac-m4pro
  + **Optimizadas para la computación:** C5n, C6a, C6gn, C6i, C6id, C6in, C7a, C7g, C7gd, C7gn, C7i, C7i-flex, C8a, C8g, C8gb, C8gd, C8gn, C8i, C8id, C8i-flex
  + **Optimizadas para la memoria:** R5dn, R5n, R6a, R6i, R6id, R6idn, R6in, R7a, R7g, R7gd, R7i, R7iz, R8a, R8g, R8gb, R8gd, R8gn, R8i, R8id, R8i-flex, U-3tb1, U-6tb1, U-9tb1, U-12tb1, U-18tb1, U-24tb1, U7i-6tb, U7i-8tb, U7i-12tb, U7in-16tb, U7in-24tb, U7in-32tb, U7inh-32tb, X2idn, X2iedn, X2iezn, X8g, X8aedz, X8i
  + **Optimizadas para el almacenamiento:** D3, D3en, I3en, I4g, I4i, I7i, I7ie, I8g, I8ge, Im4gn, Is4gen
  + **Computación acelerada:** DL1, DL2q, F2, G4ad, G4dn, G5, G6, G6e, G6f, Gr6, Gr6f, G7e, Inf1, Inf2, P3dn, P4d, P4de, P5, P5e, P5en, P6-B200, P6-B300, P6e-GB200, Trn1, Trn1n, Trn2, Trn2u, VT1
  + **De computación de alto rendimiento:** Hpc6a, Hpc6id, Hpc7a, Hpc7g, Hpc8a
+ Las instancias se encuentran en la misma región.
+ Las instancias están en la misma VPC o VPC interconectadas, y el tráfico no pasa a través de un dispositivo o servicio de red virtual, como un equilibrador de carga o una puerta de enlace de tránsito.

De manera automática, se proporciona una capa adicional de cifrado en la capa física para todo el tráfico antes de dejar las instalaciones seguras de AWS, como se indicó anteriormente en esta sección.

**Para ver los tipos de instancias que cifran el tráfico en tránsito entre instancias mediante la AWS CLI**  
Utilice el siguiente comando: [describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html).

```
aws ec2 describe-instance-types \
    --filters Name=network-info.encryption-in-transit-supported,Values=true \
    --query "InstanceTypes[*].[InstanceType]" \
    --output text | sort
```

**Cifrado hacia y desde AWS Outposts**  
Un puesto de Outposts crea conexiones de red especiales llamadas *enlaces de servicio* en su región de inicio de AWS y, opcionalmente, conectividad privada a una subred VPC que especifique. Todo el tráfico a través de esa conexión está completamente cifrado. Para obtener más información, consulte [Conectividad mediante enlaces de servicio](https://docs.aws.amazon.com/outposts/latest/userguide/region-connectivity.html#service-links) y [Cifrado en tránsito](https://docs.aws.amazon.com/outposts/latest/userguide/data-protection.html#encryption-transit) en la*Guía del usuario de AWS Outposts*.

**Cifrado de acceso remoto**  
Los protocolos SSH y RDP proporcionan canales de comunicaciones seguros para el acceso remoto a las instancias, ya sea de forma directa o mediante EC2 Instance Connect. El acceso remoto a las instancias mediante AWS Systems Manager Session Manager o Run Command está cifrado con TLS 1.2, y las solicitudes para crear una conexión se firman con [SigV4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) y autentican y autorizan con [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html).

Es su responsabilidad utilizar un protocolo de cifrado como Transport Layer Security (TLS) para cifrar la información confidencial en tránsito entre los clientes y sus instancias de Amazon EC2.

(Instancias de Windows) Asegúrese de permitir solo conexiones cifradas entre las instancias EC2 y los puntos de conexión de la API de AWS u otros servicios de red remota confidenciales. Puede aplicar esto mediante un grupo de seguridad saliente o reglas de [Firewall de Windows](https://learn.microsoft.com/en-us/windows/security/operating-system-security/network-security/windows-firewall/).

# Seguridad de la infraestructura de Amazon EC2
<a name="infrastructure-security"></a>

Como se trata de un servicio administrado, Amazon Elastic Compute Cloud está protegido por la seguridad de red global de AWS. Para obtener información sobre los servicios de seguridad de AWS y sobre cómo AWS protege la infraestructura, consulte [Seguridad en la nube de AWS](https://aws.amazon.com/security/). Para diseñar su entorno de AWS siguiendo las prácticas recomendadas de seguridad de infraestructura, consulte [Protección de la infraestructura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) en *Portal de seguridad de AWS Well‐Architected Framework*.

Puede utilizar llamadas a la API publicadas en AWS para acceder a Amazon EC2 a través de la red. Los clientes deben admitir lo siguiente:
+ Seguridad de la capa de transporte (TLS). Exigimos TLS 1.2 y recomendamos TLS 1.3.
+ Conjuntos de cifrado con confidencialidad directa total (PFS) como DHE (Ephemeral Diffie-Hellman) o ECDHE (Elliptic Curve Ephemeral Diffie-Hellman). La mayoría de los sistemas modernos como Java 7 y posteriores son compatibles con estos modos.

Para obtener más información, consulte [Protección de la infraestructura](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) en el *Pilar de seguridad: AWS Well-Architected Framework*.

## Aislamiento de red
<a name="network-isolation"></a>

Una nube privada virtual (VPC) es una red virtual en su propia área, aislada lógicamente en la nube de AWS. Utilice VPC separados para aislar la infraestructura por carga de trabajo o unidad organizativa.

Una subred es un rango de direcciones IP de una VPC. Al iniciar una instancia, la lanza a una subred en su VPC. Utilice subredes para aislar los niveles de la aplicación (por ejemplo, web, aplicación y base de datos) en una VPC individual. Utilice subredes privadas para las instancias si no se debe acceder a ellas directamente desde Internet.

Para llamar a la API de Amazon EC2 desde la VPC mediante direcciones IP privadas, use AWS PrivateLink. Para obtener más información, consulte [Acceso a Amazon EC2 mediante un punto de conexión de VPC de interfaz.](interface-vpc-endpoints.md).

## Aislamiento en hosts físicos
<a name="physical-isolation"></a>

Las diferentes instancias de EC2 en un mismo host físico se aíslan unas de otras como si estuvieran en hosts físicos distintos. El hipervisor aísla la CPU y la memoria, y a las instancias se les proporcionan discos virtualizados en lugar de acceso a los dispositivos del disco sin procesar.

Al detener o finalizar una instancia, el hipervisor limpia la memoria que tiene asignada (la establece en cero) antes de asignarla a una instancia nueva. Además, se restablece cada bloque de almacenamiento. Esto garantiza que los datos no se expongan de forma involuntaria a otra instancia.

Las direcciones MAC de la red se asignan de forma dinámica a las instancias mediante la infraestructura de red de AWS. Las direcciones IP o bien las asigna la infraestructura de red de AWS de forma dinámica a las instancias o bien las asigna un administrador de EC2 mediante solicitudes API autenticadas. La red de AWS permite que las instancias envíen tráfico únicamente desde las direcciones MAC e IP que tienen asignadas. De lo contrario, el tráfico se corta.

De forma predeterminada, una instancia no puede recibir tráfico que no esté dirigido específicamente a ella. Si tiene que ejecutar servicios de traducción de direcciones de red (NAT), de direccionamiento o de firewall en la instancia, puede desactivar la comprobación de origen o destino para la interfaz de red.

## Control del tráfico de red
<a name="control-network-traffic"></a>

Tenga en cuenta las siguientes opciones para controlar el tráfico de red a las instancias de EC2:
+ Limite el acceso a las instancias mediante el uso de [grupos de seguridad](ec2-security-groups.md). Configure reglas que permitan el tráfico de red mínimo requerido. Por ejemplo, puede permitir el tráfico únicamente desde rangos de direcciones para su red corporativa o solo para protocolos específicos, como HTTPS. En el caso de las instancias de Windows, permita el tráfico de administración de Windows y conexiones salientes mínimas.
+ Aproveche los grupos de seguridad como mecanismo principal para controlar el acceso de la red a las instancias Amazon EC2. Cuando sea necesario, utilice las ACL de red con moderación para proporcionar un control de red sin estado y amplio. Los grupos de seguridad son más versátiles que las ACL de red debido a su capacidad de realizar un filtrado de paquetes con estado y crear reglas que hagan referencia a otros grupos de seguridad. Sin embargo, las ACL de red pueden ser eficaces como control secundario para denegar un subconjunto específico de tráfico o proporcionar medidas de protección de subred de alto nivel. Además, dado que las ACL de red se aplican a toda una subred, se pueden utilizar como defensa en profundidad en caso de que una instancia se lance involuntariamente sin un grupo de seguridad correcto.
+ [Instancias de Windows] Administre de forma centralizada la configuración de Firewall de Windows con objetos de políticas de grupo (GPO) para mejorar aún más los controles de red. Los clientes suelen utilizar el Firewall de Windows para obtener una mayor visibilidad del tráfico de red y complementar los filtros de grupos de seguridad, creando reglas avanzadas para impedir que aplicaciones específicas accedan a la red o para filtrar el tráfico de un subconjunto de direcciones IP. Por ejemplo, el Firewall de Windows puede limitar el acceso a la dirección IP del servicio de metadatos de EC2 a usuarios o aplicaciones específicos. Como alternativa, un servicio público podría utilizar grupos de seguridad para restringir el tráfico a puertos específicos y el Firewall de Windows a fin de mantener una lista de direcciones IP bloqueadas explícitamente.
+ Utilice subredes privadas para las instancias si no se debe acceder a ellas directamente desde Internet. Utilice un host bastión o puerta de enlace de NAT para acceder a Internet desde una instancia en una subred privada.
+ [Instancias de Windows] Use protocolos de administración seguros como la encapsulación RDP sobre SSL/TLS. El inicio rápido de la puerta de enlace de escritorio remoto ofrece prácticas recomendadas para implementar la puerta de enlace de escritorio remoto, incluida la configuración de RDP para usar SSL/TLS.
+ [Instancias de Windows] Utilice Active Directory o Directory Service para controlar y supervisar de forma estricta y centralizada el acceso interactivo de usuarios y grupos a instancias de Windows y evitar los permisos de usuarios locales. Evite también el uso de administradores de dominio y, en su lugar, cree cuentas basadas en roles más detalladas y específicas de la aplicación. Just Enough Administration (JEA) permite administrar los cambios en las instancias de Windows sin acceso interactivo o de administrador. Además, JEA permite a las organizaciones bloquear el acceso administrativo al subconjunto de comandos de Windows PowerShell necesarios para la administración de instancias. Para obtener información adicional, consulte la sección “Administración del acceso a Amazon EC2 de nivel de sistema operativo” en el documento técnico [Prácticas recomendadas de seguridad de AWS](https://d1.awsstatic.com/whitepapers/Security/AWS_Security_Best_Practices.pdf).
+ [Instancias de Windows] Los administradores de sistemas deben usar cuentas de Windows con acceso limitado para realizar actividades diarias y elevar el acceso solo cuando sea necesario para realizar cambios de configuración específicos. Además, acceda directamente a las instancias de Windows solo cuando sea absolutamente necesario. En su lugar, aproveche los sistemas de administración de la configuración central como EC2 Run Command, Systems Center Configuration Manager (SCCM), Windows PowerShell DSC o Amazon EC2 Systems Manager (SSM) para introducir cambios en los servidores de Windows.
+ Configure tablas de enrutamiento de subred de Amazon VPC con las rutas de red mínimas requeridas. Por ejemplo, coloque solo las instancias de Amazon EC2 que requieran acceso directo a Internet en subredes con rutas a una puerta de enlace de Internet, y coloque solo las instancias de Amazon EC2 que necesiten acceso directo a redes internas en subredes con rutas a una puerta de enlace privada virtual.
+ Considere la posibilidad de utilizar grupos de seguridad adicionales o interfaces de red para controlar y auditar el tráfico de administración de instancias de Amazon EC2 con independencia del tráfico normal de aplicaciones. Este enfoque permite a los clientes implementar políticas especiales de IAM para el control de cambios, lo que facilita la auditoría de los cambios en reglas de grupos de seguridad o en los scripts automatizados de verificación de reglas. El uso de múltiples interfaces de red también ofrece opciones adicionales para controlar el tráfico de red, incluida la capacidad de crear políticas de direccionamiento basadas en el host o aprovechar diferentes reglas de direccionamiento de la subred de la VPC basadas en una subred asignada de la interfaz de red.
+ Utilice AWS Virtual Private Network o Direct Connect para establecer conexiones privadas desde sus redes remotas a sus VPC. Para obtener más información, consulte la sección sobre [opciones de conectividad entre la red y Amazon VPC](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html).
+ Utilice [registros de flujo de VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) para monitorear el tráfico que llegue a sus instancias.
+ Utilice Protección [contra malware de GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/malware-protection.html) para identificar comportamientos sospechosos que indiquen la presencia de software malicioso en sus instancias y que puedan comprometer su carga de trabajo, reutilizar los recursos para usos malintencionados y obtener acceso no autorizado a sus datos.
+ Utilice el Monitoreo de [tiempo de ejecución GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring.html) para identificar las posibles amenazas a sus instancias y responder a ellas. Para obtener más información, consulte [Cómo funciona el Monitoreo de tiempo de ejecución con las instancias de Amazon EC2](https://docs.aws.amazon.com/guardduty/latest/ug/how-runtime-monitoring-works-ec2.html).
+ Utilice [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/), el [Analizador de accesibilidad](https://docs.aws.amazon.com/vpc/latest/reachability/) o el [Analizador de acceso a la red](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/) para comprobar si se accede a la red de forma no intencionada desde las instancias.
+ Utilice [EC2 Instance Connect](connect-linux-inst-eic.md) para conectarse a sus instancias desde Secure Shell (SSH) sin compartir ni administrar claves SSH.
+ Utilice [Session Manager de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) para acceder a las instancias remotamente en lugar de abrir puertos SSH o RDP de entrada y administrar pares de claves.
+ Utilice [Run Command de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html) para automatizar las tareas administrativas comunes en lugar de conectarse a sus instancias.
+ [Instancias de Windows] Muchos de los roles del sistema operativo Windows y las aplicaciones empresariales de Microsoft también proporcionan funcionalidad mejorada, como restricciones de rango de direcciones IP dentro de IIS, políticas de filtrado TCP/IP en Microsoft SQL Server y políticas de filtro de conexión en Microsoft Exchange. La funcionalidad de restricción de red dentro de la capa de aplicación puede proporcionar capas adicionales de defensa para los servidores de aplicaciones empresariales críticos.

Amazon VPC admite controles de seguridad de red adicionales, como puertas de enlace, servidores proxy y opciones de monitoreo de red. Para obtener más información, consulte [Control del tráfico de red](https://docs.aws.amazon.com/vpc/latest/userguide/infrastructure-security.html#control-network-traffic) en la *Guía del usuario de Amazon VPC*.

# Resiliencia en Amazon EC2
<a name="disaster-recovery-resiliency"></a>

La infraestructura global de AWS está conformada por regiones y zonas de disponibilidad de AWS. Las regiones proporcionan varias zonas de disponibilidad físicamente independientes y aisladas que se encuentran conectadas mediante redes con un alto nivel de rendimiento y redundancia, además de baja latencia. Con las zonas de disponibilidad, puede diseñar y utilizar aplicaciones y bases de datos que realizan una conmutación por error automática entre las zonas sin interrupciones. Las zonas de disponibilidad tienen una mayor disponibilidad, tolerancia a errores y escalabilidad que las infraestructuras tradicionales de centros de datos únicos o múltiples.

Si necesita replicar datos o aplicaciones sobre grandes distancias geográficas, utilice AWS Local Zones. Una zona local de AWS es una extensión de una región de AWS cercana geográficamente a los usuarios. Las Local Zones tienen sus propias conexiones a Internet y admiten Direct Connect. Al igual que en el caso de todas las regiones de AWS, las AWS Local Zones se encuentran completamente aisladas de las demás zonas de AWS.

Si necesita replicar sus datos o aplicaciones en una zona local de AWS, AWS recomienda utilizar una de las siguientes zonas como zona de conmutación por error:
+ Otra zona local
+ Zona de disponibilidad en la región que no es la zona principal. Puede utilizar el comando [describe-availability-zones](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-availability-zones.html) para ver la zona principal.

Para obtener más información sobre zonas de disponibilidad y las regiones de AWS, consulte [Infraestructura global de AWS](https://aws.amazon.com/about-aws/global-infrastructure/).

Además de la infraestructura global de AWS, Amazon EC2 ofrece las siguientes características que respaldan la resiliencia de datos:
+ Copia de las AMI entre regiones
+ Copia de las instantáneas de EBS en las regiones
+ Automatización de las AMI respaldadas por EBS con Amazon Data Lifecycle Manager
+ Automatización de las instantáneas de EBS con Amazon Data Lifecycle Manager
+ Mantenimiento del buen estado y la disponibilidad de su flota con Amazon EC2 Auto Scaling
+ Puede distribuir el tráfico entrante entre las distintas instancias en una única o en varias zonas de disponibilidad con Elastic Load Balancing.

# Validación de la conformidad en Amazon EC2
<a name="compliance-validation"></a>

Para saber si un Servicio de AWS está incluido en el ámbito de programas de conformidad específicos, consulte [Servicios de AWS incluidos por programa de conformidad](https://aws.amazon.com/compliance/services-in-scope/) y escoja el programa de conformidad que le interese. Para obtener información general, consulte [Programas de conformidad de AWS](https://aws.amazon.com/compliance/programs/).

Puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener más información, consulte [Descarga de informes en AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

Su responsabilidad de conformidad al utilizar Servicios de AWS se determina en función de la confidencialidad de los datos, los objetivos de conformidad de la empresa, así como de la legislación y los reglamentos aplicables. Para obtener más información sobre la responsabilidad de cumplimiento al usar Servicios de AWS, consulte la [Documentación de seguridad de AWS](https://docs.aws.amazon.com/security/).

# Identity and Access Management para Amazon EC2
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) es un Servicio de AWS que ayuda a los administradores a controlar de forma segura el acceso a los recursos de AWS. Los administradores de IAM controlan a qué personas se puede *autenticar* (pueden iniciar sesión) y *autorizar* (tienen permisos) para utilizar los recursos de Amazon EC2. IAM es un Servicio de AWS que se puede utilizar sin cargo adicional.

Las credenciales de seguridad sirven para identificarlo ante los servicios de AWS y le otorgan acceso a los recursos de AWS, como, por ejemplo, los recursos de Amazon EC2. Puede utilizar características de Amazon EC2 e IAM para permitir que otros usuarios, servicios y aplicaciones utilicen sus recursos de Amazon EC2 sin necesidad de compartir sus credenciales de seguridad. Puede utilizar IAM para controlar la forma en que otros usuarios utilizan los recursos de su Cuenta de AWS y puede utilizar los grupos de seguridad para controlar el acceso a sus instancias de Amazon EC2. Puede optar por permitir un uso completo o limitado de sus recursos de Amazon EC2.

Si usted es desarrollador, puede usar los roles de IAM para administrar las credenciales de seguridad que necesitan las aplicaciones que ejecuta en sus instancias de EC2. Tras asociar un rol de IAM a la instancia, las aplicaciones que se ejecuten en esta podrán recuperar las credenciales del servicio de metadatos de instancias (IMDS).

Para conocer las prácticas recomendadas destinadas a asegurar los recursos de AWS mediante IAM, consulte las [Prácticas recomendadas de seguridad en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) en la *Guía del usuario de IAM*.

**Topics**
+ [Políticas basadas en identidad para Amazon EC2](iam-policies-for-amazon-ec2.md)
+ [Políticas de ejemplo para controlar el acceso a la API de Amazon EC2](ExamplePolicies_EC2.md)
+ [Políticas de ejemplo para controlar el acceso a la consola de Amazon EC2](iam-policies-ec2-console.md)
+ [Políticas administradas de AWS para Amazon EC2](security-iam-awsmanpol.md)
+ [Roles de IAM para Amazon EC2](iam-roles-for-amazon-ec2.md)

# Políticas basadas en identidad para Amazon EC2
<a name="iam-policies-for-amazon-ec2"></a>

De forma predeterminada, los usuarios no tienen permiso para crear ni modificar recursos de Amazon EC2, ni para realizar tareas con la API de Amazon EC2, la consola de Amazon EC2 o la CLI. Para permitir a los usuarios crear o modificar recursos y realizar tareas, debe crear políticas de IAM que concedan a los usuarios permisos para utilizar los recursos y las acciones de la API que necesitarán y, a continuación, asociar dichas políticas a los usuarios, grupos o roles de IAM que requieran dichos permisos.

Cuando asocia una política a un usuario, grupo de usuarios o rol, les otorga o deniega el permiso para realizar las tareas especificadas en los recursos indicados. Para obtener más información general sobre las políticas de IAM, consulte [Políticas y permisos en IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) en la *Guía del usuario de IAM*. Para obtener más información sobre cómo crear y administrar políticas de IAM, consulte [Administración de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html).

Una política de IAM debe conceder o denegar permisos para usar una o varias acciones de Amazon EC2. Asimismo, debe especificar los recursos que se pueden utilizar con la acción: pueden ser todos los recursos o, en algunos casos, recursos específicos. La política también puede incluir condiciones que se aplican al recurso.

Para empezar, puede comprobar si las políticas gestionadas de AWS de Amazon EC2 se ajustan a sus necesidades. De lo contrario, puede crear sus propias políticas personalizadas. Para obtener más información, consulte [Políticas administradas de AWS para Amazon EC2](security-iam-awsmanpol.md).

**Topics**
+ [Sintaxis de la política](#policy-syntax)
+ [Acciones de Amazon EC2](#UsingWithEC2_Actions)
+ [Permisos de nivel de recurso admitidos para las acciones de la API de Amazon EC2](#ec2-supported-iam-actions-resources)
+ [Nombres de recursos de Amazon (ARN) para Amazon EC2](#EC2_ARN_Format)
+ [Claves de condición de Amazon EC2](#amazon-ec2-keys)
+ [Controle el acceso mediante acceso basado en atributos](#control-access-with-tags)
+ [Concesión de permisos a usuarios, grupos y roles](#granting-iam-permissions)
+ [Comprobar que los usuarios tienen los permisos necesarios](#check-required-permissions)

## Sintaxis de la política
<a name="policy-syntax"></a>

Una política de IAM es un documento JSON que contiene una o varias instrucciones. Cada instrucción tiene la estructura siguiente.

```
{
  "Statement":[{
    "Effect":"effect",
    "Action":"action",
    "Resource":"arn",
    "Condition":{
      "condition":{
        "key":"value"
        }
      }
    }
  ]
}
```

Una instrucción está compuesta por varios elementos:
+ **Effect:** el valor de *effect* puede ser `Allow` o `Deny`. De forma predeterminada, los usuarios no tienen permiso para utilizar los recursos y las acciones de la API, por lo que se deniegan todas las solicitudes. Si se concede un permiso explícito se anula el valor predeterminado. Una denegación explícita invalida cualquier permiso concedido.
+ **Action**: el valor de *action* es la acción de la API para la que concede o deniega permisos. Para obtener más información de cómo especificar el valor de *action*, consulte [Acciones de Amazon EC2](#UsingWithEC2_Actions). 
+ **Resource**: el recurso al que afecta la acción. Algunas acciones de la API de Amazon EC2 permiten incluir en la política recursos específicos que la acción puede crear o modificar. Especifique un recurso con un nombre de recurso de Amazon (ARN) o utilizando el carácter comodín (\$1) para indicar que la instrucción se aplica a todos los recursos. Para obtener más información, consulte [Permisos de nivel de recurso admitidos para las acciones de la API de Amazon EC2](#ec2-supported-iam-actions-resources). 
+ **Condition**: las condiciones son opcionales. Se pueden usar para controlar cuándo está en vigor la política. Para obtener más información sobre cómo especificar condiciones para Amazon EC2, consulte [Claves de condición de Amazon EC2](#amazon-ec2-keys).

Para obtener más información sobre los requisitos de la política, consulte la [Referencia de la política JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) en la *Guía del usuario de IAM*. Para obtener ejemplos de instrucciones de política de IAM para Amazon EC2, consulte [Políticas de ejemplo para controlar el acceso a la API de Amazon EC2](ExamplePolicies_EC2.md). 

## Acciones de Amazon EC2
<a name="UsingWithEC2_Actions"></a>

En una instrucción de política de IAM, puede especificar cualquier acción de API de cualquier servicio que sea compatible con IAM. Para Amazon EC2, use el prefijo siguiente con el nombre de la acción de API: `ec2:`. Por ejemplo: `ec2:RunInstances` y `ec2:CreateImage`.

Para especificar varias acciones en una única instrucción, sepárelas con comas del siguiente modo:

```
"Action": ["ec2:action1", "ec2:action2"]
```

También puede utilizar caracteres comodín para especificar varias acciones. Por ejemplo, puede especificar todas las acciones cuyo nombre comience por la palabra "Describe" del siguiente modo:

```
"Action": "ec2:Describe*"
```

**nota**  
Actualmente, las acciones de la API de Amazon EC2 Describe\$1 no admiten permisos de nivel de recurso. Para obtener más información sobre los permisos de nivel de recursos para Amazon EC2, consulte [Políticas basadas en identidad para Amazon EC2](#iam-policies-for-amazon-ec2).

Para especificar todas las acciones de API de Amazon EC2, use el carácter comodín \$1 del siguiente modo:

```
"Action": "ec2:*"
```

Para ver una lista de las acciones de Amazon EC2, consulte [Acciones definidas por Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-actions-as-permissions) en la *referencia de autorizaciones de servicio*.

## Permisos de nivel de recurso admitidos para las acciones de la API de Amazon EC2
<a name="ec2-supported-iam-actions-resources"></a>

Los *permisos de nivel de recursos* hacen referencia a la capacidad de especificar en qué recursos los usuarios tienen permitido realizar acciones. Amazon EC2 admite parcialmente los 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 iniciar instancias, pero solo de un tipo específico, y únicamente utilizando una AMI específica.

Para especificar un recurso en la instrucción de política de IAM, se utiliza el nombre de recurso de Amazon (ARN). Para obtener más información sobre cómo especificar el valor de ARN, consulte [Nombres de recursos de Amazon (ARN) para Amazon EC2](#EC2_ARN_Format). Si una acción de API no admite ARN individuales, debe utilizar un comodín (\$1) para especificar que la acción puede afectar a todos los recursos. 

Para ver tablas que identifican qué acciones de la API de Amazon EC2 admiten permisos de nivel de recursos, así como los ARN y las claves de condición que puede usar en una política, consulte [Acciones, recursos y claves de condición para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

Tenga en cuenta que puede aplicar permisos de nivel de recurso basados en etiquetas en las políticas de IAM que utiliza para acciones de la API de Amazon EC2. Esto le ofrece un mejor control sobre los recursos que un usuario puede crear, modificar o utilizar. Para obtener más información, consulte [Conceder permisos para etiquetar recursos de Amazon EC2 durante la creación](supported-iam-actions-tagging.md). 

## Nombres de recursos de Amazon (ARN) para Amazon EC2
<a name="EC2_ARN_Format"></a>

Cada instrucción de política de IAM se aplica a los recursos especificados utilizando sus ARN. 

Un ARN tiene la siguiente sintaxis general:

```
arn:aws:[service]:[region]:[account-id]:resourceType/resourcePath
```

*servicio*  
El servicio (por ejemplo, `ec2`).

*region*  
La región para el recurso (por ejempl, `us-east-1`).

*account-id*  
El ID de cuenta de AWS, sin guiones (por ejemplo, `123456789012`).

*resourceType*  
El tipo de recurso (por ejemplo, `instance`).

*resourcePath*  
Una ruta que identifica al recurso. Puede utilizar carácter comodín \$1 en las rutas.

Por ejemplo, puede indicar una instancia específica (`i-1234567890abcdef0`) en la instrucción usando su ARN de este modo. 

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/i-1234567890abcdef0"
```

También puede especificar todas las instancias que pertenecen a una cuenta específica mediante el carácter comodín \$1 del modo siguiente.

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"
```

También puede especificar todos los recursos de Amazon EC2 que pertenecen a una cuenta específica mediante el carácter comodín \$1 del modo siguiente.

```
"Resource": "arn:aws:ec2:us-east-1:123456789012:*"
```

Para especificar todos los recursos o cuando una acción de API no admita ARN, utilice el carácter comodín \$1 en el elemento `Resource` de la siguiente manera.

```
"Resource": "*"
```

En muchas acciones de la API de Amazon EC2 se utilizan varios recursos. Por ejemplo, `AttachVolume` asocia un volumen de Amazon EBS a una instancia, por lo que un usuario debe tener permisos para utilizar el volumen y la instancia. Para especificar varios recursos en una única instrucción, separe sus ARN con comas, tal y como se indica a continuación.

```
"Resource": ["arn1", "arn2"]
```

Para obtener una lista de ARN de recursos de Amazon EC2, consulte [Tipos de recursos definidos por Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-resources-for-iam-policies).

## Claves de condición de Amazon EC2
<a name="amazon-ec2-keys"></a>

En la instrucción de una política, tiene la opción de especificar las condiciones que controlan cuando está en vigor. Cada condición contiene uno o varios pares clave-valor. Las claves de condición no distinguen entre mayúsculas y minúsculas. Hemos definido claves de condición globales de AWS y también claves de condición específicas de los servicios.

Para obtener una lista de las claves de condición específicas del servicio para Amazon EC2, consulte [Claves de condición para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-policy-keys). Amazon EC2 también implementa las claves de condición globales de AWS. Para obtener más información, consulte [Información disponible en todas las solicitudes](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infoallreqs) en la *Guía del usuario de IAM*.

Todas las acciones de Amazon EC2 admiten las claves de condición `aws:RequestedRegion` y `ec2:Region`. Para obtener más información, consulte [Ejemplo: Restringir el acceso a una región específica](ExamplePolicies_EC2.md#iam-example-region).

Para utilizar una clave de condición en la política de IAM, utilice la instrucción `Condition`. Por ejemplo, la política siguiente concede a los usuarios permiso para agregar y eliminar reglas de entrada y salida para cualquier grupo de seguridad. Utiliza la clave de condición `ec2:Vpc` para especificar que estas acciones solo se pueden realizar en grupos de seguridad de una VPC específica.

------
#### [ JSON ]

****  

```
{
"Version":"2012-10-17",		 	 	 
  "Statement":[{
    "Effect":"Allow",
    "Action": [
       "ec2:AuthorizeSecurityGroupIngress",
       "ec2:AuthorizeSecurityGroupEgress",
       "ec2:RevokeSecurityGroupIngress",
       "ec2:RevokeSecurityGroupEgress"],
     "Resource": "arn:aws:ec2:us-east-1:111122223333:security-group/*",
      "Condition": {
        "StringEquals": {
          "ec2:Vpc": "arn:aws:ec2:us-east-1:111122223333:vpc/vpc-11223344556677889"
        }
      }
    }
  ]
}
```

------

Si especifica varias condiciones o varias claves en una condición, las evaluamos con una operación lógica AND. Si especifica una condición con varios valores para una clave, evaluamos la condición con una operación lógica OR. Para conceder los permisos, es necesario que se cumplan todas las condiciones.

También puede utilizar comodines al especificar las condiciones. Para obtener más información, consulte [Elementos de la política de IAM: Variables y etiquetas](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html) en la *Guía del usuario de IAM*.

**importante**  
Muchas claves de condición son específicas de un recurso y algunas acciones de API utilizan varios recursos. Si escribe una política con una clave de condición, use el elemento `Resource` de la instrucción para especificar el recurso en el que se aplica la clave de condición. Si no lo hace, la política puede impedir que los usuarios ejecuten la acción, ya que la comprobación de la condición dará un error en el caso de los recursos en los que la clave de la condición no se aplica. Si no quiere especificar un recurso o si ha escrito el elemento `Action` de su política para que contenga varias acciones de API, debe utilizar el tipo de condición `...IfExists` para asegurarse de que no se tenga en cuenta la clave de condición en el caso de los recursos que no la utilicen. Para obtener más información, consulte [...IfExists Conditions](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Conditions_IfExists) en la *Guía del usuario de IAM*.

**Topics**
+ [ec2:AttributeClave de condición de](#attribute-key)
+ [ec2:ResourceIDClaves de condición de](#imageId-key)
+ [ec2:SourceInstanceARNClave de condición de](#SourceInstanceARN)

### ec2:AttributeClave de condición de
<a name="attribute-key"></a>

La clave de condición `ec2:Attribute` se puede utilizar para condiciones que filtran el acceso por un atributo de un recurso.

Esta clave de condición admite únicamente propiedades que sean de un tipo de datos primitivo (como cadenas o enteros) o bien objetos **[AttributeValue](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_AttributeValue.html)** complejos que contengan solo una propiedad **Valor** (como los objetos **Description** o **ImdsSupport** de la acción de API [ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html)). La clave de condición no se puede usar con objetos complejos que contengan varias propiedades, como el objeto **LaunchPermission** de [ModifyImageAttribute](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyImageAttribute.html).

Por ejemplo, la siguiente política utiliza la clave de condición `ec2:Attribute/Description` para filtrar el acceso por parte del objeto complejo **Descripción** de la acción **ModifyImageAttribute** de la API. La clave de condición solo permite solicitudes que modifican la descripción de una imagen `Production` o `Development`. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:ModifyImageAttribute",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:Attribute/Description": [
            "Production",
            "Development"
          ]
        }
      }
    }
  ]
}
```

------

El ejemplo siguiente de política utiliza la clave de condición `ec2:Attribute` para filtrar el acceso mediante la propiedad primitiva **Atributo** de la acción **ModifyImageAttribute** de la API. La clave de condición deniega todas las solicitudes que intentan modificar la descripción de una imagen.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": "ec2:ModifyImageAttribute",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:Attribute": "Description"
        }
      }
    }
  ]
}
```

------

### ec2:ResourceIDClaves de condición de
<a name="imageId-key"></a>

Cuando utilice las siguientes claves de condición `ec2:ResourceID` con las acciones de API especificadas, el valor de la clave de condición se utiliza para especificar el recurso resultante que se crea mediante la acción de la API. Las claves de condición `ec2:ResourceID` no se pueden usar para especificar un recurso fuente que se especifica en la solicitud de la API. Si usa una de las siguientes claves de condición `ec2:ResourceID` con una API específica, entonces siempre debe especificar el comodín (`*`). Si especifica un valor diferente, la condición siempre se resuelve como `*` durante el tiempo de ejecución. Por ejemplo, para usar la clave de condición `ec2:ImageId` con la API **CopyImage**, luego debe especificar la clave de condición de la siguiente manera:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CopyImage",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-*",
      "Condition": {
        "StringEquals": {
          "ec2:ImageID": "*"
        }
      }
    }
  ]
}
```

------

Recomendamos que evite usar las claves de condición con estas acciones de API:
+ `ec2:DhcpOptionsID` – `CreateDhcpOptions`
+ `ec2:ImageID` – `CopyImage`, `CreateImage`, `ImportImage` y `RegisterImage`
+ `ec2:InstanceID` – `RunInstances` y `ImportInstance`
+ `ec2:InternetGatewayID` – `CreateInternetGateway`
+ `ec2:NetworkAclID` – `CreateNetworkAcl`
+ `ec2:NetworkInterfaceID` – `CreateNetworkInterface`
+ `ec2:PlacementGroupName` – `CreatePlacementGroup`
+ `ec2:RouteTableID` – `CreateRouteTable`
+ `ec2:SecurityGroupID` – `CreateSecurityGroup`
+ `ec2:SnapshotID` – `CopySnapshot`, `CreateSnapshot`, `CreateSnapshots` y `ImportSnapshots`
+ `ec2:SubnetID` – `CreateSubnet`
+ `ec2:VolumeID` – `CreateVolume` y `ImportVolume`
+ `ec2:VpcID` – `CreateVpc`
+ `ec2:VpcPeeringConnectionID` – `CreateVpcPeeringConnection`

Para filtrar el acceso en función de identificadores de recursos específicos, recomendamos que lo haga mediante el elemento de política `Resource`, de la siguiente manera.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:CopyImage",
      "Resource": "arn:aws:ec2:us-east-1::image/ami-01234567890abcdef"
    }
  ]
}
```

------

### ec2:SourceInstanceARNClave de condición de
<a name="SourceInstanceARN"></a>

Se utiliza `ec2:SourceInstanceARN` para especificar el ARN de la instancia desde la que se realiza una solicitud. Se trata de una [clave de condición AWS global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html), lo que significa que puede utilizarla con servicios distintos de Amazon EC2. Para ver una política de ejemplo, consulte [Ejemplo: Permitir que una instancia específica vea los recursos de otros servicios de AWS](ExamplePolicies_EC2.md#iam-example-source-instance).

## Controle el acceso mediante acceso basado en atributos
<a name="control-access-with-tags"></a>

Cuando crea una política de IAM que concede a los usuarios permiso para utilizar recursos de EC2, puede incluir información de etiquetas en el elemento `Condition` de la política para controlar el acceso basado en etiquetas. Esto se conoce como control de acceso basado en atributos (ABAC). El ABAC le proporciona un mejor control sobre los recursos que un usuario puede modificar, utilizar o eliminar. Para obtener más información, consulte [¿Qué es ABAC para AWS?](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)

Por ejemplo, puede crear una política que permita a los usuarios terminar una instancia, pero que deniegue la acción si la instancia tiene la etiqueta `environment=production`. Para ello, utilice la clave de condición `aws:ResourceTag` para permitir o denegar el acceso al recurso en función de las etiquetas que están asociadas al recurso.

```
"StringEquals": { "aws:ResourceTag/environment": "production" }
```

Para saber si una acción de la API de Amazon EC2 permite controlar el acceso mediante la clave de condición `aws:ResourceTag`, consulte [Acciones, recursos y claves de condición para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html). Tenga en cuenta que las acciones `Describe` no admiten permisos de nivel de recursos, de forma que debe especificarlas en una instrucción aparte sin condiciones.

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). 

Si permite o deniega a los usuarios acceso a recursos en función de etiquetas, debe considerar denegar explícitamente a los usuarios la posibilidad de agregar estas etiquetas o retirarlas de los mismos recursos. De lo contrario, es posible que un usuario eluda sus restricciones y obtenga acceso a un recurso modificando sus etiquetas.

## Concesión de permisos a usuarios, grupos y roles
<a name="granting-iam-permissions"></a>

Para dar acceso, agregue permisos a los usuarios, grupos o roles:
+ Usuarios y grupos en AWS IAM Identity Center:

  Cree un conjunto de permisos. Siga las instrucciones de [Creación de un conjunto de permisos](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) en la *Guía del usuario de AWS IAM Identity Center*.
+ Usuarios gestionados en IAM a través de un proveedor de identidades:

  Cree un rol para la federación de identidades. Siga las instrucciones descritas en [Creación de un rol para un proveedor de identidad de terceros (federación)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) en la *Guía del usuario de IAM*.
+ Usuarios de IAM:
  + Cree un rol que el usuario pueda aceptar. Siga las instrucciones descritas en [Creación de un rol para un usuario de IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) en la *Guía del usuario de IAM*.
  + (No recomendado) Adjunte una política directamente a un usuario o agregue un usuario a un grupo de usuarios. Siga las instrucciones descritas en [Adición de permisos a un usuario (consola)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) de la *Guía del usuario de IAM*.

## Comprobar que los usuarios tienen los permisos necesarios
<a name="check-required-permissions"></a>

Una vez creada la política de IAM, le recomendamos que compruebe si concede permisos a los usuarios para utilizar las acciones de la API concretas y los recursos necesarios antes de pasar la política a producción.

En primer lugar, cree un usuario para realizar pruebas y, a continuación, asocie la política de IAM que creó al usuario de prueba. A continuación, realice una solicitud como usuario de prueba.

Si la acción de Amazon EC2 que va a probar crea o modifica un recurso, debería efectuar la solicitud mediante el parámetro `DryRun` (o ejecutar el comando de la AWS CLI con la opción `--dry-run`). En este caso, la llamada completa la comprobación de autorización, pero no la operación. Por ejemplo, puede comprobar si el usuario puede finalizar una instancia determinada sin finalizarla en realidad. Si el usuario de prueba tiene los permisos necesarios, la solicitud devolverá `DryRunOperation`; de lo contrario, devolverá `UnauthorizedOperation`.

Si la política no concede los permisos previstos al usuario o es demasiado permisiva, puede ajustarla según sea necesario y repetir las pruebas hasta obtener el resultado deseado. 

**importante**  
Puede que los cambios en la política tarden varios minutos en propagarse y surtir efecto. Por lo tanto, le recomendamos que espere cinco minutos antes de probar las actualizaciones de la misma.

Si se produce un error en la comprobación de autorización, la solicitud devuelve un mensaje codificado con información de diagnóstico. Puede descodificar el mensaje usando la acción `DecodeAuthorizationMessage`. Para obtener más información, consulte [DecodeAuthorizationMessage](https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html) en la *Referencia de la API de AWS Security Token Service*, así como [decode-authorization-message](https://docs.aws.amazon.com/cli/latest/reference/sts/decode-authorization-message.html).

# Políticas de ejemplo para controlar el acceso a la API de Amazon EC2
<a name="ExamplePolicies_EC2"></a>

Puede utilizar las políticas de IAM para conceder a los usuarios los permisos necesarios para trabajar con Amazon EC2. Para obtener instrucciones paso a paso, consulte [Creación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la *Guía del usuario de IAM*.

Los siguientes ejemplos muestran instrucciones de política que puede utilizar para conceder permisos a los usuarios para utilizar Amazon EC2. Estas políticas están diseñadas para solicitudes que se realizan mediante la AWS CLI o un SDK de AWS. En los ejemplos siguientes, reemplace cada *marcador de posición del usuario* con su propia información.

**Topics**
+ [Acceso de solo lectura](#iam-example-read-only)
+ [Restringir el acceso a una región específica](#iam-example-region)
+ [Trabajar con instancias](#iam-example-instances)
+ [Lanzar instancias (RunInstances)](#iam-example-runinstances)
+ [Trabajar con Instancias de spot](#iam-example-spot-instances)
+ [Trabajar con Instancias reservadas](#iam-example-reservedinstances)
+ [Etiquetar recursos](#iam-example-taggingresources)
+ [Trabajar con roles de IAM](#iam-example-iam-roles)
+ [Trabajar con tablas de ruteo](#iam-example-route-tables)
+ [Permitir que una instancia específica vea los recursos de otros servicios de AWS](#iam-example-source-instance)
+ [Trabajar con plantillas de lanzamiento](#iam-example-launch-templates)
+ [Trabajar con metadatos de instancias](#iam-example-instance-metadata)
+ [Uso de volúmenes e instantáneas de Amazon EBS](#iam-example-ebs)

Para ver políticas de ejemplo para trabajar en la consola de Amazon EC2, consulte [Políticas de ejemplo para controlar el acceso a la consola de Amazon EC2](iam-policies-ec2-console.md).

## Ejemplo: Acceso de solo lectura
<a name="iam-example-read-only"></a>

La siguiente política concede a los usuarios permisos para usar todas las acciones de la API de Amazon EC2 cuyos nombres empiecen por `Describe`. El elemento `Resource` utiliza un carácter comodín para indicar que los usuarios pueden especificar todos los recursos con estas acciones de API. El carácter comodín \$1 también es necesario en los casos en los que la acción de la API no admita permisos de nivel de recursos. Para obtener más información acerca de qué ARN puede usar con qué acciones de la API de Amazon EC2, consulte [Acciones, recursos y claves de condición para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

Los usuarios no tienen permiso para realizar ninguna acción en los recursos (a menos que otra instrucción les de permiso para ello), porque, de forma predeterminada, se les deniega el permiso para usar acciones de la API.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:Describe*",
      "Resource": "*"
    }
   ]
}
```

------

## Ejemplo: Restringir el acceso a una región específica
<a name="iam-example-region"></a>

La siguiente política deniega a los usuarios el permiso para usar todas las acciones de la API de Amazon EC2 a menos que la región sea Europa (Fráncfort). Utiliza la clave de condición global `aws:RequestedRegion`, que admiten todas las acciones de la API de Amazon EC2.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Deny",
      "Action": "ec2:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": "eu-central-1"
        }
      }
    }  
  ]
}
```

------

De forma alternativa, puede usar la clave de condición `ec2:Region`, que es específica de Amazon EC2 y que admiten todas las acciones de la API de Amazon EC2.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Deny",
      "Action": "ec2:*",
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "ec2:Region": "eu-central-1"
        }
      }
    }  
  ]
}
```

------

## Trabajar con instancias
<a name="iam-example-instances"></a>

**Topics**
+ [Ejemplo: Describir, iniciar, detener, comenzar y terminar todas las instancias](#iam-example-instances-all)
+ [Ejemplo: Describir todas las instancias y detener, comenzar y terminar solo instancias determinadas](#iam-example-instances-specific)

### Ejemplo: Describir, iniciar, detener, comenzar y terminar todas las instancias
<a name="iam-example-instances-all"></a>

La siguiente política concede a los usuarios permisos para usar las acciones de la API especificadas en el elemento `Action`. El elemento `Resource` utiliza un carácter comodín \$1 para indicar que los usuarios pueden especificar todos los recursos con estas acciones de API. El carácter comodín \$1 también es necesario en los casos en los que la acción de la API no admita permisos de nivel de recursos. Para obtener más información acerca de qué ARN puede usar con qué acciones de la API de Amazon EC2, consulte [Acciones, recursos y claves de condición para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

Los usuarios no tienen permiso para utilizar cualquier otra acción de la API (a menos que otra instrucción les de permiso para ello), porque, de forma predeterminada, se les deniega el permiso para usar acciones de la API.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances", 
        "ec2:DescribeImages",
        "ec2:DescribeKeyPairs", 
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeAvailabilityZones",
        "ec2:RunInstances", 
        "ec2:TerminateInstances",
        "ec2:StopInstances", 
        "ec2:StartInstances"
      ],
      "Resource": "*"
    }
   ]
}
```

------

### Ejemplo: Describir todas las instancias y detener, comenzar y terminar solo instancias determinadas
<a name="iam-example-instances-specific"></a>

La siguiente política permite a los usuarios describir todas las instancias, iniciar y detener únicamente las instancias i-1234567890abcdef0 e i-0598c7d356eba48d7, y terminar únicamente instancias en la región `us-east-1`, con la etiqueta de recurso “`purpose=test`“. 

La primera instrucción utiliza un comodín \$1 para el elemento `Resource` para indicar que los usuarios pueden especificar todos los recursos con la acción; en este caso, pueden generar una lista de todas las instancias. El carácter comodín \$1 también es necesario en los casos en que la acción de la API no admite permisos de nivel de recursos (en este caso, `ec2:DescribeInstances`). Para obtener más información acerca de qué ARN puede usar con qué acciones de la API de Amazon EC2, consulte [Acciones, recursos y claves de condición para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

La segunda instrucción utiliza permisos de nivel de recursos para las acciones `StopInstances` y `StartInstances`. Las instancias específicas se indican mediante sus ARN en el elemento `Resource`.

La tercera instrucción permite a los usuarios terminar todas las instancias en la región de `us-east-1` que pertenezcan a la cuenta de AWS indicada, pero solo si la instancia tiene la etiqueta `"purpose=test"`. El elemento `Condition` estipula cuando la instrucción de la política está en vigor. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
   "Effect": "Allow",
      "Action": "ec2:DescribeInstances",
      "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action": [
        "ec2:StopInstances", 
        "ec2:StartInstances"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:111122223333:instance/i-1234567890abcdef0",
        "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "ec2:TerminateInstances",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
            "aws:ResourceTag/purpose": "test"
         }
      }
   }

   ]
}
```

------

## Iniciar instancias (RunInstances)
<a name="iam-example-runinstances"></a>

La acción de la API [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) lanza una o varias Instancias bajo demanda o una o varias Instancias de spot. `RunInstances` requiere una AMI y crea una instancia. Los usuarios pueden especificar un par de claves y un grupo de seguridad en la solicitud. El lanzamiento en una VPC requiere una subred y crea una interfaz de red. El lanzamiento desde una AMI basado en Amazon EBS crea un volumen. Por lo tanto, el usuario debe tener permisos para usar estos recursos de Amazon EC2. Puede crear una instrucción de política que exija a los usuarios que especifiquen un parámetro opcional en `RunInstances` o que restrinja los valores de un parámetro a valores determinados.

Para obtener más información sobre los permisos de nivel de recurso necesarios para iniciar una instancia, consulte [Claves de condición, acciones y recursos de Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

De forma predeterminada, los usuarios no tienen permisos para describir, comenzar, detener o terminar las instancias resultantes. Una de las posibles maneras de conceder a los usuarios permisos para administrar las instancias obtenidas consiste en crear una etiqueta específica para cada instancia y, a continuación, crear una instrucción que les permita administrar instancias con dicha etiqueta. Para obtener más información, consulte [Trabajar con instancias](#iam-example-instances).

**Topics**
+ [AMI](#iam-example-runinstances-ami)
+ [Tipos de instancias](#iam-example-runinstances-instance-type)
+ [Subredes](#iam-example-runinstances-subnet)
+ [Volúmenes de EBS](#iam-example-runinstances-volumes)
+ [Etiquetas](#iam-example-runinstances-tags)
+ [Etiquetas en una plantilla de lanzamiento](#iam-example-tags-launch-template)
+ [GPU elásticas](#iam-example-runinstances-egpu)
+ [Plantillas de lanzamiento](#iam-example-runinstances-launch-templates)

### AMI
<a name="iam-example-runinstances-ami"></a>

La siguiente política permite a los usuarios iniciar instancias utilizando únicamente las AMI especificadas, `ami-9e1670f7` y `ami-45cf5c3c`. Los usuarios no pueden lanzar una instancia con otras AMI (a menos que otra instrucción conceda a los usuarios permiso para ello).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1::image/ami-9e1670f7",
        "arn:aws:ec2:us-east-1::image/ami-45cf5c3c",
        "arn:aws:ec2:us-east-1:111122223333:instance/*",
        "arn:aws:ec2:us-east-1:111122223333:volume/*",
        "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
        "arn:aws:ec2:us-east-1:111122223333:security-group/*",
        "arn:aws:ec2:us-east-1:111122223333:subnet/*",
        "arn:aws:ec2:us-east-1:111122223333:network-interface/*"
      ]
    }
   ]
}
```

------

Como alternativa, la siguiente política permite a los usuarios iniciar instancias desde todas las AMI propiedad de Amazon o de determinados socios verificados y de confianza. El elemento `Condition` de la primera instrucción prueba si `ec2:Owner` es `amazon`. Los usuarios no pueden lanzar una instancia con otras AMI (a menos que otra instrucción conceda a los usuarios permiso para ello).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1::image/ami-*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:Owner": "amazon"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Tipos de instancias
<a name="iam-example-runinstances-instance-type"></a>

La siguiente política permite a los usuarios iniciar instancias utilizando únicamente el tipo de instancia `t2.micro` o `t2.small`, que usted podría utilizar para controlar costos. Los usuarios no pueden iniciar instancias más grandes porque el elemento `Condition` de la primera instrucción prueba si `ec2:InstanceType` es `t2.micro` o `t2.small`. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:InstanceType": ["t2.micro", "t2.small"]
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

Como alternativa, puede crear una política que deniegue a los usuarios permisos para iniciar instancias, salvo los tipos de instancias `t2.micro` y `t2.small`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        { 
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringNotEquals": {
            "ec2:InstanceType": ["t2.micro", "t2.small"]
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Subredes
<a name="iam-example-runinstances-subnet"></a>

La siguiente política permite a los usuarios iniciar instancias utilizando únicamente la subred especificada, `subnet-12345678`. El grupo no puede iniciar instancias en cualquier otra subred (a menos que otra instrucción conceda a los usuarios permiso para ello).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-12345678",
        "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
        "arn:aws:ec2:us-east-1:111122223333:instance/*",
        "arn:aws:ec2:us-east-1:111122223333:volume/*",
        "arn:aws:ec2:us-east-1::image/ami-*",
        "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
        "arn:aws:ec2:us-east-1:111122223333:security-group/*"
      ]
    }
   ]
}
```

------

Como alternativa, puede crear una política que deniegue a los usuarios permisos para iniciar una instancia en cualquier otra subred. La instrucción actúa así denegando el permiso para crear una interfaz de red, salvo en la ubicación donde la subred `subnet-12345678` está especificada. Esta denegación anula cualquier otra política creada para permitir el lanzamiento de instancias en otras subredes.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
         {
      "Effect": "Deny",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*"
      ],
      "Condition": {
         "ArnNotEquals": {
            "ec2:Subnet": "arn:aws:ec2:us-east-1:111122223333:subnet/subnet-12345678"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-1::image/ami-*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:instance/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:volume/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*"
         ]
      }
   ]
}
```

------

### Volúmenes de EBS
<a name="iam-example-runinstances-volumes"></a>

La siguiente política permite a los usuarios iniciar instancias únicamente si los volúmenes EBS de la instancia están cifrados. El usuario debe iniciar una instancia desde una AMI que se creó con instantáneas cifradas para garantizar el cifrado del volumen raíz. Cualquier volumen adicional que el usuario adjunte a la instancia durante el lanzamiento también debe estar cifrado.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
                {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:*:volume/*"
            ],
            "Condition": {
                "Bool": {
                    "ec2:Encrypted": "true"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:security-group/*"
            ]
        }
    ]
}
```

------

### Etiquetas
<a name="iam-example-runinstances-tags"></a>

**Etiquetar instancias durante la creación**

La siguiente política permite a los usuarios iniciar instancias y etiquetarlas durante la creación. En las acciones de creación de recursos que aplican etiquetas, los usuarios deben tener permisos para utilizar la acción `CreateTags`. La segunda instrucción utiliza la clave de condición `ec2:CreateAction` para permitir a los usuarios crear etiquetas únicamente en el contexto de `RunInstances` y solo para instancias. Los usuarios no pueden etiquetar recursos ya existentes ni tampoco etiquetar volúmenes utilizando la solicitud `RunInstances`. 

Para obtener más información, consulte [Conceder permisos para etiquetar recursos de Amazon EC2 durante la creación](supported-iam-actions-tagging.md).

------
#### [ JSON ]

****  

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

------

**Etiquetar instancias y volúmenes durante la creación con etiquetas específicas**

La siguiente política contiene la clave de condición `aws:RequestTag` que exige a los usuarios que etiqueten todas las instancias que se creen con `RunInstances`, con las etiquetas `environment=production` y `purpose=webserver`. Si los usuarios no transmiten estas etiquetas en concreto o si no especifican ninguna etiqueta, la solicitud dará un error.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1::image/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
          "arn:aws:ec2:us-east-1:111122223333:volume/*",
          "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
             "aws:RequestTag/environment": "production" ,
             "aws:RequestTag/purpose": "webserver"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

**Etiquetar instancias y volúmenes durante la creación con al menos una etiqueta específica**

La siguiente política utiliza el modificador `ForAnyValue` en la condición `aws:TagKeys` para indicar que debe especificarse como mínimo una etiqueta en la solicitud y que esta debe contener la clave `environment` o `webserver`. La etiqueta debe aplicarse tanto a las instancias como a los volúmenes. Se puede especificar cualquier valor de etiqueta en la solicitud. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-1::image/*",
         "arn:aws:ec2:us-east-1:111122223333:subnet/*",
         "arn:aws:ec2:us-east-1:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-1:111122223333:security-group/*",
         "arn:aws:ec2:us-east-1:111122223333:key-pair/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
          "ec2:RunInstances"
      ],
      "Resource": [
          "arn:aws:ec2:us-east-1:111122223333:volume/*",
          "arn:aws:ec2:us-east-1:111122223333:instance/*"
      ],
      "Condition": {
          "ForAnyValue:StringEquals": {
              "aws:TagKeys": ["environment","webserver"]
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
          "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
          "StringEquals": {
              "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

**Si las instancias se etiquetan durante la creación, deben etiquetarse con una etiqueta específica**

En la siguiente política, los usuarios no tienen que especificar etiquetas en la solicitud, pero si lo hacen, la etiqueta tiene que ser `purpose=test`. No se permite ninguna otra etiqueta. Los usuarios pueden aplicar etiquetas a todos los recursos de la solicitud `RunInstances` que lo admitan.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
         "StringEquals": {
             "aws:RequestTag/purpose": "test",
             "ec2:CreateAction" : "RunInstances"
          },
          "ForAllValues:StringEquals": {
              "aws:TagKeys": "purpose"
          }
       }
    }
  ]
}
```

------

Para no permitir ninguna etiqueta llamada al crear para RunInstances



------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

Permitir solo etiquetas específicas para spot-instances-request. La incoherencia sorpresa número 2 entra en juego aquí. En circunstancias normales, no especificar ninguna etiqueta dará como resultado No autenticado. En el caso de spot-instances-request, esta política no se evaluará si no hay etiquetas spot-instances-request, por lo que una solicitud Subasta en ejecución sin etiqueta tendrá éxito. 

### Etiquetas en una plantilla de lanzamiento
<a name="iam-example-tags-launch-template"></a>

En el siguiente ejemplo, los usuarios pueden lanzar instancias, pero solo si usan una plantilla de lanzamiento específica (`lt-09477bcd97b0d310e`). La clave de condición `ec2:IsLaunchTemplateResource` evita que los usuarios invaliden cualquiera de los recursos especificados en la plantilla de lanzamiento. La segunda parte de la instrucción permite a los usuarios etiquetar instancias en el momento de la creación — Esta parte es necesaria si se especifican las etiquetas para la instancia en la plantilla de lanzamiento.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d310e" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:CreateTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
         "StringEquals": {
             "ec2:CreateAction" : "RunInstances"
          }
       }
    }
  ]
}
```

------

### GPU elásticas
<a name="iam-example-runinstances-egpu"></a>

En la siguiente política, los usuarios pueden iniciar una instancia y especificar la GPU elástica que se va a asociar a la instancia. Los usuarios pueden iniciar instancias en cualquier región, pero solo pueden conectar una GPU elástica durante un lanzamiento en la región `us-east-2`. 

La clave de condición `ec2:ElasticGpuType` garantiza que las instancias usen el tipo de GPU elástico `eg1.medium` o `eg1.large`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
             {
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:111122223333:elastic-gpu/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:Region": "us-east-2",
                    "ec2:ElasticGpuType": [
                        "eg1.medium",
                        "eg1.large"
                    ]
                }  
            }
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/ami-*",
                "arn:aws:ec2:*:111122223333:network-interface/*",
                "arn:aws:ec2:*:111122223333:instance/*",
                "arn:aws:ec2:*:111122223333:subnet/*",
                "arn:aws:ec2:*:111122223333:volume/*",
                "arn:aws:ec2:*:111122223333:key-pair/*",
                "arn:aws:ec2:*:111122223333:security-group/*"
            ]
        }
    ]
}
```

------

### Plantillas de lanzamiento
<a name="iam-example-runinstances-launch-templates"></a>

En el siguiente ejemplo, los usuarios pueden lanzar instancias, pero solo si usan una plantilla de lanzamiento específica (`lt-09477bcd97b0d310e`). Los usuarios pueden omitir parámetros de la plantilla de lanzamiento al especificarlos en la acción `RunInstances`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d310e" 
          }
       }
    }
  ]
}
```

------

En este ejemplo, los usuarios pueden iniciar instancias, pero solo si usan una plantilla de lanzamiento. La política usa la clave de condición `ec2:IsLaunchTemplateResource` para evitar que los usuarios invaliden cualquiera de los ARN preexistentes de la plantilla de lanzamiento.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
         {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    }
  ]
}
```

------

En el siguiente ejemplo, la política permite a los usuarios iniciar instancias, pero solo si usan una plantilla de lanzamiento. Los usuarios no pueden omitir los parámetros de subred y de interfaz de red de la solicitud; estos parámetros solo pueden especificarse en la plantilla de lanzamiento. La primera parte de la instrucción utiliza el elemento [NotResource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notresource.html) para permitir todos los demás recursos, excepto las subredes y las interfaces de red. La segunda parte de la instrucción permite los recursos de subred y de interfaz de red, pero solo si provienen de la plantilla de lanzamiento.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "NotResource": ["arn:aws:ec2:us-east-1:111122223333:subnet/*",
                      "arn:aws:ec2:us-east-1:111122223333:network-interface/*" ],
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          }
       }
    },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": ["arn:aws:ec2:us-east-1:111122223333:subnet/*",
                   "arn:aws:ec2:us-east-1:111122223333:network-interface/*" ],
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
          "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    }
  ]
}
```

------

En el siguiente ejemplo, se le permite a los usuarios iniciar instancias solo si usan una plantilla de lanzamiento que contenga la etiqueta `Purpose=Webservers`. Los usuarios no pueden omitir ninguno de los parámetros de la plantilla de lanzamiento en la acción `RunInstances`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	  
  "Statement": [
        {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "NotResource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
         "ArnLike": {
             "ec2:LaunchTemplate": "arn:aws:ec2:us-east-1:111122223333:launch-template/*" 
          },
         "Bool": {
             "ec2:IsLaunchTemplateResource": "true"
          }
       }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
       "StringEquals": {
           "aws:ResourceTag/Purpose": "Webservers" 
        }
       }
     }
  ]
}
```

------

## Trabajar con Instancias de spot
<a name="iam-example-spot-instances"></a>

Puede utilizar la acción RunInstances para crear solicitudes de instancias de spot y etiquetarlas durante la creación. El recurso que se debe especificar para RunInstances es `spot-instances-request`.

El recurso `spot-instances-request` se evalúa en la política de IAM de la siguiente manera:
+ Si no etiqueta la solicitud de instancia de spot durante la creación, Amazon EC2 no evalúa el recurso `spot-instances-request` en la instrucción RunInstances.
+ Si etiqueta la solicitud de instancia de spot durante la creación, Amazon EC2 evalúa el recurso `spot-instances-request` en la instrucción RunInstances.

Por lo tanto, para el recurso `spot-instances-request`, se aplican las siguientes reglas a la política de IAM:
+ Si utiliza RunInstances para crear una solicitud de instancia de spot y no tiene la intención de etiquetar dicha solicitud durante la creación, no es necesario que permita explícitamente el recurso `spot-instances-request`; la llamada se realizará correctamente.
+ Si utiliza RunInstances para crear una solicitud de instancia de spot y tiene la intención de etiquetar dicha solicitud durante la creación, debe incluir el recurso `spot-instances-request` en la instrucción de permiso de RunInstances; de lo contrario, la llamada devolverá un error.
+ Si utiliza RunInstances para crear una solicitud de instancia de spot y tiene la intención de etiquetar dicha solicitud durante la creación, debe especificar el recurso `spot-instances-request` o incluir el comodín `*` en la instrucción de permiso de CreateTags; de lo contrario, la llamada devolverá un error. 

Puede solicitar Instancias de spot mediante RunInstances o RequestSpotInstances. Las siguientes políticas de IAM de ejemplo siguientes solo se aplican cuando se solicita Instancias de spot mediante RunInstances.

**Ejemplo: solicitud de Instancias de spot mediante RunInstances**

La siguiente política permite a los usuarios solicitar Instancias de spot mediante la acción RunInstances. El recurso `spot-instances-request`, creado por RunInstances, solicita Instancias de spot.

**nota**  
Si va a utilizar RunInstances para crear solicitudes de instancias de spot, puede omitir `spot-instances-request` de la lista `Resource` si no tiene la intención de etiquetar las solicitudes de instancias de spot durante la creación. Esto se debe a que Amazon EC2 no evalúa el recurso `spot-instances-request` en la instrucción RunInstances si la solicitud de instancia de spot no se etiqueta durante la creación.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        }
    ]
}
```

------

**aviso**  
**NO ADMITIDO: ejemplo: denegar permiso a los usuarios para solicitar Instancias de spot utilizando RunInstances**  
No se admite la política siguiente para el recurso `spot-instances-request`.  
La siguiente política tiene por objeto conceder a los usuarios el permiso para iniciar Instancias bajo demanda, pero denegar a los usuarios el permiso para solicitar Instancias de spot. El recurso `spot-instances-request`, creado por RunInstances, es el recurso que solicita Instancias de spot. La segunda instrucción tiene por objeto denegar la acción RunInstances para el recurso `spot-instances-request`. Sin embargo, no se admite esta condición porque Amazon EC2 no evalúa el recurso `spot-instances-request` en la instrucción RunInstances si la solicitud de instancia de spot no se etiqueta durante la creación.  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*"
            ]
        },
        {
            "Sid": "DenySpotInstancesRequestsNOTSUPPORTEDDONOTUSE",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
        }
    ]
}
```

**Ejemplo: etiquetar solicitudes de instancias de spot durante la creación**

La siguiente política permite a los usuarios etiquetar todos los recursos que se crean durante el lanzamiento de la instancia. La primera instrucción permite a RunInstances crear los recursos enumerados. El recurso `spot-instances-request`, creado por RunInstances, es el recurso que solicita Instancias de spot. La segunda instrucción proporciona un comodín `*` para permitir que se etiqueten todos los recursos cuando se crean durante el lanzamiento de la instancia.

**nota**  
Si etiqueta la solicitud de instancia de spot durante la creación, Amazon EC2 evalúa el recurso `spot-instances-request` en la instrucción RunInstances. Por lo tanto, debe permitir explícitamente el recurso `spot-instances-request` para la acción RunInstances; de lo contrario, la llamada devolverá un error.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

**Ejemplo: denegar el etiquetado durante la creación para solicitudes de instancias de spot**

La política siguiente deniega a los usuarios el permiso para etiquetar los recursos que se crean durante el lanzamiento de la instancia.

La primera instrucción permite a RunInstances crear los recursos enumerados. El recurso `spot-instances-request`, creado por RunInstances, es el recurso que solicita Instancias de spot. La segunda instrucción proporciona un comodín `*` para denegar todos los recursos que se etiquetan cuando se crean durante el lanzamiento de la instancia. Si `spot-instances-request` o cualquier otro recurso se etiqueta durante la creación, la llamada RunInstances devolverá un error.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "DenyTagResources",
            "Effect": "Deny",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

**aviso**  
**NO ADMITIDO – Ejemplo: permitir la creación de una solicitud de instancia de spot solo si se le asigna una etiqueta específica**  
No se admite la política siguiente para el recurso `spot-instances-request`.  
La siguiente política tiene por objeto otorgar a RunInstances el permiso para crear una solicitud de instancia de spot solo si la solicitud se etiqueta con una etiqueta específica.   
La primera instrucción permite a RunInstances crear los recursos enumerados.  
La segunda instrucción tiene por objeto otorgar a los usuarios el permiso para crear una solicitud de instancia de spot solo si la solicitud tiene la etiqueta `environment=production`. Si esta condición se aplica a los demás recursos creados por RunInstances, si no se especifica ninguna etiqueta se producirá un error `Unauthenticated`. Sin embargo, si no se especifica ninguna etiqueta para la solicitud de instancia de spot, Amazon EC2 no evalúa el recurso `spot-instances-request` en la instrucción RunInstances, lo que da como resultado que RunInstances cree solicitudes de instancias de spot no etiquetadas.  
Tenga en cuenta que especificar una etiqueta que no sea `environment=production` da como resultado un error `Unauthenticated`, ya que si un usuario etiqueta una solicitud de instancia de spot, Amazon EC2 evalúa el recurso `spot-instances-request` en la instrucción RunInstances.  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*"
            ]
        },
        {
            "Sid": "RequestSpotInstancesOnlyIfTagIsEnvironmentProductionNOTSUPPORTEDDONOTUSE",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }

    ]
}
```

**Ejemplo: denegar la creación de una solicitud de instancia de spot si se le asigna una etiqueta específica**

La siguiente política deniega a RunInstances el permiso para crear una solicitud de instancia de spot si la solicitud está etiquetada con `environment=production`. 

La primera instrucción permite a RunInstances crear los recursos enumerados.

La segunda instrucción deniega a los usuarios el permiso para crear una solicitud de instancia de spot si la solicitud tiene la etiqueta `environment=production`. Si `environment=production` se especifica como etiqueta, se produce un error `Unauthenticated`. Especificar otras etiquetas o no especificar ninguna etiqueta dará como resultado la creación de una solicitud de instancia de spot.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRun",
            "Effect": "Allow",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1::image/*",
                "arn:aws:ec2:us-east-1:*:subnet/*",
                "arn:aws:ec2:us-east-1:*:network-interface/*",
                "arn:aws:ec2:us-east-1:*:security-group/*",
                "arn:aws:ec2:us-east-1:*:key-pair/*",
                "arn:aws:ec2:us-east-1:*:volume/*",
                "arn:aws:ec2:us-east-1:*:instance/*",
                "arn:aws:ec2:us-east-1:*:spot-instances-request/*"
            ]
        },
        {
            "Sid": "DenySpotInstancesRequests",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:us-east-1:*:spot-instances-request/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        },
        {
            "Sid": "TagResources",
            "Effect": "Allow",
            "Action": "ec2:CreateTags",
            "Resource": "*"
        }
    ]
}
```

------

## Ejemplo: Trabajar con Instancias reservadas
<a name="iam-example-reservedinstances"></a>

La siguiente política da a los usuarios permiso para ver, modificar y adquirir Instancias reservadas en su cuenta.

No se pueden establecer permisos de nivel de recursos para Instancias reservadas individuales. Esta política significa que los usuarios tienen acceso a todas las Instancias reservadas de la cuenta.

El elemento `Resource` utiliza un comodín \$1 para indicar que los usuarios pueden especificar todos los recursos con la acción; en dicho caso, pueden generar una lista y modificar todas las Instancias reservadas de la cuenta. También pueden adquirir Instancias reservadas utilizando las credenciales de cuenta. El carácter comodín \$1 también es necesario en los casos en los que la acción de la API no admita permisos de nivel de recursos.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeReservedInstances", 
        "ec2:ModifyReservedInstances",
        "ec2:PurchaseReservedInstancesOffering", 
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeReservedInstancesOfferings"
      ],
      "Resource": "*"
    }
   ]
}
```

------

Para permitir a los usuarios ver y modificar las Instancias reservadas de su cuenta, pero no adquirir otras Instancias reservadas nuevas.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
   "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeReservedInstances", 
        "ec2:ModifyReservedInstances",
        "ec2:DescribeAvailabilityZones"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Ejemplo: Etiquetar recursos
<a name="iam-example-taggingresources"></a>

La siguiente política permite a los usuarios utilizar la acción `CreateTags` para aplicar etiquetas a una instancia solo si la etiqueta contiene la clave `environment` y el valor `production`. No se permite ninguna otra etiqueta y el usuario no puede etiquetar ningún otro tipo de recurso.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "production"
                }
            }
        }
    ]
}
```

------

La siguiente política permite a los usuarios etiquetar cualquier recurso etiquetable que ya tenga una etiqueta con una clave de `owner` y un valor del nombre de usuario. Asimismo, los usuarios deben especificar una etiqueta con una clave de `anycompany:environment-type` y un valor que sea `test` o `prod` en la solicitud. Los usuarios pueden especificar más etiquetas en la solicitud.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/anycompany:environment-type": ["test","prod"],
                    "aws:ResourceTag/owner": "${aws:username}"
                } 
            }
        }
    ]
}
```

------

Puede crear una política de IAM que permita a los usuarios eliminar etiquetas específicas de un recurso. Por ejemplo, la siguiente política permite a los usuarios eliminar etiquetas de un volumen si las claves de etiqueta especificadas en la solicitud son `environment` o `cost-center`. Se puede especificar cualquier valor para la etiqueta, pero la clave de etiqueta debe coincidir con una de las dos claves indicadas.

**nota**  
Si elimina un recurso, también se eliminarán todas las etiquetas que este tenga asociadas. Los usuarios no necesitan permisos para utilizar la acción `ec2:DeleteTags` para eliminar un recurso que tenga etiquetas; solo los necesitan para realizar la acción de eliminación.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Effect": "Allow",
      "Action": "ec2:DeleteTags",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:volume/*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["environment","cost-center"]
        }
      }
    }
  ]
}
```

------

Esta política permite a los usuarios eliminar únicamente la etiqueta `environment=prod` en cualquier recurso solo si el recurso ya está etiquetado con la clave de `owner` y un valor del nombre de usuario. Los usuarios no pueden eliminar ninguna etiqueta de recurso más.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
      {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteTags"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:*/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/environment": "prod",
          "aws:ResourceTag/owner": "${aws:username}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["environment"]
        }
      }
    }
  ]
}
```

------

## Ejemplo: Trabajar con roles de IAM
<a name="iam-example-iam-roles"></a>

La siguiente política permite a los usuarios asociar, sustituir y desasociar un rol de IAM a instancias que tienen la etiqueta `department=test`. Para sustituir o desasociar un rol de IAM, se necesita un ID de asociación, por lo que la política también concede a los usuarios permiso para utilizar la acción `ec2:DescribeIamInstanceProfileAssociations`. 

Los usuarios deben tener permiso para utilizar la acción `iam:PassRole` con objeto de poder pasar el rol a la instancia. 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:AssociateIamInstanceProfile",
        "ec2:ReplaceIamInstanceProfileAssociation",
        "ec2:DisassociateIamInstanceProfile"
      ],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/department":"test"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": "ec2:DescribeIamInstanceProfileAssociations",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::111122223333:role/DevTeam*"
    }
  ]
}
```

------

La siguiente política permite a los usuarios adjuntar o reemplazar un rol de IAM para cualquier instancia. Los usuarios solo pueden asociar o sustituir roles de IAM con nombres que empiecen por `TestRole-`. En el caso de la acción `iam:PassRole`, asegúrese de especificar el nombre del rol de IAM y no el perfil de instancia (si los nombres son diferentes). Para obtener más información, consulte [Perfiles de instancias](iam-roles-for-amazon-ec2.md#ec2-instance-profile).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:AssociateIamInstanceProfile",
                "ec2:ReplaceIamInstanceProfileAssociation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:DescribeIamInstanceProfileAssociations",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::111122223333:role/TestRole-*"
        }
    ]
}
```

------

## Ejemplo: Trabajar con tablas de ruteo
<a name="iam-example-route-tables"></a>

La siguiente política permite a los usuarios añadir, eliminar y reemplazar rutas únicamente para las tablas de ruteo que están asociadas a la VPC `vpc-ec43eb89`. Para especificar una VPC para la clave de condición `ec2:Vpc`, debe especificar el ARN completo de la VPC.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:DeleteRoute",
                "ec2:CreateRoute",
                "ec2:ReplaceRoute"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:route-table/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:Vpc": "arn:aws:ec2:us-east-1:111122223333:vpc/vpc-ec43eb89"
                }
            }
        }
    ]
}
```

------

## Ejemplo: Permitir que una instancia específica vea los recursos de otros servicios de AWS
<a name="iam-example-source-instance"></a>

El siguiente es un ejemplo de una política que puede asociar a un rol de IAM. La política permite que una instancia vea los recursos de diversos servicios de AWS. Usa la clave de condición `ec2:SourceInstanceARN` para especificar que la instancia desde la que se realiza la solicitud debe ser `i-093452212644b0dd6`. Si el mismo rol de IAM está asociado a otra instancia, la otra instancia no puede realizar ninguna de estas acciones.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
              {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVolumes",
                "s3:ListAllMyBuckets",
                "dynamodb:ListTables",
                "rds:DescribeDBInstances"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "ArnEquals": {
                    "ec2:SourceInstanceARN": "arn:aws:ec2:us-east-1:111122223333:instance/i-093452212644b0dd6"
                }
            }
        }
    ]
}
```

------

## Ejemplo: Trabajar con plantillas de lanzamiento
<a name="iam-example-launch-templates"></a>

La siguiente política permite a los usuarios crear una versión de una plantilla de lanzamiento y modificar una plantilla de lanzamiento, pero solo para la plantilla de lanzamien (`lt-09477bcd97b0d3abc`). Los usuarios no pueden trabajar con otras plantillas de lanzamiento.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
   {
      "Action": [
        "ec2:CreateLaunchTemplateVersion",
        "ec2:ModifyLaunchTemplate"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/lt-09477bcd97b0d3abc"
    }
  ]
}
```

------

La siguiente política permite a los usuarios eliminar cualquier plantilla de lanzamiento o versión de la misma, siempre que contenga la etiqueta `Purpose`=`Testing`.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
       {
      "Action": [
        "ec2:DeleteLaunchTemplate",
        "ec2:DeleteLaunchTemplateVersions"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:launch-template/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Purpose": "Testing"
        }
      }
    }
  ]
}
```

------

## Trabajar con metadatos de instancias
<a name="iam-example-instance-metadata"></a>

Las políticas siguientes garantizan que los usuarios solo puedan recuperar [metadatos de instancias](ec2-instance-metadata.md) mediante Servicio de metadatos de instancia, versión 2 (IMDSv2). Puede combinar las cuatro políticas siguientes en una sola política con cuatro instrucciones. Cuando se combina como una sola política, puede utilizar la política como una política de control de servicios (SCP). Puede funcionar igual de bien que una política de *denegación* que se aplique a una política de IAM existente (quitando y limitando los permisos existentes) o como una SCP que se aplique globalmente a una cuenta, una unidad organizativa (UO) o una organización completa.

**nota**  
Las siguientes políticas de opciones de metadatos de RunInstances se deben utilizar junto con una política que conceda a la entidad principal permisos para iniciar una instancia con RunInstances. Si la entidad principal no tiene permisos RunInstances, no podrá iniciar una instancia. Para obtener más información, consulte las políticas en [Trabajar con instancias](#iam-example-instances) y [Iniciar instancias (RunInstances)](#iam-example-runinstances).

**importante**  
Si utiliza grupos de Auto Scaling y necesita exigir el uso de IMDSv2 en todas las instancias nuevas, los grupos de Auto Scaling deben usar *plantillas de lanzamiento*.  
Cuando un grupo de Auto Scaling utiliza una plantilla de lanzamiento, los permisos `ec2:RunInstances` de la entidad principal de IAM se comprueban cuando se crea un nuevo grupo de Auto Scaling. También se comprueban cuando se actualiza un grupo de Auto Scaling existente para utilizar una nueva plantilla de lanzamiento o una nueva versión de una plantilla de lanzamiento.  
Las restricciones sobre el uso de IMDSv1 en entidades principales de IAM para `RunInstances` solo se comprueban cuando se crea o actualiza un grupo de Auto Scaling que utiliza una plantilla de lanzamiento. Para un grupo de Auto Scaling configurado para usar la plantilla de lanzamiento `Latest` o `Default`, los permisos no se comprueban cuando se crea una nueva versión de la plantilla de lanzamiento. Para que se comprueben los permisos, debe configurar el grupo de Auto Scaling para que utilice una *versión específica* de la plantilla de lanzamiento.  
Deshabilite el uso de configuraciones de lanzamiento para todas las cuentas de la organización mediante políticas de control de servicios (SCP) o límites de permisos de IAM para las nuevas entidades principales que se crean. Para las entidades principales de IAM existentes con permisos de grupos de Auto Scaling, actualice sus políticas asociadas con esta clave de condición. Para deshabilitar el uso de configuraciones de lanzamiento, cree o modifique la SCP, el límite de permisos o la política de IAM correspondientes con la clave de condición `"autoscaling:LaunchConfigurationName"` con el valor especificado como `null`.
Para las nuevas plantillas de lanzamiento, configure las opciones de metadatos de la instancia en la plantilla de lanzamiento. Para las plantillas de lanzamiento existentes, cree una nueva versión de la plantilla de lanzamiento y configure las opciones de metadatos de la instancia en la nueva versión.
En la política que otorga a cualquier entidad principal el permiso para usar una plantilla de lanzamiento, restrinja la asociación de `$latest` y `$default` especificando `"autoscaling:LaunchTemplateVersionSpecified": "true"`. Al restringir el uso a una versión específica de una plantilla de lanzamiento, puede asegurarse de que las nuevas instancias se iniciarán con la versión en la que están configuradas las opciones de metadatos de la instancia. Para obtener más información, consulte [LaunchTemplateSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_LaunchTemplateSpecification.html) en la *Referencia de la API de Amazon EC2 Auto Scaling*, en concreto el parámetro `Version`.
Para un grupo de Auto Scaling que utilice una configuración de lanzamiento, reemplace la configuración de lanzamiento por una plantilla de lanzamiento. Para obtener más información, consulte [Migración de los grupos de escalado automático a plantillas de inicialización](https://docs.aws.amazon.com/autoscaling/ec2/userguide/migrate-to-launch-templates.html) en la *Guía del usuario de Amazon EC2 Auto Scaling*.
Para un grupo de Auto Scaling que utilice una plantilla de lanzamiento, asegúrese de que utiliza una nueva plantilla de lanzamiento con las opciones de metadatos de la instancia configuradas o una nueva versión de la plantilla de lanzamiento actual con las opciones de metadatos de la instancia configuradas. Para obtener más información, consulte [update-auto-scaling-group](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html).

**Topics**
+ [Requerir el uso de IMDSv2](#iam-example-instance-metadata-requireIMDSv2)
+ [Denegar la exclusión voluntaria de IMDSv2](#iam-example-instance-metadata-denyoptoutIMDSv2)
+ [Especificar el límite máximo de saltos](#iam-example-instance-metadata-maxHopLimit)
+ [Limitar quién puede modificar las opciones de metadatos de instancia](#iam-example-instance-metadata-limit-modify-IMDS-options)
+ [Exigir que las credenciales de rol se recuperen de IMDSv2](#iam-example-instance-metadata-require-roles-to-use-IMDSv2-credentials)

### Requerir el uso de IMDSv2
<a name="iam-example-instance-metadata-requireIMDSv2"></a>

La siguiente política especifica que no se puede llamar a la API RunInstances a menos que la instancia también requiera el uso de IMDSv2 (indicado por `"ec2:MetadataHttpTokens": "required"`). Si no especifica que la instancia requiere IMDSv2, obtendrá un error `UnauthorizedOperation` cuando llame a la API RunInstances.

------
#### [ JSON ]

****  

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

------

### Denegar la exclusión voluntaria de IMDSv2
<a name="iam-example-instance-metadata-denyoptoutIMDSv2"></a>

La siguiente política especifica que no se puede llamar a la API de `ModifyInstanceMetadataOptions` y se permite la opción IMDSv1 o IMDSv2. Si llama a la API de `ModifyInstanceMetadataOptions`, el atributo `HttpTokens` debe estar establecido en `required`. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "DenyIMDSv1HttpTokensModification",
        "Effect": "Deny",
        "Action": "ec2:ModifyInstanceMetadataOptions",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotEquals": {
                "ec2:Attribute/HttpTokens": "required"
            },
            "Null": {
                "ec2:Attribute/HttpTokens": false
            }
        }
    }]
}
```

------

### Especificar el límite máximo de saltos
<a name="iam-example-instance-metadata-maxHopLimit"></a>

La siguiente política especifica que no se puede llamar a la API RunInstances a menos que también especifique un límite de saltos y que el límite de saltos no sea superior a 3. Si no se cumplen estos requisitos, aparece un error `UnauthorizedOperation` al llamar a la API RunInstances.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "MaxImdsHopLimit",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "NumericGreaterThan": {
                    "ec2:MetadataHttpPutResponseHopLimit": "3"
                }
            }
        }
    ]
}
```

------

### Limitar quién puede modificar las opciones de metadatos de instancia
<a name="iam-example-instance-metadata-limit-modify-IMDS-options"></a>

La siguiente política solo permite que los usuarios con el rol `ec2-imds-admins` hagan cambios en las opciones de metadatos de instancia. Si alguna entidad principal que no sea el rol `ec2-imds-admins` intenta llamar a la API ModifyInstanceMetadataOptions, aparecerá un error `UnauthorizedOperation`. Esta instrucción podría utilizarse para controlar el uso de la API ModifyInstanceMetadataOptions; actualmente no hay controles de acceso detallados (condiciones) para la API ModifyInstanceMetadataOptions.

### Exigir que las credenciales de rol se recuperen de IMDSv2
<a name="iam-example-instance-metadata-require-roles-to-use-IMDSv2-credentials"></a>

La siguiente política especifica que si esta política se aplica a un rol y el servicio EC2 asume el rol y las credenciales resultantes se utilizan para firmar una solicitud, la solicitud debe estar firmada por las credenciales de rol EC2 recuperadas de IMDSv2. De lo contrario, todas sus llamadas a la API obtendrán un error `UnauthorizedOperation`. Esta instrucción/política se puede aplicar de manera general porque, si la solicitud no está firmada por las credenciales del rol de EC2, no tiene ningún efecto.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
               {
            "Sid": "RequireAllEc2RolesToUseV2",
            "Effect": "Deny",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "NumericLessThan": {
                    "ec2:RoleDelivery": "2.0"
                }
            }
        }
    ]
}
```

------

## Uso de volúmenes e instantáneas de Amazon EBS
<a name="iam-example-ebs"></a>

Para obtener ejemplos de políticas para trabajar con volúmenes e instantáneas de Amazon EBS, consulte [Ejemplos de políticas basadas en identidad para Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/security_iam_id-based-policy-examples.html).

# Políticas de ejemplo para controlar el acceso a la consola de Amazon EC2
<a name="iam-policies-ec2-console"></a>

Puede utilizar las políticas de IAM para conceder a los usuarios los permisos necesarios para trabajar con Amazon EC2. Para obtener instrucciones paso a paso, consulte [Creación de políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la *Guía del usuario de IAM*.

La consola utiliza acciones de API adicionales para sus características, por lo que es posible que estas políticas no funcionen como es debido. Por ejemplo, un usuario que tenga permiso para utilizar únicamente la acción de API `DescribeVolumes` obtendrá errores cuando intente ver volúmenes en la consola. En esta sección se muestran políticas que permiten a los usuarios utilizar partes específicas de la consola. Para obtener más información acerca de cómo crear políticas para la consola de Amazon EC2, consulte la siguiente publicación del Blog de seguridad de AWS: [Granting Users Permission to Work in the Amazon EC2 Console](https://aws.amazon.com/blogs/security/granting-users-permission-to-work-in-the-amazon-ec2-console/).

Los siguientes ejemplos muestran instrucciones de política que puede utilizar para conceder permisos a los usuarios para utilizar Amazon EC2. Reemplace cada *marcador de posición de entrada del usuario* con información propia. Estas políticas están diseñadas para solicitudes que se realizan con la Consola de administración de AWS. La consola de Amazon EC2 puede llamar a varias acciones de API para mostrar un único recurso y puede ser que no sea evidente hasta que el usuario intente realizar una tarea y la consola muestre un error. Para obtener más información, consulte la siguiente entrada del blog de seguridad de AWS: [Concesión de permisos a los usuarios para trabajar en la consola de Amazon EC2](https://aws.amazon.com/blogs/security/granting-users-permission-to-work-in-the-amazon-ec2-console/).

**Topics**
+ [Acceso de solo lectura](#ex-read-only)
+ [Uso del asistente de inicialización de instancias de EC2](#ex-launch-wizard)
+ [Trabajar con grupos de seguridad](#ex-security-groups)
+ [Trabajar con direcciones IP elásticas](#ex-eip)
+ [Trabajar con Instancias reservadas](#ex-reservedinstances)

Para ayudarlo a establecer qué acciones de API son necesarias para realizar tareas en la consola, puede utilizar un servicio que registre llamadas, como AWS CloudTrail. Si su política no concede permiso para crear o modificar un recurso concreto, la consola muestra un mensaje codificado con información de diagnóstico. Puede descodificar el mensaje mediante la acción [DecodeAuthorizationMessage](https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html) de la API para AWS STS o el comando [decode-authorization-message](https://docs.aws.amazon.com/cli/latest/reference/sts/decode-authorization-message.html) de la AWS CLI.

## Ejemplo: Acceso de solo lectura
<a name="ex-read-only"></a>

Para permitir a los usuarios ver todos los recursos de la consola de Amazon EC2, puede utilizar la política del ejemplo siguiente: [Ejemplo: Acceso de solo lectura](ExamplePolicies_EC2.md#iam-example-read-only). Los usuarios no pueden realizar ninguna acción en dichos recursos ni crear recursos nuevos a menos que otra instrucción les conceda permiso para ello.

**Ver instancias, AMI e instantáneas**

Como alternativa, puede proporcionar acceso de solo lectura a un subconjunto de recursos. Para ello, reemplace el carácter comodín \$1 en la acción de API `ec2:Describe` con acciones `ec2:Describe` específicas para cada recurso. La siguiente política permite a los usuarios ver todas las instancias, AMI e instantáneas de la consola de Amazon EC2. La acción `ec2:DescribeTags` permite a los usuarios ver AMI públicas. La consola exige la información de etiquetado para mostrar las AMI públicas; sin embargo, puede eliminar esta acción para permitir que los usuarios vean únicamente AMI privadas.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances", 
         "ec2:DescribeImages",
         "ec2:DescribeTags", 
         "ec2:DescribeSnapshots"
      ],
      "Resource": "*"
   }
   ]
}
```

------

**nota**  
Las acciones de API `ec2:Describe*` de Amazon EC2 no admiten los permisos de nivel de recursos, por lo que no puede controlar qué recursos individuales pueden ver los usuarios en la consola. Por lo tanto, el carácter comodín \$1 es necesario en el elemento `Resource` de la instrucción anterior. Para obtener más información acerca de qué ARN puede usar con qué acciones de la API de Amazon EC2, consulte [Acciones, recursos y claves de condición para Amazon EC2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html).

**Ver instancias y métricas de CloudWatch**

La siguiente política permite a los usuarios ver instancias en la consola de Amazon EC2; así como alarmas y métricas de CloudWatch en la pestaña **Monitorización** de la página **Instancia**. La consola de Amazon EC2 utiliza la API de CloudWatch para visualizar las alarmas y las métricas, por lo que debe conceder a los usuarios permiso para utilizar las acciones `cloudwatch:DescribeAlarms`, `cloudwatch:DescribeAlarmsForMetric`, `cloudwatch:ListMetrics`, `cloudwatch:GetMetricStatistics` y `cloudwatch:GetMetricData`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances",
         "ec2:DescribeInstanceTypes",
         "cloudwatch:DescribeAlarms",
         "cloudwatch:DescribeAlarmsForMetric",
         "cloudwatch:ListMetrics",
         "cloudwatch:GetMetricStatistics",
         "cloudwatch:GetMetricData"
      ],
      "Resource": "*"
   }
   ]
}
```

------

## Ejemplo: uso del asistente de inicialización de instancias de EC2
<a name="ex-launch-wizard"></a>

El asistente de inicialización de instancias de Amazon EC2 consiste en una pantalla con opciones para configurar y iniciar una instancia. Su política debe incluir un permiso para utilizar acciones de la API que permitan a los usuarios trabajar con opciones del asistente. Si su política no incluye dicho permiso, algunos elementos del asistente no se podrán cargar correctamente y los usuarios no podrán completar el lanzamiento.

**Acceso al asistente básico de instancias de lanzamiento**

Para completar correctamente un lanzamiento, debe darse a los usuarios permiso para utilizar la acción de API `ec2:RunInstances` y, como mínimo, las acciones de API siguientes:
+ `ec2:DescribeImages`: ver y seleccionar una AMI.
+ `ec2:DescribeInstanceTypes`: permite ver y seleccionar un tipo de instancia.
+ `ec2:DescribeVpcs`: ver las opciones de red disponibles.
+ `ec2:DescribeSubnets`: ver todas las subredes disponibles de la VPC elegida. 
+ `ec2:DescribeSecurityGroups` o `ec2:CreateSecurityGroup`: para ver y seleccionar un grupo de seguridad existente o para crear uno nuevo. 
+ `ec2:DescribeKeyPairs` o `ec2:CreateKeyPair`: seleccionar un par de claves existente o para crear uno nuevo.
+ `ec2:AuthorizeSecurityGroupIngress`: añadir reglas de entrada.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeImages",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeKeyPairs",
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups",
                "ec2:CreateSecurityGroup",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateKeyPair"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": "*"
        }
    ]
}
```

------

Puede añadir acciones de API a su política para proporcionar más opciones para los usuarios; por ejemplo:
+ `ec2:DescribeAvailabilityZones`: ver y seleccionar una zona de disponibilidad específica.
+ `ec2:DescribeNetworkInterfaces`: ver y seleccionar interfaces de red existentes para la subred seleccionada.
+ Para añadir reglas de salida a grupos de seguridad de VPC, debe conceder permiso a los usuarios para utilizar la acción de API `ec2:AuthorizeSecurityGroupEgress`. Para modificar o eliminar reglas ya existentes, debe conceder permiso a los usuarios para utilizar la acción de API `ec2:RevokeSecurityGroup*` pertinente.
+ `ec2:CreateTags`: etiquetar los recursos que crea `RunInstances`. Para obtener más información, consulte [Conceder permisos para etiquetar recursos de Amazon EC2 durante la creación](supported-iam-actions-tagging.md). Si los usuarios no tienen permiso para utilizar esta acción e intentan aplicar etiquetas en la página de etiquetado del asistente de inicialización de instancias, el lanzamiento generará un error.
**importante**  
Especificar un valor en **Nombre** al iniciar una instancia crea una etiqueta y requiere la acción `ec2:CreateTags`. Tenga cuidado al conceder a los usuarios permiso para usar la acción `ec2:CreateTags`, ya que ello limita su capacidad de usar la clave de condición `aws:ResourceTag` para restringir el uso de otros recursos. Si concede permiso a los usuarios para usar la acción `ec2:CreateTags`, pueden cambiar la etiqueta de un recurso para omitir esas restricciones. Para obtener más información, consulte [Controle el acceso mediante acceso basado en atributos](iam-policies-for-amazon-ec2.md#control-access-with-tags).
+ Para utilizar parámetros de Systems Manager al seleccionar una AMI, debe agregar `ssm:DescribeParameters` y `ssm:GetParameters` a la política. `ssm:DescribeParameters` concede a los usuarios el permiso para ver y seleccionar parámetros de Systems Manager. `ssm:GetParameters` concede a los usuarios el permiso para obtener los valores de los parámetros de Systems Manager. También puede restringir el acceso a parámetros de Systems Manager específicos. Para obtener más información, vea **Restringir el acceso a parámetros específicos de Systems Manager** más adelante en esta sección.

Actualmente, las acciones `Describe*` de la API de Amazon EC2 no admiten los permisos de nivel de recursos, por lo que no puede restringir qué recursos individuales pueden ver los usuarios en el asistente de inicialización de instancias. Sin embargo, puede aplicar permisos de nivel de recursos en la acción de API `ec2:RunInstances` para restringir qué recursos pueden utilizar los usuarios para iniciar una instancia. El lanzamiento generará un error si los usuarios seleccionan opciones sobre las que no tienen permiso de uso. 

**Limitar el acceso a un tipo de instancia, subred y región específicos**

La política siguiente permite a los usuarios iniciar instancias `t2.micro` utilizando AMI propiedad de Amazon y únicamente en una subred concreta (`subnet-1a2b3c4d`). Los usuarios solo pueden realizar inicios en la región especificada. Si seleccionan otra región u otro tipo de instancia, AMI o subred en el asistente de inicialización de instancias, el lanzamiento generará un error. 

La primera instrucción concede a los usuarios permiso para ver las opciones del asistente de inicialización de instancias, tal y como se demuestra en el ejemplo anterior. La segunda instrucción concede a los usuarios permiso para utilizar recursos de la interfaz de red, el volumen, el par de claves, el grupo de seguridad y la subred para la acción `ec2:RunInstances`, necesarios para iniciar una instancia en una VPC. Para obtener información sobre cómo usar la acción `ec2:RunInstances`, consulte [Iniciar instancias (RunInstances)](ExamplePolicies_EC2.md#iam-example-runinstances). La tercera y la cuarta instrucción conceden a los usuarios permiso para utilizar la instancia y los recursos de la AMI respectivamente, pero solo si la instancia es una instancia `t2.micro` y solo si la AMI es propiedad de Amazon o de determinados socios verificados y de confianza.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeInstances",
         "ec2:DescribeImages",
         "ec2:DescribeInstanceTypes",
         "ec2:DescribeKeyPairs", 
         "ec2:CreateKeyPair", 
         "ec2:DescribeVpcs", 
         "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", 
         "ec2:CreateSecurityGroup", 
         "ec2:AuthorizeSecurityGroupIngress"
	  ],
	  "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action":"ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:network-interface/*",
         "arn:aws:ec2:us-east-2:111122223333:volume/*",
         "arn:aws:ec2:us-east-2:111122223333:key-pair/*",
         "arn:aws:ec2:us-east-2:111122223333:security-group/*",
         "arn:aws:ec2:us-east-2:111122223333:subnet/subnet-1a2b3c4d"
      ]
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:instance/*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:InstanceType": "t2.micro"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
            "arn:aws:ec2:us-east-2::image/ami-*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:Owner": "amazon"
         }
      }
   }
   ]
}
```

------

**Restringir el acceso a parámetros específicos de Systems Manager**

La siguiente política concede acceso para utilizar parámetros de Systems Manager con un nombre específico.

La primera instrucción concede a los usuarios permiso para ver parámetros de Systems Manager al seleccionar una AMI en el asistente de lanzamiento de instancias. La segunda instrucción concede a los usuarios el permiso para utilizar solo parámetros con nombre `prod-*`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ssm:DescribeParameters"
      ],
      "Resource": "*"
   },
   {
      "Effect": "Allow",
      "Action": [
         "ssm:GetParameters"
      ],
     "Resource": "arn:aws:ssm:us-east-2:123456123456:parameter/prod-*"
   }
   ]
}
```

------

## Ejemplo: Trabajar con grupos de seguridad
<a name="ex-security-groups"></a>

**Ver los grupos de seguridad y añadir y eliminar reglas**

La siguiente política concede a los usuarios permiso para ver grupos de seguridad en la consola de Amazon EC2, así como para agregar y quitar reglas de entrada y salida y enumerar y modificar las descripciones de las reglas de los grupos de seguridad existentes que tengan la etiqueta `Department=Test`.

En la primera instrucción, la acción `ec2:DescribeTags` permite a los usuarios ver etiquetas en la consola, lo que les facilita la identificación de los grupos de seguridad sobre los que tienen permiso de modificación.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeSecurityGroups", 
         "ec2:DescribeSecurityGroupRules", 
         "ec2:DescribeTags"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
         "ec2:AuthorizeSecurityGroupIngress", 
         "ec2:RevokeSecurityGroupIngress", 
         "ec2:AuthorizeSecurityGroupEgress", 
         "ec2:RevokeSecurityGroupEgress", 
         "ec2:ModifySecurityGroupRules", 
         "ec2:UpdateSecurityGroupRuleDescriptionsIngress", 
         "ec2:UpdateSecurityGroupRuleDescriptionsEgress"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:security-group/*"
      ],
      "Condition": {
         "StringEquals": {
            "aws:ResourceTag/Department": "Test"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": [
         "ec2:ModifySecurityGroupRules"
      ],
      "Resource": [
         "arn:aws:ec2:us-east-2:111122223333:security-group-rule/*"
      ]
   }
]}
```

------

**Trabajar con el cuadro de diálogo Crear grupo de seguridad**

Puede crear una política que permita a los usuarios trabajar con el cuadro de diálogo **Crear grupo de seguridad** en la consola de Amazon EC2. Para utilizar este cuadro de diálogo, debe darse a los usuarios permiso para utilizar como mínimo las acciones de API siguientes:
+ `ec2:CreateSecurityGroup`: crear un nuevo grupo de seguridad. 
+ `ec2:DescribeVpcs`: ver una lista de las VPC existentes en la lista **VPC**.

Con estos permisos, los usuarios pueden crear correctamente un grupo de seguridad nuevo, pero no pueden añadirle reglas. Para trabajar con reglas en el cuadro de diálogo **Crear grupo de seguridad**, puede añadir las acciones de la API siguientes a una política:
+ `ec2:AuthorizeSecurityGroupIngress`: añadir reglas de entrada.
+ `ec2:AuthorizeSecurityGroupEgress`: añadir reglas de salida a grupos de seguridad de la VPC.
+ `ec2:RevokeSecurityGroupIngress`: modificar o eliminar reglas de entradas existentes. Esta acción es útil para permitir a los usuarios utilizar la característica **Copiar en uno nuevo** de la consola. La característica abre el cuadro de diálogo **Crear grupo de seguridad** y lo rellena con las mismas reglas que el grupo de seguridad que se seleccionó. 
+ `ec2:RevokeSecurityGroupEgress`: modificar o eliminar reglas de salida de grupos de seguridad de la VPC. Es útil para permitir a los usuarios modificar o eliminar la regla de salida predeterminada que permite todo el tráfico de salida.
+ `ec2:DeleteSecurityGroup`: responder cuando las reglas no válidas no se pueden guardar. La consola crea primero el grupo de seguridad y después añade las reglas especificadas. Si las reglas no son válidas, la acción genera un error y la consola intenta eliminar el grupo de seguridad. El usuario permanece en el cuadro de diálogo **Crear grupo de seguridad** para que se pueda corregir la regla no válida y volver a intentar crear el grupo de seguridad. Esta acción de API no es obligatoria, pero si no se concede a un usuario permiso para utilizarla y el usuario intenta crear un grupo de seguridad con reglas no válidas, el grupo de seguridad se creará sin reglas y el usuario deberá añadirlas después.
+ `ec2:UpdateSecurityGroupRuleDescriptionsIngress`: para agregar o actualizar descripciones de reglas de grupo de seguridad de entrada (entrantes).
+ `ec2:UpdateSecurityGroupRuleDescriptionsEgress`: para agregar o actualizar descripciones de reglas de grupo de seguridad de salida (salientes).
+ `ec2:ModifySecurityGroupRules`: para modificar reglas de grupo de seguridad.
+ `ec2:DescribeSecurityGroupRules`: para enumerar reglas de grupo de seguridad.

La siguiente política concede a los usuarios permiso para utilizar el cuadro de diálogo **Crear grupo de seguridad** y para crear reglas de entrada y de salida para los grupos de seguridad que están asociados a una VPC específica (`vpc-1a2b3c4d`). Los usuarios pueden crear grupos de seguridad para una VPC, pero no pueden agregarles reglas. Igualmente, los usuarios tampoco pueden añadir reglas a ningún grupo de seguridad que no esté asociado a la VPC `vpc-1a2b3c4d`. También se concede permiso a los usuarios para ver todos los grupos de seguridad de la consola. Esto facilita a los usuarios la identificación de los grupos de seguridad a los que pueden añadir reglas de entrada. Esta política también concede a los usuarios permiso para eliminar grupos de seguridad que estén asociados a la VPC `vpc-1a2b3c4d`. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeSecurityGroups", 
        "ec2:CreateSecurityGroup", 
        "ec2:DescribeVpcs"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteSecurityGroup", 
        "ec2:AuthorizeSecurityGroupIngress", 
        "ec2:AuthorizeSecurityGroupEgress"
      ],
      "Resource": "arn:aws:ec2:us-east-2:111122223333:security-group/*",
      "Condition":{
         "ArnEquals": {
            "ec2:Vpc": "arn:aws:ec2:us-east-2:111122223333:vpc/vpc-1a2b3c4d"
         }
      }
    }
   ]
}
```

------

## Ejemplo: Trabajar con direcciones IP elásticas
<a name="ex-eip"></a>

Para permitir a los usuarios ver direcciones IP elásticas en la consola de Amazon EC2, debe concederles permiso para utilizar la acción `ec2:DescribeAddresses`.

Para permitir a los usuarios trabajar con direcciones IP elásticas, puede añadir las siguientes acciones a su política.
+ `ec2:AllocateAddress`: asignar una dirección IP elástica.
+ `ec2:ReleaseAddress`: liberar una dirección IP elástica.
+ `ec2:AssociateAddress`: asociar una dirección IP elástica a una instancia o una interfaz de red.
+ `ec2:DescribeNetworkInterfaces` y `ec2:DescribeInstances`: trabajar con la pantalla **Asociar dirección**. La pantalla muestra las instancias o las interfaces de red disponibles a las que se puede adjuntar una dirección IP elástica.
+ `ec2:DisassociateAddress`: desvincular una dirección IP elástica de una instancia o una interfaz de red.

La siguiente política permite a los usuarios ver, asignar y asociar direcciones IP elásticas a instancias. Los usuarios no pueden asociar direcciones IP elásticas a interfaces de red, desvincular direcciones IP elásticas ni liberarlas.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAddresses",
                "ec2:AllocateAddress",
                "ec2:DescribeInstances",
                "ec2:AssociateAddress"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Ejemplo: Trabajar con Instancias reservadas
<a name="ex-reservedinstances"></a>

La siguiente política permite a los usuarios ver y modificar las instancias reservadas de su cuenta, así como adquirir nuevas instancias reservadas en la Consola de administración de AWS.

Esta política permite a los usuarios ver todas las Instancias reservadas, así como las Instancias bajo demanda, en la cuenta. No se pueden establecer permisos de nivel de recursos para Instancias reservadas individuales.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
         "ec2:DescribeReservedInstances", 
         "ec2:ModifyReservedInstances",
         "ec2:PurchaseReservedInstancesOffering", 
         "ec2:DescribeInstances",
         "ec2:DescribeInstanceTypes",
         "ec2:DescribeAvailabilityZones", 
         "ec2:DescribeReservedInstancesOfferings"
      ],
      "Resource": "*"
   }
   ]
}
```

------

La acción `ec2:DescribeAvailabilityZones` es necesaria para garantizar que la consola de Amazon EC2 pueda mostrar información sobre las zonas de disponibilidad en las que se pueden adquirir Instancias reservadas. La acción `ec2:DescribeInstances` no es obligatoria, pero permite asegurarse de que el usuario pueda ver las instancias de la cuenta y adquirir reservas para correlacionar las especificaciones correctas.

Puede ajustar las acciones de API para limitar el acceso de los usuarios; por ejemplo, si quita `ec2:DescribeInstances` y `ec2:DescribeAvailabilityZones`, el usuario tendrá acceso de solo lectura.

# Políticas administradas de AWS para Amazon EC2
<a name="security-iam-awsmanpol"></a>

Para agregar permisos a usuarios, grupos y roles, es más fácil utilizar las políticas administradas de AWS que escribirlas uno mismo. Se necesita tiempo y experiencia para [crear políticas administradas por el cliente de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) que le brinden a su equipo solo los permisos necesarios. Para comenzar a hacerlo con rapidez, puede utilizar nuestras políticas administradas de AWS. Estas políticas cubren casos de uso comunes y están disponibles en su cuenta de AWS. Para obtener más información sobre las políticas administradas de AWS, consulte [Políticas administradas de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la *Guía del usuario de IAM*.

Los servicios de AWS mantienen y actualizan las políticas administradas de AWS. No puede cambiar los permisos en las políticas gestionadas de AWS. En ocasiones, los servicios agregan permisos adicionales a una política administrada de AWS para admitir características nuevas. Este tipo de actualización afecta a todas las identidades (usuarios, grupos y roles) donde se asocia la política. Es más probable que los servicios actualicen una política administrada de AWScuando se lanza una nueva característica o cuando se ponen a disposición nuevas operaciones. Los servicios no quitan los permisos de una política administrada de AWS, por lo tanto, las actualizaciones de las políticas no deteriorarán los permisos existentes.

Además, AWS admite políticas administradas para funciones de trabajo que abarcan varios servicios. Por ejemplo, la política administrada de AWS ** ReadOnlyAccess** proporciona acceso de solo lectura a todos los servicios y los recursos de AWS. Cuando un servicio lanza una nueva característica, AWS agrega permisos de solo lectura para las operaciones y los recursos nuevos. Para obtener una lista y descripción de las políticas de funciones de trabajo, consulte [Políticas administradas de AWS para funciones de trabajo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) en la *Guía del usuario de IAM*.

## AWS Política administrada de: AmazonEC2FullAccess
<a name="security-iam-awsmanpol-AmazonEC2FullAccess"></a>

Puede adjuntar la política `AmazonEC2FullAccess` a las identidades de IAM. Esta política otorga permisos que permiten el acceso completo a Amazon EC2.

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2FullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2FullAccess.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: AmazonEC2ReadOnlyAccess
<a name="security-iam-awsmanpol-AmazonEC2ReadOnlyAccess"></a>

Puede adjuntar la política `AmazonEC2ReadOnlyAccess` a las identidades de IAM. Esta política otorga permisos que brindan acceso de solo lectura a Amazon EC2.

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ReadOnlyAccess.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: AmazonEC2ImageReferencesAccessPolicy
<a name="security-iam-awsmanpol-AmazonEC2ImageReferencesAccessPolicy"></a>

Puede asociar la política `AmazonEC2ImageReferencesAccessPolicy` a las identidades de IAM. Esta política concede los permisos necesarios para utilizar la API DescribeImageReferences de EC2, incluido el permiso para ver las instancias de EC2, las plantillas de inicialización, los parámetros de Systems Manager y las recetas de Image Builder. La política es compatible con la marca `IncludeAllResourceTypes` y seguirá funcionando cuando AWS añada soporte para nuevos tipos de recursos, lo que eliminará la necesidad de futuras actualizaciones de la política.

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ImageReferencesAccessPolicy.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: AWSEC2CapacityReservationFleetRolePolicy
<a name="security-iam-awsmanpol-AWSEC2CapacityReservationFleetRolePolicy"></a>

Esta política está asociada al rol vinculado a un servicio denominado **AWSServiceRoleForEC2CapacityReservationFleet** para permitir que el servicio cree, modifique y cancele reservas de capacidad en una flota de reservas de capacidad en su nombre. Para obtener más información, consulte [Uso de roles vinculados a servicios para la flota de reservas de capacidadUso de roles vinculados al servicio para EC2 Capacity Manager](using-service-linked-roles.md).

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityReservationFleetRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityReservationFleetRolePolicy.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: AWSEC2FleetServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2FleetServiceRolePolicy"></a>

Esta política se adjunta al rol vinculado a un servicio denominado **AWSServiceRoleForEC2Fleet** para permitir que la flota de EC2 solicite, lance, termine y etiquete instancias en su nombre. Para obtener más información, consulte [Rol vinculado al servicio de flota de EC2](ec2-fleet-prerequisites.md#ec2-fleet-service-linked-role).

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2FleetServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2FleetServiceRolePolicy.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: AWSEC2SpotFleetServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2SpotFleetServiceRolePolicy"></a>

Esta política se adjunta al rol vinculado a un servicio denominado **AWSServiceRoleForEC2SpotFleet** para permitir que la flota de spot lance y administre instancias en su nombre. Para obtener más información, consulte [Rol vinculado a servicios de flota de spot](spot-fleet-prerequisites.md#service-linked-roles-spot-fleet-requests).

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotFleetServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotFleetServiceRolePolicy.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: AWSEC2SpotServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2SpotServiceRolePolicy"></a>

Esta política se adjunta al rol vinculado a un servicio denominado **AWSServiceRoleForEC2Spot** para permitir que Amazon EC2 lance y administre instancias de spot en su nombre. Para obtener más información, consulte [Rol vinculado al servicio para solicitudes de instancias de spot](service-linked-roles-spot-instance-requests.md).

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2SpotServiceRolePolicy.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: AWSEC2VssSnapshotPolicy
<a name="security-iam-awsmanpol-AWSEC2VssSnapshotPolicy"></a>

Puede adjuntar esta política administrada al rol de perfil de instancia de IAM que utiliza para sus instancias Windows de Amazon EC2. La política concede permisos que permiten a Amazon EC2 crear y administrar instantáneas de VSS en su nombre.

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2VssSnapshotPolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2VssSnapshotPolicy.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: DeclarativePoliciesEC2Report
<a name="security-iam-awsmanpol-DeclarativePoliciesEC2Report"></a>

Esta política se asocia a la denominación del rol vinculado a servicios denominado `AWSServiceRoleForDeclarativePoliciesEC2Report` para brindar acceso a las API de solo lectura necesarias para generar el informe de estado de la cuenta para políticas declarativas.

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DeclarativePoliciesEC2Report.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/DeclarativePoliciesEC2Report.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: EC2FastLaunchFullAccess
<a name="security-iam-awsmanpol-EC2FastLaunchFullAccess"></a>

Puede asociar la política `EC2FastLaunchFullAccess` al perfil de instancia u otro rol de IAM. Esta política otorga acceso total a las acciones del lanzamiento rápido de EC2 y a los permisos específicos que se indican a continuación.

**Detalles sobre los permisos**
+ **Lanzamiento rápido de EC2**: se concede el acceso administrativo para que el rol pueda activar o desactivar el lanzamiento rápido de EC2 y describir las imágenes de lanzamiento rápido de EC2.
+ **Amazon EC2**: se concede acceso a las operaciones RunInstances, CreateTags, Describe y Create and Modify Launch Template de Amazon EC2. También se concede acceso para crear recursos de redes y grupos de seguridad, autorizar reglas de entrada y eliminar recursos creados por el lanzamiento rápido de EC2.
+ **IAM**: se concede acceso para obtener y utilizar los perfiles de instancia cuyos nombres contengan `ec2fastlaunch` para crear el rol vinculado a un servicio EC2FastLaunchServiceRolePolicy.
+ **CloudFormation** – se concede acceso al lanzamiento rápido de EC2 para describir y crear pilas de CloudFormation y para eliminar las pilas que haya creado.

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchFullAccess.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: AWSEC2CapacityManagerServiceRolePolicy
<a name="security-iam-awsmanpol-AWSEC2CapacityManagerServiceRolePolicy"></a>

Esta política está asociada al rol vinculado al servicio denominado **AWSServiceRoleForEC2CapacityManager**, el cual permite que EC2 Capacity Manager administre los recursos de capacidad y se integre con AWS Organizations en su nombre. Para obtener más información, consulte [Roles vinculados al servicio para EC2 Capacity Manager](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-service-linked-roles-cm.html).

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityManagerServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSEC2CapacityManagerServiceRolePolicy.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: EC2FastLaunchServiceRolePolicy
<a name="security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy"></a>

Esta política está asociada al rol vinculado a un servicio denominado **AWSServiceRoleForEC2FastLaunch** para permitir que Amazon EC2 cree y administre un conjunto de instantáneas aprovisionadas previamente que reducen el tiempo que tarda en lanzar instancias desde la AMI con el lanzamiento rápido de EC2 habilitado. Para obtener más información, consulte [El rol vinculado a un servicio para el lanzamiento rápido de EC2](slr-windows-fast-launch.md).

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: Ec2InstanceConnect
<a name="Ec2InstanceConnect"></a>

Puede asociar la política `Ec2InstanceConnect` a las identidades de IAM. Esta política otorga permisos que permiten que los clientes llamar a EC2 Instance Connect para publicar claves efímeras en sus instancias de EC2 y se conecten mediante ssh o la CLI de EC2 Instance Connect.

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceConnect.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2InstanceConnect.html) en la *Referencia de la política administrada de AWS*.

## AWS Política administrada de: Ec2InstanceConnectEndpoint
<a name="Ec2InstanceConnectEndpoint"></a>

Esta política se asocia al rol vinculado a un servicio denominado **AWSServiceRoleForEC2InstanceConnect** para permitir que el punto de conexión de EC2 Instance Connect realice acciones en su nombre. Para obtener más información, consulte [Rol vinculado a un servicio del punto de conexión de EC2 Instance Connect](eice-slr.md).

Para ver los permisos de esta política, consulte [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/Ec2InstanceConnectEndpoint.html) en la *Referencia de la política administrada de AWS*. Para obtener una descripción de las actualizaciones de esta política, consulte [Actualizaciones de Amazon EC2 en las políticas administradas por AWS](#security-iam-awsmanpol-updates).

## Actualizaciones de Amazon EC2 en las políticas administradas por AWS
<a name="security-iam-awsmanpol-updates"></a>

Es posible consultar los detalles sobre las actualizaciones de las políticas administradas por AWS para Amazon EC2 debido a que este servicio comenzó a realizar el seguimiento de estos cambios.


| Cambio | Descripción | Fecha | 
| --- | --- | --- | 
|  [AWSEC2CapacityManagerServiceRolePolicy](#security-iam-awsmanpol-AWSEC2CapacityManagerServiceRolePolicy) – política nueva  | Amazon EC2 agregó esta política para permitirle administrar los recursos de capacidad e integrarse con AWS Organizations en su nombre. | 15 de octubre de 2025 | 
|  [AmazonEC2ImageReferencesAccessPolicy](#security-iam-awsmanpol-AmazonEC2ImageReferencesAccessPolicy) – nueva política  | Amazon EC2 agregó esta política para permitir escanear todos los tipos de recursos compatibles con la API DescribeImageReferences de EC2. | 26 de agosto de 2025 | 
| [Ec2InstanceConnectEndpoint](#Ec2InstanceConnectEndpoint) – política actualizada | Para admitir la modificación de los puntos de conexión existentes de Instance Connect, Amazon EC2 actualizó esta política para agregar permisos para asignar y desasignar direcciones IPv6 y modificar los grupos de seguridad en las interfaces de red creadas por el punto de conexión de EC2 Instance Connect. Amazon EC2 también actualizó esta política para sustituir el operador de condición Null por el operador de condición StringLike. | 31 de julio de 2025 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) – política actualizada | Para contribuir a evitar recursos huérfanos, Amazon EC2 actualizó esta política para incluir permisos que permiten describir volúmenes, atributos de volúmenes e interfaces de red, así como eliminar volúmenes e interfaces de red creados mediante el lanzamiento rápido de EC2. | 17 de julio de 2025 | 
| [EC2FastLaunchFullAccess](#security-iam-awsmanpol-EC2FastLaunchFullAccess) – política actualizada | Amazon EC2 actualizó esta política y ahora incluye las operaciones Create and Modify Launch Template, la creación de recursos de redes y grupos de seguridad, la autorización de reglas de entrada y la eliminación de recursos creados por el lanzamiento rápido de EC2. Además, puede describir y crear pilas de CloudFormation y eliminar las pilas que creó el lanzamiento rápido de EC2. | 14 de mayo de 2025 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) – política actualizada | Amazon EC2 actualizó esta política y ahora permite el acceso a Amazon EventBridge para crear y administrar reglas de eventos para el lanzamiento rápido de EC2. Además, el lanzamiento rápido de EC2 ahora puede describir pilas de CloudFormation, lanzar una instancia desde una AMI asociada a AWS License Manager, obtener una lista de concesiones de AWS KMS que creó y que se pueden retirar y eliminar las plantillas de lanzamiento que creó. | 14 de mayo de 2025 | 
| [AWSEC2CapacityReservationFleetRolePolicy](#security-iam-awsmanpol-AWSEC2CapacityReservationFleetRolePolicy): permisos actualizados | Amazon EC2 actualizó la política administrada AWSEC2CapacityReservationFleetRolePolicy para utilizar el operador de condición ArnLike en lugar del operador de condición StringLike. | 3 de marzo de 2025 | 
| [AmazonEC2ReadOnlyAccess](#security-iam-awsmanpol-AmazonEC2ReadOnlyAccess) – permisos agregados | Amazon EC2 agregó un permiso que permite recuperar grupos de seguridad mediante la operación GetSecurityGroupsForVpc. | 27 de diciembre de 2024 | 
| [EC2FastLaunchFullAccess](#security-iam-awsmanpol-EC2FastLaunchFullAccess) – nueva política | Amazon EC2 agregó la política para realizar acciones de API relacionadas con la característica de lanzamiento rápido de EC2 desde una instancia. La política se puede adjuntar al perfil de instancia de una instancia que se lance desde una AMI con el lanzamiento rápido de EC2 habilitado. | 14 de mayo de 2024 | 
| [AWSEC2VssSnapshotPolicy](#security-iam-awsmanpol-AWSEC2VssSnapshotPolicy) – nueva política | Amazon EC2 agregó la política AWSEC2VssSnapshotPolicy que contiene los permisos para crear y añadir etiquetas a las instantáneas de Imagen de máquina de Amazon (AMI) y de EBS. | 28 de marzo de 2024 | 
| [Ec2InstanceConnectEndpoint](#Ec2InstanceConnectEndpoint) – nueva política | Amazon EC2 agregó la política Ec2InstanceConnectEndpoint. Esta política se asocia al rol vinculado a un servicio denominado AWSServiceRoleForEC2InstanceConnect para permitir que Amazon EC2 lleve a cabo acciones en su nombre al crear un punto de conexión de EC2 Instance Connect. | 24 de enero de 2023 | 
| [EC2FastLaunchServiceRolePolicy](#security-iam-awsmanpol-EC2FastLaunchServiceRolePolicy) – nueva política | Amazon EC2 agregó la característica de lanzamiento rápido de EC2 para permitir que las AMI de Windows lancen instancias más rápido con la creación de un conjunto de instantáneas aprovisionadas previamente. | 26 de noviembre de 2021 | 
| Amazon EC2 comenzó a realizar el seguimiento de los cambios | Amazon EC2 comenzó a realizar el seguimiento de los cambios en sus políticas administradas de AWS | 1 de marzo de 2021 | 

# Roles de IAM para Amazon EC2
<a name="iam-roles-for-amazon-ec2"></a>

Las aplicaciones deben firmar sus solicitudes de API con credenciales de AWS. Por lo tanto, si es usted un desarrollador de aplicaciones, necesitará una estrategia para administrar las credenciales de sus aplicaciones que se ejecuten en instancias de EC2. Por ejemplo, puede distribuir con seguridad sus credenciales de AWS a las instancias, lo que habilita las aplicaciones que tiene en dichas instancias para que utilicen sus credenciales a fin de firmar solicitudes y, al mismo tiempo, proteger sus credenciales respecto a otros usuarios. Sin embargo, distribuir las credenciales a cada instancia de forma segura plantea ciertas dificultades, en especial cuando se trata de aquellas que AWS crea en su nombre, como las instancias de spot o las de los grupos de Auto Scaling. También debe poder actualizar las credenciales de cada instancia cuando rota sus credenciales de AWS.

Hemos diseñado los roles de IAM, para que sus aplicaciones puedan realizar solicitudes de API con seguridad desde sus instancias, sin que usted tenga que administrar las credenciales de seguridad que la aplicación utiliza. En lugar de crear y distribuir sus credenciales de AWS, puede delegar el permiso para realizar solicitudes de API mediante los roles de IAM, tal como se indica a continuación:

1. Cree de un rol de IAM.

1. Defina qué cuentas o servicios de AWS pueden asumir el rol.

1. Defina qué acciones y recursos de la API puede utilizar la aplicación después de asumir el rol.

1. Especifique el rol cuando lance su instancia, o asocie el rol a una instancia existente.

1. Haga que la aplicación recupere unas credenciales temporales y las use.

Por ejemplo, puede utilizar roles de IAM para conceder permisos a aplicaciones que se ejecutan en sus instancias y que necesitan utilizar un bucket en Amazon S3. Puede especificar permisos para roles de IAM, creando una política en formato JSON. Son parecidos a las políticas que crea para usuarios de . Si cambia un rol, el cambio se propaga a todas las instancias.

**nota**  
Las credenciales del rol de IAM de Amazon EC2 no están sujetas a la duración máxima de sesión configurada en el rol. Para obtener más información, consulte [Métodos para asumir un rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) en la *Guía del usuario de IAM*.

Al crear roles de IAM, asocie las políticas de IAM con privilegios mínimos que restringen el acceso a las llamadas a la API específicas que requiere la aplicación. Para la comunicación de Windows a Windows, use grupos y roles de Windows bien definidos y bien documentados para conceder acceso a nivel de aplicación entre instancias de Windows. Los grupos y roles permiten que los clientes definan permisos de nivel de carpeta NTFS y aplicaciones con privilegios mínimos para limitar el acceso a los requisitos específicos de la aplicación.

Solo puede adjuntar un rol de IAM a una instancia, pero puede adjuntar el mismo rol a muchas instancias. Para obtener más información sobre la creación y el uso de roles de IAM, consulte [Roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) en la *Guía del usuario de IAM*.

Puede aplicar permisos de nivel de recursos a sus políticas de IAM para controlar la capacidad de los usuarios de asociar, sustituir o desasociar roles de IAM de una instancia. Para obtener más información, consulte [Permisos de nivel de recurso admitidos para las acciones de la API de Amazon EC2](iam-policies-for-amazon-ec2.md#ec2-supported-iam-actions-resources) y el siguiente ejemplo: [Ejemplo: Trabajar con roles de IAM](ExamplePolicies_EC2.md#iam-example-iam-roles).

**Topics**
+ [Perfiles de instancias](#ec2-instance-profile)
+ [Permisos para su caso de uso](#generate-policy-for-iam-role)
+ [Recuperar credenciales de seguridad](instance-metadata-security-credentials.md)
+ [Permisos para asociar un rol a una instancia](permission-to-pass-iam-roles.md)
+ [Asociación de un rol a una instancia](attach-iam-role.md)
+ [Roles de identidad de instancia](#ec2-instance-identity-roles)

## Perfiles de instancias
<a name="ec2-instance-profile"></a>

Amazon EC2 utiliza un *perfil de instancia* como contenedor de un rol de IAM. Cuando se crea un rol de IAM utilizando la consola de IAM, esta crea automáticamente un perfil de instancia y le da el mismo nombre que el rol al que corresponde. Si utiliza la consola de Amazon EC2 para iniciar una instancia con un rol de IAM o para asociar un rol de IAM a una instancia, elija el rol en función de una lista de nombres de perfiles de instancias. 

Si utiliza la AWS CLI, la API o un SDK de AWS para crear un rol, cree el rol y el perfil de instancia de forma independiente, con nombres potencialmente diferentes. Si posteriormente usa la AWS CLI, la API o un AWS SDK para iniciar una instancia con un rol de IAM o para adjuntar un rol de IAM a una instancia, especifique el nombre del perfil de instancias. 

Un perfil de instancia solo puede contener un rol de IAM. Puede incluir un rol de IAM en varios perfiles de instancia.

Para actualizar los permisos de una instancia, sustituya su perfil de instancia. No recomendamos eliminar un rol de un perfil de instancia, ya que este cambio tarda hasta una hora en surtir efecto.

Para obtener más información, consulte [Uso de perfiles de instancias](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) en la *Guía del usuario de IAM*.

## Permisos para su caso de uso
<a name="generate-policy-for-iam-role"></a>

Cuando crea por primera vez un rol de IAM para las aplicaciones, a veces puede conceder permisos más allá de lo necesario. Antes de iniciar la aplicación en su entorno de producción, puede generar una política de IAM que esté basada en la actividad de acceso de un rol de IAM. El analizador de acceso de IAM revisa los registros de AWS CloudTrail y genera una plantilla de política que contiene los permisos que ha utilizado el rol en el intervalo de fechas especificado. Puede utilizar la plantilla para crear una política administrada con permisos detallados y, a continuación, adjuntarla al rol de IAM. De esta forma, solo concede los permisos que el rol necesita para interactuar con los recursos de AWS para su caso de uso específico. Esto le ayuda a cumplir con la mejor práctica de [otorgar privilegios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). Para obtener más información, consulte [Generación de políticas del Analizador de acceso de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-generation.html) en la *Guía de usuario de IAM*.

# Recuperar credenciales de seguridad de los metadatos de la instancia
<a name="instance-metadata-security-credentials"></a>

Una aplicación de una instancia recupera las credenciales de seguridad que proporciona el rol en el elemento `iam/security-credentials/`*role-name* de los metadatos de la instancia. Se conceden a la aplicación los permisos para las acciones y los recursos que usted ha definido para el rol mediante las credenciales de seguridad asociadas al rol. Estas credenciales de seguridad son temporales y las rotamos automáticamente. Activamos la disponibilidad de las nuevas credenciales al menos cinco minutos antes del vencimiento de las antiguas.

Para obtener más información acerca de los metadatos de instancias, consulte [Uso de los metadatos de la instancia para administrar su instancia de EC2](ec2-instance-metadata.md).

**aviso**  
Si utiliza servicios que utilizan metadatos de las instancias con los roles de IAM, asegúrese de que no revela sus credenciales cuando los servicios realizan llamadas HTTP en su nombre. Los tipos de servicios que pueden llegar a revelar sus credenciales son, entre otros, proxies HTTP, servicios de validador HTML/CSS y procesadores XML que admiten la inclusión de XML.

Para sus cargas de trabajo de Amazon EC2, le recomendamos que recupere las credenciales de sesión mediante el método que se describe a continuación. Estas credenciales deberían permitir a su carga de trabajo realizar solicitudes de API de AWS, sin necesidad de usar `sts:AssumeRole` para asumir el mismo rol que ya está asociado a la instancia. A menos que necesite pasar etiquetas de sesión para el control de acceso basado en atributos (ABAC) o pasar una política de sesión para restringir aún más los permisos del rol, estas llamadas de asunción de roles no son necesarias, ya que crean un nuevo conjunto de las mismas credenciales temporales de sesión de rol.

Si su carga de trabajo usa un rol para asumirse a sí mismo, debe crear una política de confianza que permita explícitamente que ese rol se asuma a sí mismo. Si no crea la política de confianza, aparece el error `AccessDenied`. Para obtener más información, consulte [Actualización de una política de confianza de rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html) en la *Guía del usuario de IAM*.

------
#### [ IMDSv2 ]

**Linux**  
Ejecute el siguiente comando desde la instancia de Linux para recuperar las credenciales de seguridad de un rol de IAM.

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
    && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

**Windows**  
Ejecute el siguiente cmdlet desde la instancia de Windows para recuperar las credenciales de seguridad de un rol de IAM.

```
[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token" = $token} `
    -Method GET -Uri http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

------
#### [ IMDSv1 ]

**Linux**  
Ejecute el siguiente comando desde la instancia de Linux para recuperar las credenciales de seguridad de un rol de IAM.

```
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

**Windows**  
Ejecute el siguiente cmdlet desde la instancia de Windows para recuperar las credenciales de seguridad de un rol de IAM.

```
Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name
```

------

A continuación, se muestra un ejemplo del resultado. Si no puede recuperar las credenciales de seguridad, consulte [No puedo obtener acceso a las credenciales de seguridad temporales de mi instancia EC2](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-ec2.html#troubleshoot_iam-ec2_no-keys) en la *Guía del usuario de IAM*.

```
{
  "Code" : "Success",
  "LastUpdated" : "2012-04-26T16:39:16Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "ASIAIOSFODNN7EXAMPLE",
  "SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
  "Token" : "token",
  "Expiration" : "2017-05-17T15:09:54Z"
}
```

Para las aplicaciones, la AWS CLI y los comandos de las herramientas para Windows PowerShell que se ejecutan en la instancia, no es necesario obtener de forma explícita las credenciales de seguridad temporales, dado que los AWS SDK, la AWS CLI y las herramientas para Windows PowerShell obtienen automáticamente las credenciales del servicio de metadatos de la instancia de EC2 y las utilizan. Para llamar fuera de la instancia utilizando credenciales de seguridad temporales (por ejemplo, para probar políticas de IAM), debe proporcionar la clave de acceso, la clave secreta y el token de la sesión. Para obtener más información, consulte [Uso de credenciales de seguridad temporales para solicitar acceso a los recursos de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html) en la *Guía del usuario de IAM*.

# Concesión de permisos para asociar un rol de IAM a una instancia
<a name="permission-to-pass-iam-roles"></a>

Las identidades de su Cuenta de AWS, como los usuarios de IAM, deben tener permisos específicos para inicializar una instancia de Amazon EC2 con un rol de IAM, asociar un rol de IAM a una instancia, reemplazar el rol de IAM de una instancia o separar un rol de IAM de una instancia. Debe concederles permiso para utilizar las siguientes acciones de la API según sea necesario:
+ `iam:PassRole`
+ `ec2:AssociateIamInstanceProfile`
+ `ec2:DisassociateIamInstanceProfile`
+ `ec2:ReplaceIamInstanceProfileAssociation`

**nota**  
Si especifica el recurso de `iam:PassRole` como `*`, se otorgará acceso para transferir cualquiera de los roles de IAM a una instancia. Para seguir la práctica recomendada de [privilegios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege), especifique los ARN de roles de IAM específicos con `iam:PassRole`, tal y como se muestra en el ejemplo de política que aparece a continuación.

**Ejemplo de política para el acceso mediante programación**  
La siguiente política de IAM concede permisos para inicializar instancias con un rol de IAM, asociar un rol de IAM a una instancia o sustituir el rol de IAM para una instancia existente mediante la AWS CLI o la API de Amazon EC2.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ec2:RunInstances",
         "ec2:AssociateIamInstanceProfile",
         "ec2:DisassociateIamInstanceProfile",
         "ec2:ReplaceIamInstanceProfileAssociation"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::123456789012:role/DevTeam*"
    }
  ]
}
```

------

**Requisito adicional para el acceso con la consola**  
Si quiere conceder permisos para realizar las mismas tareas con la consola de Amazon EC2, debe incluir también la acción de la API `iam:ListInstanceProfiles`.

# Asociar un rol de IAM a una instancia
<a name="attach-iam-role"></a>

Puede crear un rol de IAM y adjuntarlo a una instancia durante el lanzamiento o después. También puede desasociar o sustituir roles de IAM.

**Crear y adjuntar un rol de IAM durante el lanzamiento de la instancia (recomendado)**

1. Durante el lanzamiento de la instancia EC2, amplíe la sección **Detalles avanzados.**

1. En la sección del **perfil de instancia de IAM**, elija **Crear un nuevo rol de IAM**.

1. Se abre un formulario de creación de roles en línea que le permite:
   + Especificar **el nombre del rol** (por ejemplo, `EC2-S3-Access-Role`)
   + Definir los permisos seleccionando políticas administradas de AWS o creando políticas personalizadas para su instancia

     Por ejemplo, para conceder acceso a S3, selecciona la política administrada de `AmazonS3ReadOnlyAccess`
   + Una política de confianza que permita a `ec2.amazonaws.com` asumir el rol
   + Añada etiquetas opcionales para los metadatos.

1. Elija **Creación de rol**.

   El rol recién creado se selecciona automáticamente y se adjuntará a la instancia mediante un perfil de instancia cuando se lance la instancia.

**nota**  
Cuando crea el rol para con la consola durante el lanzamiento d ela instancia, se crea automáticamente el perfil de instancia con el mismo nombre. Un perfil de instancia es un contenedor que pasa información del rol de IAM a una instancia en el momento del lanzamiento.

**importante**  
Solo puede adjuntar un rol de IAM a una instancia, pero puede adjuntar el mismo rol a muchas instancias.
Asocie las políticas de IAM con privilegios mínimos que restringen el acceso a las llamadas a la API específicas que requiere la aplicación.

Para obtener más información sobre la creación y el uso de roles de IAM, consulte [Roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) en la *Guía del usuario de IAM*.

**Adjuntar un rol de IAM existente durante el lanzamiento de la instancia**  
Para asociar un rol de IAM existente a una instancia en el momento del lanzamiento mediante la consola de Amazon EC2, amplíe **Detalles avanzados**. En **perfil de instancia de IAM**, seleccione el rol de IAM de la lista desplegable.

**nota**  
Si creó su rol de IAM con la consola de IAM, el perfil de instancia se creó en su nombre y se le dio el mismo nombre que el rol. Si creó el rol de IAM con la AWS CLI, la API o un SDK de AWS, es posible que le haya dado un nombre distinto al del rol a su perfil de instancias.

Puede asociar un rol de IAM a una instancia que esté en ejecución o detenida. Si la instancia ya tiene un rol de IAM asociado, debes sustituirlo por el nuevo rol de IAM.

------
#### [ Console ]<a name="attach-iam-role-console"></a>

**Para asociar un rol de IAM con una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instancias**.

1. Seleccione la instancia.

1. Elija **Actions** (Acciones), **Security** (Seguridad), **Modify IAM role** (Modificar rol de IAM).

1. En **Rol de IAM**, seleccione el perfil de instancia de IAM.

1. Elija **Actualizar rol de IAM**.

------
#### [ AWS CLI ]
<a name="attach-iam-role-instance-cli"></a>
**Para asociar un rol de IAM con una instancia**  
Use el comando [associate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html) para asociar el rol de IAM a la instancia. Cuando especifique el perfil de instancia, puede utilizar el nombre de recurso de Amazon (ARN) del perfil de instancia o bien puede usar el nombre de este.

```
aws ec2 associate-iam-instance-profile \
    --instance-id i-1234567890abcdef0 \
    --iam-instance-profile Name="TestRole-1"
```

------
#### [ PowerShell ]

**Para asociar un rol de IAM con una instancia**  
Utilice el cmdlet [Register-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2IamInstanceProfile.html).

```
Register-EC2IamInstanceProfile `
    -InstanceId i-1234567890abcdef0 `
    -IamInstanceProfile_Name TestRole-1
```

------

Para reemplazar el rol de IAM en una instancia que ya tiene un rol de IAM asociado, la instancia debe estar ejecutándose . Puede hacerlo si desea cambiar el rol de IAM de una instancia sin disociar primero el existente. Por ejemplo, puede hacer esto para asegurarse de que no se interrumpan las acciones de API realizadas por las aplicaciones que se ejecutan en la instancia.

------
#### [ Console ]<a name="replace-iam-role-console"></a>

**Para reemplazar un rol de IAM de una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instancias**.

1. Seleccione la instancia.

1. Elija **Actions** (Acciones), **Security** (Seguridad), **Modify IAM role** (Modificar rol de IAM).

1. En **Rol de IAM**, seleccione el perfil de instancia de IAM.

1. Elija **Actualizar rol de IAM**.

------
#### [ AWS CLI ]<a name="replace-iam-role-cli"></a>

**Para reemplazar un rol de IAM de una instancia**

1. Si es necesario, utilice el comando [describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) para obtener el ID de asociación.

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. Utilice el comando [replace-iam-instance-profile-association](https://docs.aws.amazon.com/cli/latest/reference/ec2/replace-iam-instance-profile-association.html). Especifique el ID de asociación del perfil de instancia existente y el ARN o el nombre del nuevo perfil de instancia.

   ```
   aws ec2 replace-iam-instance-profile-association \
       --association-id iip-assoc-0044d817db6c0a4ba \
       --iam-instance-profile Name="TestRole-2"
   ```

------
#### [ PowerShell ]

**Para reemplazar un rol de IAM de una instancia**

1. Si es necesario, utilice el cmdlet [Get-EC2IAMInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html) para obtener el ID de asociación.

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. Utilice el cmdlet [Set-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Set-EC2IamInstanceProfileAssociation.html). Especifique el ID de asociación del perfil de instancia existente y el ARN o el nombre del nuevo perfil de instancia.

   ```
   Set-EC2IamInstanceProfileAssociation `
       -AssociationId iip-assoc-0044d817db6c0a4ba `
       -IamInstanceProfile_Name TestRole-2
   ```

------

Puede separar un rol IAM de una instancia que está en ejecución o detenida.

------
#### [ Console ]<a name="detach-iam-role-console"></a>

**Para separar un rol de IAM de una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instancias**.

1. Seleccione la instancia.

1. Elija **Actions** (Acciones), **Security** (Seguridad), **Modify IAM role** (Modificar rol de IAM).

1. En **Rol de IAM**, elija **Sin rol de IAM**.

1. Elija **Actualizar rol de IAM**.

1. Cuando se le pida confirmación, introduzca **Desconectar** y, a continuación, elija **Desconectar**.

------
#### [ AWS CLI ]<a name="detach-iam-role-cli"></a>

**Para separar un rol de IAM de una instancia**

1. Si es necesario, utilice [describe-iam-instance-profile-associations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-iam-instance-profile-associations.html) para obtener el ID de asociación del perfil de instancia de IAM que quiere desasociar.

   ```
   aws ec2 describe-iam-instance-profile-associations \
       --filters Name=instance-id,Values=i-1234567890abcdef0 \
       --query IamInstanceProfileAssociations.AssociationId
   ```

1. Utilice el comando [disassociate-iam-instance-profile](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-iam-instance-profile.html).

   ```
   aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-0044d817db6c0a4ba
   ```

------
#### [ PowerShell ]

**Para separar un rol de IAM de una instancia**

1. Si es necesario, utilice [Get-EC2IamInstanceProfileAssociation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2IamInstanceProfileAssociation.html) para obtener el ID del perfil de instancia de IAM que quiere desasociar.

   ```
   (Get-EC2IamInstanceProfileAssociation -Filter @{Name="instance-id"; Values="i-0636508011d8e966a"}).AssociationId
   ```

1. Utilice el cmdlet [Unregister-EC2IamInstanceProfile](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2IamInstanceProfile.html).

   ```
   Unregister-EC2IamInstanceProfile -AssociationId iip-assoc-0044d817db6c0a4ba
   ```

------

## Roles de identidad de instancia para instancias de Amazon EC2
<a name="ec2-instance-identity-roles"></a>

Cada instancia de Amazon EC2 que inicie tiene un *rol de identidad de instancia* que representa su identidad. Un rol de identidad de instancia es un tipo de rol de IAM. Los servicios y las características de AWS integrados para usar el rol de identidad de instancia pueden usarlo para identificar la instancia en el servicio.

Las credenciales de rol de identidad de instancia están disponibles en el servicio de metadatos de instancia (IMDS) en `/identity-credentials/ec2/security-credentials/ec2-instance`. Las credenciales incluyen un par de claves de acceso temporal de AWS y un token de sesión. Se utilizan para firmar las solicitudes de Sigv4 de AWS a los servicios de AWS que utilizan el rol de identidad de instancia. Las credenciales están presentes en los metadatos de la instancia independientemente de si un servicio o una característica que utiliza los roles de identidad de la instancia está habilitado en la instancia.

Los roles de identidad de instancia se crean automáticamente cuando se inicia una instancia, no tienen ningún documento de política de confianza de roles y no están sujetos a ninguna política de identidad o recursos.

### Servicios admitidos
<a name="iir-supported-services"></a>

Los siguientes servicios de AWS utilizan el rol de identidad de instancia:
+ **Amazon EC2**: [EC2 Instance Connect](connect-linux-inst-eic.md) utiliza el rol de identidad de instancia para actualizar las claves de host de una instancia de Linux.
+ **Amazon GuardDuty**: la [Supervisión de tiempo de ejecución de GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring.html) utiliza el rol de identidad de instancia para permitir que el agente de tiempo de ejecución envíe telemetría de seguridad al punto de conexión de VPC de GuardDuty.
+ **AWS Lambda**: las [Instancias administradas de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-managed-instances.html) utilizan el rol de identidad de la instancia para los enlaces de ciclo de vida, la telemetría y la distribución de artefactos.
+ **AWS Security Token Service (AWS STS)**: las credenciales del rol de identidad de instancia se pueden usar con la acción [https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html)de AWS STS.
+ **AWS Systems Manager**: cuando se utiliza la [configuración de la administración de host predeterminada](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-default-host-management-configuration.html), AWS Systems Manager utiliza la identidad proporcionada por el rol de identidad de instancia para registrar las instancias de EC2. Tras identificar la instancia, Systems Manager puede pasar el rol de IAM de `AWSSystemsManagerDefaultEC2InstanceManagementRole` a la instancia.

Los roles de identidad de instancia no se pueden usar con otros servicios o características de AWS porque no están integrados con los roles de identidad de instancia.

### ARN de rol de identidad de instancia
<a name="iir-arn"></a>

El ARN de rol de identidad de instancia tiene el siguiente formato:

```
arn:aws-partition:iam::account-number:assumed-role/aws:ec2-instance/instance-id
```

Por ejemplo:

```
arn:aws:iam::0123456789012:assumed-role/aws:ec2-instance/i-1234567890abcdef0
```

Para más información acerca de los ARN, consulte [Nombres de recursos de Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) en la *guía de referencia de usuario de IAM*.

# Administración de actualizaciones para instancias de Amazon EC2
<a name="update-management"></a>

Le recomendamos que aplique parches al sistema operativo y a las aplicaciones, los actualice periódicamente y los proteja en sus instancias de EC2. Puede usar [AWS Systems Manager Patch Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/patch-manager.html) para automatizar el proceso de instalar actualizaciones relacionadas con la seguridad tanto para el sistema operativo como para las aplicaciones.

En el caso de las instancias de EC2 de un grupo de escalamiento automático, puede utilizar el runbook [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-patchasginstance.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-aws-patchasginstance.html) para evitar que se sustituyan instancias en las que se están aplicando parches. De forma alternativa, puede usar cualquier servicio de actualización automática u otros procesos recomendados para instalar actualizaciones que proporciona el proveedor de la aplicación.

**Recursos**
+ **AL2023**: [Actualización de AL2023](https://docs.aws.amazon.com/linux/al2023/ug/updating.html) en la *Guía del usuario de Amazon Linux 2023*.
+ **AL2**: [Administración del software de la instancia de Amazon Linux 2](https://docs.aws.amazon.com/linux/al2/ug/managing-software.html) en la *Guía del usuario de Amazon Linux 2*.
+ **Instancias de Windows**: [Administración de actualizaciones](ec2-windows-security-best-practices.md#ec2-windows-update-management)

# Prácticas recomendadas de seguridad para instancias de Windows
<a name="ec2-windows-security-best-practices"></a>

Recomendamos que siga estas prácticas recomendadas de seguridad para las instancias de Windows.

**Topics**
+ [Prácticas recomendadas de seguridad de alto nivel](#high-level-security)
+ [Administración de actualizaciones](#ec2-windows-update-management)
+ [Administración de la configuración](#configuration-management)
+ [Administración de cambios](#change-management)
+ [Auditoría y rendición de cuentas para instancias de Windows de Amazon EC2](#audit-accountability)

## Prácticas recomendadas de seguridad de alto nivel
<a name="high-level-security"></a>

Debe cumplir las siguientes prácticas recomendadas de seguridad de alto nivel en sus instancias de Windows:
+ **Acceso mínimo**: otorgue acceso solo a los sistemas y ubicaciones de confianza y esperados. Esto se aplica a todos los productos de Microsoft, por ejemplo, Active Directory, servidores de productividad empresarial de Microsoft y servicios de infraestructura como servicios de Escritorio remoto, servidores proxy inverso, servidores web IIS, entre otros. Utilice las capacidades de AWS tales como los grupos de seguridad de instancias de Amazon EC2, las listas de control de acceso (ACL) a la red y las subredes públicas/privadas de Amazon VPC para separar la seguridad en capas en varias ubicaciones de una arquitectura. Dentro de una instancia de Windows, los clientes pueden usar el Firewall de Windows para aplicar una estrategia de defensa en profundidad dentro de su implementación. Instale solo los componentes del sistema operativo y las aplicaciones que sean necesarios para que el sistema funcione según el diseño. Configure servicios de infraestructura como IIS para que se ejecuten en cuentas de servicio o para que utilicen características como identidades del grupo de aplicaciones que permitan acceder a los recursos de forma local y remota en toda la infraestructura.
+ **Privilegio mínimo**: determine el conjunto mínimo de privilegios que las instancias y las cuentas necesitan para realizar sus funciones. Limite estos servidores y usuarios para que permitan únicamente dichos permisos definidos. Utilice técnicas como Controles de acceso basados en roles para reducir el área superficial de las cuentas administrativas y crear los roles más limitados para realizar una tarea. Utilice características del sistema operativo como el sistema de archivos cifrados (EFS) dentro de NTFS para cifrar información confidencial en reposo y controlar el acceso de aplicaciones y usuarios a ella.
+ **Administración de configuración**: cree una configuración de servidor de línea de base que incorpore parches de seguridad actualizados y conjuntos de protección basados en host que incluyan antivirus, antimalware, detección/prevención de intrusiones y monitoreo de la integridad de archivos. Evalúe cada servidor con respecto a la referencia registrada actual para identificar y marcar cualquier desviación. Asegúrese de que cada servidor esté configurado para generar y almacenar de forma segura los datos adecuados de registro y auditoría.
+ **Administración de cambios**: cree procesos para controlar los cambios en las referencias de configuración del servidor y trabaje en procesos de cambio totalmente automatizados. Además, aproveche Just Enough Administration (JEA) con Windows PowerShell DSC para limitar el acceso administrativo a las funciones mínimas requeridas.
+ **Gestión de parches**: implemente procesos que corrigen, actualizan y protegen con regularidad el sistema operativo y las aplicaciones de sus instancias EC2.
+ **Registros de auditoría**: audite el acceso y todos los cambios en las instancias de Amazon EC2 para verificar la integridad del servidor y asegurarse de que solo se realicen los cambios autorizados. Aproveche características como el [Registro mejorado para IIS](https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-85/enhanced-logging-for-iis85) para mejorar las capacidades de registro predeterminadas. Capacidades de AWS como los registros de flujo de VPC y también AWS CloudTrail están disponibles para auditar el acceso a la red, incluidas las solicitudes permitidas/denegadas y las llamadas a la API, respectivamente.

## Administración de actualizaciones
<a name="ec2-windows-update-management"></a>

Se recomienda llevar a cabo las siguientes prácticas recomendadas si desea obtener los mejores resultados al ejecutar Windows Server en Amazon EC2:
+ [Configure Windows Update](#windows-update)
+ [Update drivers](#drivers)
+ [Use the latest Windows AMIs](#AMI)
+ [Test performance before migration](#test)
+ [Update launch agents](#agents)
+ Reinicie una instancia de Windows después de instalar las actualizaciones. Para obtener más información, consulte [Reiniciar una instancia de Amazon EC2](ec2-instance-reboot.md).

Para obtener información acerca de cómo actualizar o migrar una instancia de Windows a una versión más reciente de Windows Server, consulte [Actualizar una instancia de Windows de EC2 a una versión más reciente de Windows Server](serverupgrade.md).

**Configuración de Windows Update**  
De forma predeterminada, las instancias que se inician desde las AMI de Windows Server de AWS no reciben actualizaciones a través de Windows Update.

**Actualización de los controladores de Windows**

Mantenga actualizados los controladores en todas las instancias de EC2 de Windows para asegurarse de aplicar las correcciones de problemas y mejoras de rendimiento más recientes en toda la flota. Según el tipo de instancia, debe actualizar los controladores de AWS PV, Amazon ENA y AWS NVMe.
+ Utilice los [temas de SNS](xen-drivers-overview.md#drivers-subscribe-notifications) para recibir las actualizaciones de las nuevas versiones de los controladores.
+ Use el manual de procedimientos de Automation AWS Systems Manager [AWSSupport-UpgradeWindowsAWSDrivers](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-upgradewindowsawsdrivers.html) para poder aplicar las actualizaciones fácilmente en sus instancias.

**Lanzamiento de instancias con las últimas AMI de Windows**

AWS publica nuevas AMI de Windows todos los meses, que contienen los últimos parches del sistema operativo, controladores y agentes de lanzamiento. Aproveche las AMI más recientes al lanzar nuevas instancias o al crear sus propias imágenes personalizadas.
+ Para consultar las actualizaciones de cada versión de las AMI de Windows de AWS, consulte el [Historial de versiones de las AMI de Windows de AWS](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ec2-windows-ami-version-history.html).
+ Para utilizar las AMI más recientes disponibles, consulte el artículo sobre cómo[ encontrar las AMI de Windows más recientes con el almacén de parámetros de Systems Manager](https://aws.amazon.com/blogs/mt/query-for-the-latest-windows-ami-using-systems-manager-parameter-store/).
+ Para obtener más información sobre las AMI de Windows especializadas que puede usar a fin de lanzar instancias para su base de datos y los casos de uso de refuerzo de la conformidad, consulte [Specialized Windows AMIs](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/specialized-windows-amis.html) en la *Referencia de AMI de Windows de AWS*.

**Prueba del rendimiento del sistema o de la aplicación antes de la migración**

La migración de aplicaciones empresariales a AWS puede implicar numerosas variables y configuraciones. Realice siempre una prueba de rendimiento de la solución de EC2 para asegurarse de que:
+ Los tipos de instancias están bien configurados, incluido el tamaño de la instancia, las redes mejoradas y la tenencia (compartida o dedicada).
+ La topología de la instancia es adecuada para la carga de trabajo y aprovecha las características de alto rendimiento cuando es necesario, como la tenencia dedicada, los grupos de ubicación, los volúmenes del almacén de instancias, los bare metal.

**Instalar la versión más reciente de EC2Launch v2**  
Instale al agente de EC2Launch v2 más reciente para asegurarse de que las últimas mejoras se apliquen en toda la flota. Para obtener más información, consulte [Instalación de EC2Launch v2](ec2launch-v2-install.md).

Si tiene una flota mixta o si desea seguir usando los agentes de EC2Launch (Windows Server 2016 y 2019) o de EC2 Config (solo sistema operativo heredado), actualice a las versiones más recientes de los respectivos agentes.

Las siguientes combinaciones de agentes de lanzamiento y versión de Windows Server admiten actualizaciones automáticas. Puede optar por las actualizaciones automáticas en la consola de [administración de host con Quick Setup de SSM](https://docs.aws.amazon.com/systems-manager/latest/userguide/quick-setup-host-management.html), en **Agentes de lanzamiento de Amazon EC2**.


| Versión de Windows | EC2Launch v1 | EC2Launch v2 | 
| --- | --- | --- | 
| 2016 | ✓ | ✓ | 
| 2019 | ✓ | ✓ | 
| 2022 |  | ✓ | 
+ Para obtener más información acerca de la actualización a EC2Launch v2, consulte [Instalar la versión más reciente de EC2Launch v2](ec2launch-v2-install.md).
+ Para obtener información sobre cómo actualizar manualmente EC2Config, consulte. [Instalar la versión más reciente de EC2Config](UsingConfig_Install.md) 
+ Para obtener información sobre cómo actualizar manualmente EC2Launch, consulte. [Instalar la versión más reciente de EC2Launch](ec2launch-download.md)

## Administración de la configuración
<a name="configuration-management"></a>

Las Imágenes de máquina de Amazon (AMI) proporcionan una configuración inicial para una instancia Amazon EC2, que incluye el sistema operativo Windows y personalizaciones opcionales específicas del cliente, como aplicaciones y controles de seguridad. Cree un catálogo de AMI que contenga líneas de base de configuración de seguridad personalizadas para garantizar que todas las instancias de Windows se inicien con controles de seguridad estándar. Las líneas de base de seguridad se pueden convertir en una AMI, arrancar de forma dinámica cuando se lanza una instancia de EC2 o empaquetar como producto para una distribución uniforme a través de las carteras de AWS Service Catalog. Para obtener más información sobre cómo proteger una AMI, consulte las [prácticas recomendadas para crear una AMI](https://docs.aws.amazon.com/marketplace/latest/userguide/best-practices-for-building-your-amis.html).

Cada instancia Amazon EC2 debe cumplir con los estándares de seguridad de la organización. No instale roles y características de Windows que no sean necesarias, e instale software para protegerse contra código malintencionado (antivirus, antimalware, mitigación de vulnerabilidades), monitorear la integridad del host y detectar intrusiones. Configure el software de seguridad para monitorear y mantener la configuración de seguridad del sistema operativo, proteger la integridad de los archivos críticos del sistema operativo y alertar sobre las desviaciones de la línea de base de seguridad. Considere la posibilidad de implementar los parámetros de configuración de seguridad recomendados publicados por Microsoft, el Center for Internet Security (CIS) o el Instituto Nacional de Normalización y Tecnología (NIST). Considere la posibilidad de utilizar otras herramientas de Microsoft para determinados servidores de aplicaciones, como el [Analizador de prácticas recomendadas para SQL Server](https://www.microsoft.com/en-us/download/details.aspx?id=29302).

AWSLos clientes de también pueden ejecutar evaluaciones de Amazon Inspector para mejorar la seguridad y la conformidad de las aplicaciones implementadas en instancias de Amazon EC2. Amazon Inspector evalúa automáticamente las aplicaciones en busca de vulnerabilidades o desviaciones de las prácticas recomendadas e incluye una base de conocimientos de cientos de reglas mapeadas a estándares comunes de conformidad de seguridad (por ejemplo, PCI DSS) y definiciones de vulnerabilidades. Entre los ejemplos de reglas integradas se incluye comprobar si el inicio de sesión raíz remoto está habilitado o si hay versiones de software vulnerables instaladas. Los investigadores de seguridad de AWS actualizan estas reglas con regularidad.

Al proteger instancias de Windows, se recomienda implementar los servicios de dominio de Active Directory para habilitar una infraestructura escalable, segura y administrable para ubicaciones distribuidas. Además, después de inicializar instancias a través de la consola de Amazon EC2 o mediante una herramienta de aprovisionamiento de Amazon EC2, como AWS CloudFormation, es recomendable utilizar características nativas del sistema operativo, como Microsoft Windows PowerShell DSC para mantener el estado de configuración en caso de que se produzca una desviación de esta.

## Administración de cambios
<a name="change-management"></a>

Después de aplicar las líneas base de seguridad iniciales a las instancias Amazon EC2 en el lanzamiento, controle los cambios en curso en Amazon EC2 para mantener la seguridad de las máquinas virtuales. Establezca un proceso de administración de cambios para autorizar e incorporar cambios en los recursos de AWS (como grupos de seguridad, tablas de enrutamiento y ACL de red), así como en las configuraciones del SO y las aplicaciones (como la aplicación de parches de Windows o aplicaciones, actualizaciones de software o actualizaciones de archivos de configuración).

AWS proporciona varias herramientas para ayudar a administrar los cambios en los recursos de AWS, incluidos AWS CloudTrail, AWS Config, CloudFormation y AWS Elastic Beanstalk, así como paquetes de administración para Systems Center Operations Manager y System Center Virtual Machine Manager. Tenga en cuenta que Microsoft publica revisiones de Windows el segundo martes (o más si es necesario) y AWS actualiza todas las AMI de Windows administradas por AWS dentro de los cinco días siguientes a que Microsoft publique un parche. Por lo tanto, es importante aplicar parches continuamente a todas las AMI de línea de base, actualizar las plantillas de CloudFormation y las configuraciones de grupo de Auto Scaling con los últimos ID de AMI e implementar herramientas para automatizar la administración de parches de instancia en ejecución.

Microsoft proporciona varias opciones para administrar el sistema operativo Windows y los cambios en las aplicaciones. SCCM, por ejemplo, proporciona una cobertura completa del ciclo de vida de las modificaciones del entorno. Seleccione herramientas que aborden los requisitos empresariales y controlen cómo los cambios afectarán los SLA de las aplicaciones, la capacidad, la seguridad y los procedimientos de recuperación de desastres. Evite los cambios manuales y, en su lugar, aproveche el software de administración de configuración automatizada o las herramientas de línea de comandos, como EC2 Run Command o Windows PowerShell para implementar procesos de cambio repetibles y con secuencias de comandos. Para facilitar este requisito, utilice hosts de bastión con registro mejorado para todas las interacciones con las instancias de Windows para asegurarse de que todos los eventos y tareas se graben automáticamente.

## Auditoría y rendición de cuentas para instancias de Windows de Amazon EC2
<a name="audit-accountability"></a>

AWS CloudTrail, AWS Config y Reglas de AWS Config proporcionar características de auditoría y seguimiento de cambios para auditar los cambios de recursos de AWS. Configure los registros de eventos de Windows para enviar archivos de registro locales a un sistema de administración de registros centralizado para conservar los datos de registro para el análisis de seguridad y comportamiento operativo. Microsoft System Center Operations Manager (SCOM) agrega información acerca de las aplicaciones de Microsoft implementadas en instancias de Windows y aplica conjuntos de reglas preconfigurados y personalizados basados en roles y servicios de aplicaciones. Los System Center Management Packs se basan en SCOM para proporcionar monitoreo y orientación de configuración específicos de las aplicaciones. Estos [paquetes de administración](https://learn.microsoft.com/en-us/archive/technet-wiki/16174.microsoft-management-packs) admiten Windows Server Active Directory, SharePoint Server 2013, Exchange Server 2013, Lync Server 2013, SQL Server 2014 y muchos otros servidores y tecnologías.

Además de las herramientas de administración de sistemas de Microsoft, los clientes pueden utilizar Amazon CloudWatch para monitorear la utilización de la CPU de instancias, el rendimiento del disco, la E/S de red y realizar comprobaciones de estado de hosts e instancias. Los agentes de lanzamiento EC2Config, EC2Launch y EC2Launch v2 proporcionan acceso a características avanzadas adicionales para las instancias de Windows. Por ejemplo, pueden exportar registros de sistemas, seguridad, aplicaciones e Internet Information Services (IIS) de Windows a CloudWatch Logs que se pueden integrar con métricas y alarmas de Amazon CloudWatch. Los clientes también pueden crear scripts que exporten contadores de rendimiento de Windows a métricas personalizadas de Amazon CloudWatch.

# Pares de claves e instancias de Amazon EC2
<a name="ec2-key-pairs"></a>

Un par de claves, que consta de una clave pública y una clave privada, es un conjunto de credenciales de seguridad que se utiliza para demostrar su identidad cuando se conecta a una instancia de Amazon EC2. En el caso de las instancias de Linux, la clave privada le permite utilizar SSH para conectarse de forma segura a la instancia. Para las instancias de Windows, se requiere la clave privada para descifrar la contraseña del administrador, que después utilizará para conectarse a la instancia.

Amazon EC2 almacena la clave pública en su instancia y usted almacena la clave privada, como se muestra en el diagrama siguiente. Es importante que almacene su clave privada en un lugar seguro, ya que cualquier persona que la tenga puede conectarse a las instancias que utilizan el par de claves.

![\[Un par de claves consta de una clave privada para su equipo y una clave pública para la instancia.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ec2-key-pair.png)


Cuando lanza una instancia, puede [especificar un par de claves](ec2-instance-launch-parameters.md#liw-key-pair) para poder conectarse a la instancia mediante un método que requiera un par de claves. Según cómo administre la seguridad, puede especificar el mismo par de claves para todas las instancias o puede especificar pares de claves diferentes.

Para instancias de Linux, cuando la instancia se arranca por primera vez, la clave pública que especificó durante el lanzamiento se coloca en la instancia de Linux en una entrada dentro de `~/.ssh/authorized_keys`. Cuando se conecta a su instancia de Linux mediante SSH, debe especificar la clave privada que corresponde a la clave pública para iniciar sesión.

Para obtener más información sobre cómo conectarse a la instancia EC2, consulte [Conexión con instancias EC2](connect.md).

**importante**  
Debido a que Amazon EC2 no conserva una copia de su clave privada, no hay ningún modo de recuperar una clave privada si se pierde. Sin embargo, todavía puede haber una forma de conectarse a instancias para las que ha perdido la clave privada. Para obtener más información, consulte [Perdí mi clave privada. ¿Cómo puedo conectarme a mi instancia?](TroubleshootingInstancesConnecting.md#replacing-lost-key-pair)

Como alternativa a los pares de claves, puede utilizar [AWS Systems Manager Session Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html) para conectarse a su instancia con un shell interactivo de un solo clic basado en navegador o la AWS Command Line Interface (AWS CLI).

**Topics**
+ [Creación de un par de claves para la instancia de Amazon EC2](create-key-pairs.md)
+ [Descripción de los pares de claves](describe-keys.md)
+ [Eliminar un par de claves](delete-key-pair.md)
+ [Adición o eliminación de una clave pública en una instancia de Linux](replacing-key-pair.md)
+ [Verificar la huella digital de su par de claves](verify-keys.md)

# Creación de un par de claves para la instancia de Amazon EC2
<a name="create-key-pairs"></a>

Puede utilizar Amazon EC2 para crear los pares de claves, o bien usar una herramienta de terceros para crearlos e importarlos luego en Amazon EC2.

Amazon EC2 admite claves RSA SSH-2 de 2048 bits para instancias de Linux y Windows. Amazon EC2 también admite claves ED25519 para las instancias de Linux.

Para obtener instrucciones sobre cómo conectarse a una instancia después de crear un par de claves, consulte [Conexión a la instancia de Linux con SSH](connect-to-linux-instance.md) y [Conexión a una instancia de Windows de mediante RDP](connecting_to_windows_instance.md).

**Topics**
+ [Crear un par de claves mediante Amazon EC2](#having-ec2-create-your-key-pair)
+ [Crear un par de claves con AWS CloudFormation](#create-key-pair-cloudformation)
+ [Crear un par de claves con una herramienta de terceros e importar la clave pública a Amazon EC2](#how-to-generate-your-own-key-and-import-it-to-aws)

## Crear un par de claves mediante Amazon EC2
<a name="having-ec2-create-your-key-pair"></a>

Cuando se crea un par de claves con Amazon EC2, la clave pública se almacena en Amazon EC2, y usted almacena la clave privada.

Puede crear hasta 5000 pares de claves por región. Para solicitar un aumento, cree un caso de asistencia. Para obtener más información, consulte [Creación de un caso de soporte](https://docs.aws.amazon.com/awssupport/latest/user/case-management.html#creating-a-support-case) en la *Guía del usuario de Soporte*.

------
#### [ Console ]

**Para crear un par de claves mediante Amazon EC2**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, en **Network & Security**, seleccione **Key Pairs**.

1. Elija **Create key pair (Crear par de claves)**.

1. En **Nombre**, escriba un nombre descriptivo para el par de claves. Amazon EC2 asocia la clave pública al nombre que especifique como nombre de la clave. El nombre de una clave puede incluir hasta 255 caracteres ASCII. No puede incluir espacios iniciales ni finales.

1. Seleccione un tipo de par de claves adecuado para su sistema operativo:

   (Instancias de Linux) En **Tipo de par de claves**, elija **RSA** o **ED25519**.

   (Instancias de Windows) En **Tipo de par de claves**, elija **RSA**. Las claves **ED25519** no son compatibles con instancias de Windows.

1. En **Formato de archivo de la clave privada**, elija el formato en el que desea guardar la clave privada. Para guardar la clave privada en un formato que se pueda utilizar con OpenSSH, elija **pem**. Para guardar la clave privada en un formato que se pueda utilizar con PuTTY, elija **ppk**.

1. Para agregar una etiqueta a la clave pública, elija **Agregar etiqueta** e ingrese la clave y el valor de la etiqueta. Repita este proceso para cada etiqueta. 

1. Elija **Crear par de claves**.

1. Su navegador descargará el archivo de clave privada automáticamente. El nombre del archivo base es el nombre especificado como el nombre del par de claves y la extensión del nombre de archivo la determina el formato de archivo elegido. Guarde el archivo de clave privada en un lugar seguro.
**importante**  
Esta es la única oportunidad para guardar el archivo de clave privada.

1. Si tiene previsto usar un cliente SSH en un equipo macOS o Linux para conectarse a su instancia de Linux, utilice el siguiente comando para establecer los permisos de su archivo de clave privada de manera que solo usted pueda leerlo.

   ```
   chmod 400 key-pair-name.pem
   ```

   Si no configura estos permisos, no podrá conectarse a la instancia con este par de claves. Para obtener más información, consulte [Error: Unprotected Private Key File (Error: archivo de clave privada no protegido)](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key).

------
#### [ AWS CLI ]

**Para crear un par de claves mediante Amazon EC2**

1. Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html) como se indica a continuación para generar el par de claves y guardar la clave privada en un archivo `.pem`. La opción `--query` imprime el material de clave privada en la salida. La opción `--output` guarda el material de la clave privada en el archivo especificado. La extensión debe ser `.pem` o `.ppk`, según el formato de la clave. El nombre de la clave privada puede ser diferente del de la clave pública, pero para facilitar su uso, se recomienda usar el mismo nombre.

   ```
   aws ec2 create-key-pair \
       --key-name my-key-pair \
       --key-type rsa \
       --key-format pem \
       --query "KeyMaterial" \
       --output text > my-key-pair.pem
   ```

1. Si tiene planeado usar un cliente SSH en un equipo macOS o Linux para conectarse a su instancia de Linux, utilice el comando a continuación para establecer los permisos de su archivo de clave privada de manera que solo usted pueda leerlo.

   ```
   chmod 400 key-pair-name.pem
   ```

   Si no configura estos permisos, no podrá conectarse a la instancia con este par de claves. Para obtener más información, consulte [Error: Unprotected Private Key File (Error: archivo de clave privada no protegido)](TroubleshootingInstancesConnecting.md#troubleshoot-unprotected-key).

------
#### [ PowerShell ]

**Para crear un par de claves mediante Amazon EC2**  
Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2KeyPair.html) de `.pem` como se indica a continuación para generar la clave y guardarla en un archivo o `.ppk` El cmdlet **Out-File** guarda el material de clave privada en un archivo con la extensión especificada. La extensión debe ser `.pem` o `.ppk`, según el formato de la clave. El nombre de la clave privada puede ser diferente del de la clave pública, pero para facilitar su uso, se recomienda usar el mismo nombre.

```
(New-EC2KeyPair `
    -KeyName "my-key-pair" `
    -KeyType "rsa" `
    -KeyFormat "pem").KeyMaterial | Out-File -Encoding ascii -FilePath C:\path\my-key-pair.pem
```

------

## Crear un par de claves con AWS CloudFormation
<a name="create-key-pair-cloudformation"></a>

Cuando crea un nuevo par de claves con CloudFormation, la clave privada se guarda en un almacén de parámetros de AWS Systems Manager. El formato del nombre del parámetro es el siguiente:

```
/ec2/keypair/key_pair_id
```

Para obtener más información, consulte [Almacén de parámetros de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) en la *Guía del usuario de AWS Systems Manager*.

**Para crear un par de claves con CloudFormation**

1. Especifique el recurso [AWS::EC2::KeyPair](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-keypair.html) en su plantilla.

   ```
   Resources:
     NewKeyPair:
       Type: 'AWS::EC2::KeyPair'
       Properties: 
         KeyName: new-key-pair
   ```

1. Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html) como se indica a continuación para obtener el ID del par de claves.

   ```
   aws ec2 describe-key-pairs --filters Name=key-name,Values=new-key-pair --query KeyPairs[*].KeyPairId --output text
   ```

   A continuación, se muestra un ejemplo del resultado.

   ```
   key-05abb699beEXAMPLE
   ```

1. Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) como se indica a continuación para obtener el parámetro de su clave y guardar el material de la clave en un archivo `.pem`.

   ```
   aws ssm get-parameter --name /ec2/keypair/key-05abb699beEXAMPLE --with-decryption --query Parameter.Value --output text > new-key-pair.pem
   ```

**Permisos de IAM necesarios**

Para que CloudFormation pueda administrar los parámetros del Almacén de parámetros en su nombre, el rol de IAM asumido por CloudFormation o su usuario tiene que tener los permisos siguientes:
+ `ssm:PutParameter`: otorga permiso para crear un parámetro para el material de clave privada.
+ `ssm:DeleteParameter`: concede permiso para eliminar el parámetro que almacenaba el material de la clave privada. Este permiso es necesario independientemente de si CloudFormation creó o importó el par de claves.

Cuando CloudFormation elimina un par de claves que la pila creó o importó, hace una comprobación de los permisos para determinar si tiene permiso para eliminar parámetros, aunque CloudFormation crea un parámetro solo cuando crea un par de claves, no cuando importa un par de claves. CloudFormation comprueba el permiso necesario mediante un nombre de parámetro inventado que no coincide con ningún parámetro de su cuenta. Por lo tanto, es posible que vea un nombre de parámetro inventado en el mensaje de error `AccessDeniedException`.

## Crear un par de claves con una herramienta de terceros e importar la clave pública a Amazon EC2
<a name="how-to-generate-your-own-key-and-import-it-to-aws"></a>

En lugar de utilizar Amazon EC2 para crear un par de claves, puede crear un par de claves RSA o ED25519 con una herramienta de terceros y, a continuación, importar la clave pública en Amazon EC2.

**Requisitos para pares de claves**
+ Tipos admitidos:
  + (Linux y Windows) RSA
  + (Solo para Linux) ED25519
**nota**  
Las claves ED25519 no son compatibles con instancias de Windows.
  + Amazon EC2 no acepta claves DSA.
+ Formatos admitidos:
  + Formato de clave pública de OpenSSH (en Linux, el formato de `~/.ssh/authorized_keys`)
  + (Solo para Linux) Si se conecta mediante SSH mientras utiliza la API de EC2 Instance Connect, se admite también el formato SSH2.
  + El formato del archivo de clave privada de SSH debe ser PEM o PPK
  + (Solo RSA) Formato DER codificado en Base64
  + (Solo RSA) Formato de archivo de claves públicas de SSH tal y como se especifica en [RFC 4716](https://www.ietf.org/rfc/rfc4716.txt)
+ Longitudes admitidas:
  + 1024, 2048 y 4096.
  + (Solo para Linux) Si se conecta mediante SSH mientras utiliza la API de EC2 Instance Connect, se admiten las longitudes 2048 y 4096.

**Para crear su par de claves con una herramienta de terceros**

1. Genere un par de claves con la herramienta de terceros de su elección. Por ejemplo, puede usar **ssh-keygen** (una herramienta proporcionada con la instalación de OpenSSH estándar). Además, Java, Ruby, Python y otros muchos lenguajes de programación ofrecen bibliotecas estándar que puede utilizar para crear un par de claves.
**importante**  
La clave privada debe estar en formato PEM o PPK. Por ejemplo, use `ssh-keygen -m PEM` para generar la clave OpenSSH en el formato PEM.

1. Guarde la clave pública en un archivo local. Por ejemplo, `~/.ssh/my-key-pair.pub` (Linux, macOS) o `C:\keys\my-key-pair.pub` (Windows). La extensión de este archivo no es importante.

1. Guarde la clave privada en un archivo local con la extensión `.pem` o `.ppk`. Por ejemplo, `~/.ssh/my-key-pair.pem` o `~/.ssh/my-key-pair.ppk` (Linux, macOS) o `C:\keys\my-key-pair.pem` o `C:\keys\my-key-pair.ppk` (Windows). La extensión del archivo es importante porque, según la herramienta que utilice para conectarse a la instancia, necesitará un formato de archivo específico. OpenSSH requiere un archivo `.pem`, mientras que PuTTY requiere un archivo `.ppk`.
**importante**  
Guarde el archivo de clave privada en un lugar seguro. Deberá proporcionar el nombre de su clave pública al iniciar una instancia y la clave privada correspondiente cada vez que se conecte a dicha instancia.

Una vez creado el par de claves, use uno de los métodos siguientes para importar la clave pública a Amazon EC2.

------
#### [ Console ]

**Para importar la clave pública a Amazon EC2**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Key Pairs (Pares de claves)**.

1. Elija **Importar par de claves**.

1. En **Nombre**, escriba un nombre descriptivo para la clave pública. El nombre puede incluir hasta 255 caracteres ASCII. No puede incluir espacios iniciales ni finales.
**nota**  
Cuando se conecta a la instancia desde la consola de EC2, dicha consola sugiere este nombre para el nombre del archivo de clave privada.

1. Elija **Examinar** para desplazarse hasta la clave pública y seleccionarla, o pegue el contenido de la clave pública en el campo **Contenido de la clave pública**.

1. Elija **Import key pair (Importar par de claves)**.

1. Compruebe que la clave pública importada aparezca en la lista de pares de claves.

------
#### [ AWS CLI ]

**Para importar la clave pública a Amazon EC2**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html).

```
aws ec2 import-key-pair \
    --key-name my-key-pair \
    --public-key-material fileb://path/my-key-pair.pub
```

**Para comprobar que el par de claves se importó correctamente**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html).

```
aws ec2 describe-key-pairs --key-names my-key-pair
```

------
#### [ PowerShell ]

**Para importar la clave pública a Amazon EC2**  
Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Import-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Import-EC2KeyPair.html).

```
$publickey=[Io.File]::ReadAllText("C:\Users\TestUser\.ssh\id_rsa.pub")
Import-EC2KeyPair `
    -KeyName my-key-pair `
    -PublicKey $publickey
```

**Para comprobar que el par de claves se importó correctamente**  
Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html).

```
Get-EC2KeyPair -KeyName my-key-pair
```

------

# Descripción de los pares de claves
<a name="describe-keys"></a>

Puede describir los pares de claves que se almacenan en Amazon EC2. También puede recuperar el material de la clave pública e identificar la clave pública que se especificó en el lanzamiento.

**Topics**
+ [Descripción de los pares de claves](#describe-public-key)
+ [Recupere el material de la clave pública](#retrieving-the-public-key)
+ [Identificación del par de claves públicas que se especificó en el lanzamiento](#identify-key-pair-specified-at-launch)

## Descripción de los pares de claves
<a name="describe-public-key"></a>

Puede ver la siguiente información sobre las claves públicas que se almacenan en Amazon EC2: nombre de clave pública, ID, tipo de clave, huella digital, material de clave pública, fecha y hora (en la zona horaria UTC) en que Amazon EC2 creó la clave (si la clave la creó una herramienta de terceros, entonces es la fecha y la hora en que la clave se importó a Amazon EC2) y cualquier etiqueta asociada a la clave pública.

------
#### [ Console ]

**Visualización de información sobre los pares de claves**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación izquierdo, elija **Key Pairs** (Par de claves).

1. Puede ver información sobre cada clave pública en la tabla **Pares de claves**.  
![\[Tabla de pares de claves.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/key-pairs-describe-console.png)

1. Para ver las etiquetas de una clave pública, seleccione la casilla de verificación situada junto a la clave y, a continuación, elija **Acciones**, **Administrar etiquetas**.

------
#### [ AWS CLI ]

**Visualización de información sobre un par de claves**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html).

```
aws ec2 describe-key-pairs --key-names key-pair-name
```

------
#### [ PowerShell ]

**Visualización de información sobre un par de claves**  
Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html).

```
Get-EC2KeyPair -KeyName key-pair-name
```

------

## Recupere el material de la clave pública
<a name="retrieving-the-public-key"></a>

Puede obtener el material de la clave pública para los pares de claves. A continuación, se muestra una clave pública de ejemplo. Tenga en cuenta que se agregan saltos de línea para facilitar la lectura.

```
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V
hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr
lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ
qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb
BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
```

------
#### [ Private key ]

**Recuperación del material de la clave pública mediante ssh-keygen (Linux)**  
En su equipo Linux o macOS local, utilice el comando **ssh-keygen**. Especifique la ruta donde descargó la clave privada (el archivo `.pem`).

```
ssh-keygen -y -f /path_to_key_pair/my-key-pair.pem
```

Si se produce un error con este comando **ssh-keygen**, ejecute el siguiente comando **chmod** para asegurarse de que el archivo de clave privada tenga los permisos necesarios.

```
chmod 400 key-pair-name.pem
```

**Recuperación del material de la clave pública mediante PuTTYgen (Windows)**  
En el equipo Windows local, inicie PuTTYgen. Elija **Load (Cargar)**. Seleccione el archivo `.ppk` o `.pem` de clave privada. PuTTYgen muestra la clave pública en **Clave pública para pegar en el archivo authorized\$1keys de Open SSH**. También puede ver la clave pública eligiendo **Guardar clave pública**, especificando un nombre para el archivo, guardando el archivo y abriendo después el archivo.

------
#### [ AWS CLI ]

**Recuperación del material de la clave pública**  
Utilice el siguiente comando [describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html) y especifique la opción `--include-public-key`.

```
aws ec2 describe-key-pairs \
    --key-names key-pair-name \
    --include-public-key \
    --query "KeyPairs[].PublicKey"
```

------
#### [ PowerShell ]

**Recuperación del material de la clave pública**  
Utilice el cmdlet [Get-EC2KeyPair](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2KeyPair.html).

```
(Get-EC2KeyPair -KeyName key-pair-name -IncludePublicKey $true).PublicKey
```

------
#### [ IMDSv2 ]

**Linux**  
Ejecute los siguientes comandos en la instancia de Linux.

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
```

**Windows**  
Ejecute los siguientes cmdlets en la instancia de Windows.

```
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
```

------
#### [ IMDSv1 ]

**Linux**  
Ejecute el siguiente comando en la instancia de Linux.

```
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
```

**Windows**  
Ejecute los siguientes cmdlets en la instancia de Windows.

```
Invoke-RestMethod -uri  http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
```

------

## Identificación del par de claves públicas que se especificó en el lanzamiento
<a name="identify-key-pair-specified-at-launch"></a>

Si especifica una clave pública cuando lanza una instancia, la instancia registra el nombre de la clave pública. El nombre de la clave pública notificado para una instancia no cambia aunque cambie la clave pública de la instancia o se agreguen claves públicas.

------
#### [ Console ]

**Identificación de la clave pública que se especificó en el lanzamiento de una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instancias**.

1. Seleccione la instancia.

1. En la pestaña **Detalles**, en **Detalles de la instancia**, busque **Par de claves asignadas en el lanzamiento**.

------
#### [ AWS CLI ]

**Identificación de la clave pública que se especificó en el lanzamiento de una instancia**  
Utilice el siguiente comando [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
aws ec2 describe-instances \
    --instance-id i-1234567890abcdef0 \
    --query "Reservations[].Instances[].KeyName" \
    --output text
```

A continuación, se muestra un ejemplo del resultado.

```
key-pair-name
```

------
#### [ PowerShell ]

**Identificación de la clave pública que se especificó en el lanzamiento de una instancia**  
Utilice el cmdlet [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances | Select KeyName
```

A continuación, se muestra un ejemplo del resultado.

```
KeyName
-------
key-pair-name
```

------

# Eliminar un par de claves
<a name="delete-key-pair"></a>

Puede eliminar un par de claves, lo que elimina la clave pública que se almacena en Amazon EC2. La eliminación de un par de claves no elimina la clave privada correspondiente.

Cuando elimina una clave pública mediante los siguientes métodos, solo estará eliminando la clave pública que almacenó en Amazon EC2 en el momento de [crear](create-key-pairs.md#having-ec2-create-your-key-pair) o [importar](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws) el par de claves. La eliminación de una clave pública no la elimina de las instancias a las que la haya agregado, ya sea al iniciar la instancia o posteriormente. Tampoco elimina la clave privada guardada en su computadora local. Puede seguir conectándose a las instancias que haya lanzado mediante una clave pública que haya eliminado de Amazon EC2, siempre y cuando siga teniendo el archivo de clave privada (`.pem`).

**importante**  
Si utiliza un grupo de Auto Scaling (por ejemplo, en un entorno de Elastic Beanstalk), asegúrese de que la clave pública que eliminará no se especifique en una plantilla de lanzamiento ni una configuración de lanzamiento asociadas. Si Amazon EC2 Auto Scaling detecta una instancia en mal estado, lanzará una instancia de reemplazo. Sin embargo, se producirá un error en el lanzamiento de la instancia si no se encuentra la clave pública. Para obtener más información, consulte [Plantillas de lanzamiento](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html) en la *Guía del usuario de Amazon EC2 Auto Scaling*.

------
#### [ Console ]

**Para eliminar la clave pública en Amazon EC2**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Pares de claves**.

1. Seleccione el par de claves que desea eliminar y elija **Acciones**, **Eliminar**.

1. En el campo de confirmación, escriba `Delete` y, a continuación, elija **Eliminar**.

------
#### [ AWS CLI ]

**Para eliminar la clave pública en Amazon EC2**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html).

```
aws ec2 delete-key-pair --key-name my-key-pair
```

------
#### [ PowerShell ]

**Para eliminar la clave pública en Amazon EC2**  
Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2KeyPair.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2KeyPair.html).

```
Remove-EC2KeyPair -KeyName my-key-pair
```

------

# Adición o eliminación de una clave pública en una instancia de Linux
<a name="replacing-key-pair"></a>


|  | 
| --- |
| Si pierde una clave privada, perderá el acceso a todas las instancias que usen el par de claves. Para obtener más información sobre la conexión a una instancia mediante un par de claves diferente al que especificó en el lanzamiento, consulte [Perdí mi clave privada](TroubleshootingInstancesConnecting.md#replacing-lost-key-pair). | 

Al lanzar una instancia, puede [especificar el par de claves](ec2-instance-launch-parameters.md#liw-key-pair). Si especifica un par de claves durante el lanzamiento, cuando la instancia se arranca por primera vez, el material de la clave pública se coloca en la instancia de Linux en una entrada dentro de `~/.ssh/authorized_keys`. Cuando se conecta por primera vez a su instancia de Linux mediante SSH, debe especificar el usuario predeterminado y la clave privada que corresponde a la clave pública que está almacenada en su instancia de Linux.

Después de conectarse a la instancia, puede cambiar el par de claves que se utiliza para acceder a la cuenta predeterminada del sistema de la instancia agregando una nueva clave pública en la instancia o reemplazando la clave pública (es decir, eliminando la clave pública existente y agregando una nueva) en la instancia. También puede eliminar todas las claves públicas de una instancia.

Puede agregar o sustituir un par de claves por los motivos siguientes:
+ Si un usuario de su organización tiene que acceder al usuario del sistema con un par de claves diferente, puede agregar la clave pública a la instancia.
+ Si alguien tiene una copia de la clave privada (archivo `.pem`) y usted quiere evitar que se conecte a la instancia (en caso de que, por ejemplo, ya no pertenezca a la organización), puede eliminar la clave pública de la instancia y reemplazarla por una nueva.
+ Si crea una AMI de Linux a partir de una instancia, el material de la clave pública se copia de la instancia a la AMI. Si lanza una instancia a partir de la AMI, la nueva instancia incluirá la clave pública de la instancia original. Para evitar que alguien que tenga la clave privada se conecte a la nueva instancia, puede eliminar la clave pública de la instancia original *antes* de crear la AMI.

Utilice los procedimientos siguientes para modificar el par de claves para el usuario predeterminado como, por ejemplo, `ec2-user`. Para obtener información sobre cómo agregar usuarios a la instancia, consulte la documentación del sistema operativo de la instancia.

**Para agregar o sustituir un par de claves**

1. Cree un nuevo par de claves mediante la [consola de Amazon EC2](create-key-pairs.md#having-ec2-create-your-key-pair) o una [herramienta de terceros](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws).

1. Recupere la clave pública a partir de su nuevo par de claves. Para obtener más información, consulte [Recupere el material de la clave pública](describe-keys.md#retrieving-the-public-key).

1. [Conecte con la instancia](connect-to-linux-instance.md).

1. En la instancia, con el editor de texto que desee, abra el archivo `.ssh/authorized_keys`. Pegue la información de la clave pública de su nuevo par de claves debajo de la información de la clave pública existente y luego guarde el archivo.

1. Desconéctese de la instancia. Compruebe que puede conectarse a la instancia utilizando el archivo de clave privada para el nuevo par de claves.

1. Si está utilizando el escalado automático, una flota de EC2 o una plantilla de lanzamiento para iniciar sus instancias, verifique si el par de claves que está reemplazando está especificado en su plantilla de lanzamiento o configuración de lanzamiento. De lo contrario, los lanzamientos de la instancia fallarán.

1. (Opcional) Si desea sustituir un par de claves existente, conéctese a la instancia y elimine la información de la clave pública para el par de claves original del archivo `.ssh/authorized_keys`.

**Para eliminar la clave pública de una instancia**

1. [Conéctese a la instancia](connect-to-linux-instance.md).

1. Con el editor de texto que desee, abra el archivo `.ssh/authorized_keys` en la instancia. Elimine la información de la clave pública y, a continuación, guarde el archivo.

**aviso**  
Si elimina todas las claves públicas de una instancia y se desconecta de esta, no podrá volver a conectarse a la instancia a menos que haya configurado un método alternativo de inicio de sesión.

# Verificar la huella digital de su par de claves
<a name="verify-keys"></a>

Para comprobar la huella digital de su par de claves, compare la huella digital que aparece en la página **Pares de claves** de la consola de Amazon EC2, o la que devuelve el comando [describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html), con la huella digital que genere con la clave privada de su equipo local. Estas huellas digitales deben coincidir.

Cuando Amazon EC2 calcula una huella digital, Amazon EC2 puede añadir un relleno a la huella digital con caracteres `=`. Otras herramientas, como **ssh-keygen**, pueden omitir este relleno.

Si está intentando verificar la huella digital de su instancia de Linux EC2, y no la huella digital de su par de claves, consulte [Obtener la huella digital de la instancia](connection-prereqs-general.md#connection-prereqs-fingerprint).

## Cómo se calculan las huellas digitales
<a name="how-ec2-key-fingerprints-are-calculated"></a>

Amazon EC2 utiliza diferentes funciones hash para calcular las huellas digitales de los pares de claves RSA y ED25519. Además, en el caso de los pares de claves RSA, Amazon EC2 calcula las huellas digitales de forma diferente con distintas funciones hash, según si el par de claves lo ha creado Amazon EC2 o se ha importado en Amazon EC2.

En la tabla siguiente aparecen las funciones hash que se utilizan para calcular las huellas digitales de los pares de claves RSA y ED25519 que crea Amazon EC2 y se importan en Amazon EC2.


**(Instancias de Linux) Funciones hash utilizadas para calcular la huella digital**  

| Origen de par de claves | Pares de claves RSA (Windows y Linux) | Pares de claves ED25519 (Linux) | 
| --- | --- | --- | 
| Creados por Amazon EC2 | SHA-1 | SHA-256 | 
| Importados en Amazon EC2 | MD5¹ | SHA-256 | 

¹ Si importa una clave RSA pública en Amazon EC2, la huella digital se calcula mediante una función hash MD5. Esto es así con independencia de cómo haya creado el par de claves; por ejemplo, mediante una herramienta de terceros, o bien generando una nueva clave pública a partir de una clave privada existente creada con Amazon EC2.

## Cuando se utiliza el mismo par de claves en distintas regiones
<a name="when-using-same-key-pair-in-different-regions"></a>

Si tiene previsto utilizar el mismo par de claves para conectarse a instancias de distintas Regiones de AWS, debe importar la clave pública en todas las regiones en las que vaya a utilizarla. Si utiliza Amazon EC2 para crear el par de claves, [Recupere el material de la clave pública](describe-keys.md#retrieving-the-public-key) para poder importar la clave pública en las demás regiones.

**nota**  
Si crea un par de claves RSA con Amazon EC2 y luego genera una clave pública a partir de la clave privada de Amazon EC2, las claves públicas importadas tendrán una huella digital diferente a la de la clave pública original. Esto se debe a que la huella digital de la clave RSA original creada con Amazon EC2 se calcula mediante una función hash SHA-1, mientras que la huella digital de las claves RSA importadas se calcula mediante una función hash MD5.
En el caso de los pares de claves ED25519, las huellas digitales serán iguales, con independencia de si las ha creado Amazon EC2 o se han importado en Amazon EC2, porque se utiliza la misma función hash SHA-256 para calcularlas.

## Generar una huella digital a partir de la clave privada
<a name="generate-fingerprint-from-private-key"></a>

Utilice uno de los siguientes comandos para generar una huella digital a partir de la clave privada de la máquina local.

Si utiliza un equipo local de Windows, puede ejecutar los siguientes comandos utilizando Windows Subsystem for Linux (WSL). Instale el WSL y una distribución Linux según las instrucciones que se indican en [Cómo instalar Linux en Windows con WSL](https://learn.microsoft.com/en-us/windows/wsl/install). El ejemplo que aparece en las instrucciones instala la distribución Ubuntu de Linux, pero puede instalar cualquier distribución. Se le solicita que reinicie su equipo para que se apliquen los cambios.
+ **Si ha creado el par de claves con Amazon EC2**

  Utilice las herramientas de OpenSSL para generar una huella digital como se muestra en los siguientes ejemplos.

  Para pares de claves RSA:

  ```
  openssl pkcs8 -in path_to_private_key -inform PEM -outform DER -topk8 -nocrypt | openssl sha1 -c
  ```

  (Instancias de Linux) Para pares de claves ED25519:

  ```
  ssh-keygen -l -f path_to_private_key
  ```
+ **(Solo pares de claves RSA): si ha importado la clave pública a Amazon EC2**

  Puede seguir este procedimiento independientemente de cómo haya creado el par de claves; por ejemplo, mediante una herramienta de terceros o bien al generar una nueva clave pública a partir de una clave privada existente creada con Amazon EC2.

  Utilice las herramientas de OpenSSL para generar la huella digital como se muestra en el siguiente ejemplo.

  ```
  openssl rsa -in path_to_private_key -pubout -outform DER | openssl md5 -c
  ```
+ **Si ha creado un par de claves OpenSSH con OpenSSH 7.8 o posterior y ha importado la clave pública en Amazon EC2**

  Utilice **ssh-keygen** para generar la huella digital como se muestra en los siguientes ejemplos.

  Para pares de claves RSA:

  ```
  ssh-keygen -ef path_to_private_key -m PEM | openssl rsa -RSAPublicKey_in -outform DER | openssl md5 -c
  ```

  (Instancias de Linux) Para pares de claves ED25519:

  ```
  ssh-keygen -l -f path_to_private_key
  ```

# Grupos de seguridad de Amazon EC2 para instancias EC2
<a name="ec2-security-groups"></a>

Un *grupo de seguridad* funciona como un firewall virtual para las instancias de EC2 para controlar el tráfico entrante y saliente. Las reglas de entrada controlan el tráfico entrante a la instancia y las reglas de salida controlan el tráfico saliente desde la instancia. Al iniciar una instancia puede especificar uno o varios grupos de seguridad. Si no especifica un grupo de seguridad, Amazon EC2 utiliza el grupo de seguridad predeterminado para la VPC. Una vez lanzada la instancia, puede cambiar sus grupos de seguridad.

La seguridad es una responsabilidad compartida entre AWS y usted. Para más información, consulte [Seguridad en Amazon EC2](ec2-security.md). AWS proporciona grupos de seguridad como una de las herramientas para proteger las instancias y debe configurarlos para satisfacer sus necesidades de seguridad. Si tiene requisitos que no cumplen totalmente los grupos de seguridad, puede mantener su propio firewall en cualquiera de las instancias, además de usar grupos de seguridad.

**Precios**  
El uso de grupos de seguridad no supone ningún cargo adicional.

**Topics**
+ [Descripción general](#security-group-basics)
+ [Cree un grupo de seguridad para su instancia de Amazon EC2](creating-security-group.md)
+ [Cambie los grupos de seguridad para la instancia de Amazon EC2](changing-security-group.md)
+ [Eliminar un grupo de seguridad de Amazon EC2](deleting-security-group.md)
+ [Seguimiento de conexiones del grupo de seguridad de Amazon EC2](security-group-connection-tracking.md)
+ [Reglas de grupo de seguridad para diferentes casos de uso](security-group-rules-reference.md)

## Descripción general
<a name="security-group-basics"></a>

Puede asociar cada instancia a varios grupos de seguridad y puede asociar cada grupo de seguridad a varias instancias. Añade reglas a cada grupo de seguridad que permiten que el tráfico a o desde sus instancias asociadas. Puede modificar las reglas de un grupo de seguridad en cualquier momento. Las reglas nuevas y modificadas se aplican automáticamente a todas las instancias asociadas al grupo de seguridad. Cuando Amazon EC2 decide si se permite que el tráfico llegue a una instancia, evalúa todas las reglas de todos los grupos de seguridad asociados a la instancia. Para obtener más información, consulte [Reglas del grupo de seguridad](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html) en la *Guía del usuario de Amazon VPC*.

En el siguiente diagrama se muestra una VPC con una subred, una puerta de enlace de Internet y un grupo de seguridad. La subred contiene instancias de EC2. El grupo de seguridad se asocia con las instancias. El único tráfico que llega a la instancia es el permitido por las reglas del grupo de seguridad. Por ejemplo, si el grupo de seguridad contiene una regla que permite el tráfico SSH a la instancia desde su red, puede conectarse a la instancia desde su equipo mediante SSH. Si el grupo de seguridad contiene una regla que permite todo el tráfico de los recursos asociados a él, entonces cada instancia puede recibir cualquier tráfico enviado desde otras instancias.

![\[Una VPC con un grupo de seguridad. Las instancias de EC2 de la subred están asociadas al grupo de seguridad.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ec2-security-groups.png)


Los grupos de seguridad tienen estado: si envía una solicitud desde su instancia, se permite el flujo del tráfico de respuesta para dicha solicitud independientemente de las reglas de entrada del grupo de seguridad. También, se permite la salida de las repuestas al tráfico de entrada independientemente de las reglas salientes. Para obtener más información, consulte [Seguimiento de la conexión](security-group-connection-tracking.md).

# Cree un grupo de seguridad para su instancia de Amazon EC2
<a name="creating-security-group"></a>

Los grupos de seguridad actúan como firewall para las instancias asociadas al controlar el tráfico entrante y saliente en el ámbito de la instancia. Puede agregar reglas a un grupo de seguridad que le permita conectarse a la instancia mediante SSH (instancias de Linux) o RDP (instancias de Windows). También puede agregar reglas que permitan el tráfico de clientes, por ejemplo, el tráfico HTTP y HTTPS destinado a un servidor web.

Puede asociar un grupo de seguridad a una instancia al iniciar la instancia. Al añadir o quitar reglas de los grupos de seguridad asociados, esos cambios se aplican automáticamente a todas las instancias a las que ha asociado el grupo de seguridad.

Una vez iniciada la instancia, puede asociar grupos de seguridad adicionales. Para obtener más información, consulte [Cambie los grupos de seguridad para la instancia de Amazon EC2](changing-security-group.md).

Puede agregar reglas de grupo de seguridad entrantes y salientes cuando crea un grupo de seguridad, o puede agregarlas más adelante. Para obtener más información, consulte [Configurar reglas del grupo de seguridad](changing-security-group.md#add-remove-security-group-rules). Para ver ejemplos de reglas que puede agregar a un grupo de seguridad, consulte [Reglas de grupo de seguridad para diferentes casos de uso](security-group-rules-reference.md).

**Consideraciones**
+ Los nuevos grupos de seguridad comienzan con una única regla de salida que permite que todo el tráfico salga del recurso. Debe añadir reglas para permitir el tráfico entrante o restringir el tráfico saliente.
+ Cuando configure una fuente para una regla que permita el acceso SSH o RDP a sus instancias, no permita el acceso desde ningún lugar, ya que permitiría este acceso a la instancia desde todas las direcciones IP de Internet. Esto es aceptable para un periodo de tiempo corto en un entorno de prueba, pero no es seguro en entornos de producción.
+ Si hay más de una regla para un puerto específico, Amazon EC2 aplica la regla más permisiva. Por ejemplo, si cuenta con una regla que permite el acceso al puerto TCP 22 (SSH) desde la dirección IP 203.0.113.1 y otra regla que permite el acceso al puerto TCP 22 desde todas las direcciones, todos tienen acceso al puerto TCP 22.
+ Puede asignar varios grupos de seguridad a una instancia. Por lo tanto, una instancia puede tener cientos de reglas que se aplican. Esto puede causar problemas al obtener acceso a la instancia. Le recomendamos que condense las reglas en la medida de lo posible.
+ Al especificar un grupo de seguridad como origen o destino de una regla, la regla afecta a todas las instancias que están asociadas al grupo de seguridad. Se permite el tráfico entrante según las direcciones IP privadas de las instancias asociadas al grupo de seguridad de origen (y no la dirección IP pública o las direcciones IP elásticas). Para obtener más información acerca de las direcciones IP, consulte [Direccionamiento IP de instancias Amazon EC2](using-instance-addressing.md).
+ Amazon EC2 bloquea el tráfico en el puerto 25 de forma predeterminada. Para obtener más información, consulte [Restricción en el correo electrónico enviado a través del puerto 25](ec2-resource-limits.md#port-25-throttle).

------
#### [ Console ]

**Para crear un grupo de seguridad**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Grupos de seguridad**.

1. Elija **Create Security Group (Creación de grupo de seguridad)**.

1. Introduzca un nombre descriptivo y una breve descripción para el grupo de seguridad. No puede cambiar el nombre ni la descripción de un grupo de seguridad después de crearlo.

1. Para la **VPC**, elija la VPC en la que ejecutará las instancias de Amazon EC2.

1. (Opcional) Para añadir reglas de entrada, elija **Reglas de entrada**. Para cada regla, elija **Agregar regla** y especifique el protocolo, el puerto y la fuente. Por ejemplo, para permitir el tráfico SSH, elija **SSH** como **Tipo** y especifique la dirección IPv4 pública de su equipo o red como **Fuente**.

1. (Opcional) Para añadir reglas de salida, elija **Reglas de salida**. Para cada regla, elija **Agregar regla** y especifique el protocolo, el puerto y el destino. De lo contrario, puede mantener la regla predeterminada que permite todo el tráfico de salida.

1. (Opcional) Para agregar una etiqueta, elija **Agregar etiqueta nueva** e ingrese la clave y el valor de la etiqueta.

1. Elija **Crear grupo de seguridad**.

------
#### [ AWS CLI ]

**Para crear un grupo de seguridad**  
Utilice el siguiente comando [create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html).

```
aws ec2 create-security-group \
    --group-name my-security-group \
    --description "my security group" \
    --vpc-id vpc-1234567890abcdef0
```

Para ver ejemplos que agregan reglas, consulte [Configurar reglas del grupo de seguridad](changing-security-group.md#add-remove-security-group-rules).

------
#### [ PowerShell ]

**Para crear un grupo de seguridad**  
Utilice el cmdlet [New-EC2SecurityGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2SecurityGroup.html).

```
New-EC2SecurityGroup `
    -GroupName my-security-group `
    -Description "my security group" `
    -VpcId vpc-1234567890abcdef0
```

Para ver ejemplos que agregan reglas, consulte [Configurar reglas del grupo de seguridad](changing-security-group.md#add-remove-security-group-rules).

------

# Cambie los grupos de seguridad para la instancia de Amazon EC2
<a name="changing-security-group"></a>

Puede especificar grupos de seguridad para sus instancias de Amazon EC2 cuando las inicie. Una vez iniciada la instancia, puede agregar o eliminar grupos de seguridad. También puede agregar, eliminar o editar las reglas de los grupos de seguridad asociados en cualquier momento.

Los grupos de seguridad están asociados a interfaces de red. Al agregar o eliminar grupos de seguridad se cambian los grupos de seguridad asociados a la interfaz de red principal. También puede cambiar los grupos de seguridad asociados a cualquier otra interfaz de red secundaria. Para obtener más información, consulte [Modificar atributos de interfaz de red](modify-network-interface-attributes.md).

**Topics**
+ [Agregar o eliminar grupos de seguridad](#add-remove-instance-security-groups)
+ [Configurar reglas del grupo de seguridad](#add-remove-security-group-rules)

## Agregar o eliminar grupos de seguridad
<a name="add-remove-instance-security-groups"></a>

Tras iniciar una instancia, puede agregar o eliminar grupos de seguridad de la lista de grupos de seguridad asociados. Al asociar varios grupos de seguridad a una instancia, las reglas de cada grupo de seguridad se agregan de manera eficiente para crear un conjunto de reglas. Amazon EC2 utiliza este conjunto de reglas para determinar si permite el tráfico.

**Requisitos**
+ El estado de la instancia debe ser `running` o `stopped`.

------
#### [ Console ]

**Para cambiar los grupos de seguridad de una instancia**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia y, a continuación, elija **Acciones**, **Seguridad**, **Cambiar grupos de seguridad**.

1. En **Grupos de seguridad asociados**, seleccione un grupo de seguridad de la lista y elija **Agregar grupo de seguridad**.

   Para quitar un grupo de seguridad ya asociado, elija **Quitar** para ese grupo de seguridad.

1. Seleccione **Save**.

------
#### [ AWS CLI ]

**Para cambiar los grupos de seguridad de una instancia**  
Utilice el siguiente comando [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html).

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --groups sg-1234567890abcdef0
```

------
#### [ PowerShell ]

**Para cambiar los grupos de seguridad de una instancia**  
Utilice el cmdlet [Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html).

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -Group sg-1234567890abcdef0
```

------

## Configurar reglas del grupo de seguridad
<a name="add-remove-security-group-rules"></a>

Tras crear un grupo de seguridad, puede agregar, actualizar y eliminar sus reglas de grupo de seguridad. Cuando agrega, actualiza o elimina una regla, el cambio se aplica automáticamente a todos los recursos asociados al grupo de seguridad.

Para ver ejemplos de reglas que puede agregar a un grupo de seguridad, consulte [Reglas de grupo de seguridad para diferentes casos de uso](security-group-rules-reference.md).

**Permisos necesarios**  
Antes de comenzar, asegúrese de tener los permisos necesarios. Para obtener más información, consulte [Ejemplo: Trabajar con grupos de seguridad](iam-policies-ec2-console.md#ex-security-groups).

**Protocolos y puertos**
+ Con la consola, si selecciona un tipo predefinido, el **Protocolo** y el **Rango de puertos** se especifican automáticamente. Para introducir un rango de puertos, debe seleccionar uno de los siguientes tipos personalizados: **TCP personalizado** o **UDP personalizado**.
+ Con la AWS CLI, puede agregar una sola regla con un solo puerto mediante las opciones `--protocol` y `--port`. Para añadir varias reglas, o una regla con un rango de puertos, utilice la opción `--ip-permissions`.

**Orígenes y destinos**
+ Con la consola, puede especificar lo siguiente como origen de las reglas de entrada o como destino de las reglas de salida:
  + **Personalizado**: un bloque de CIDR de IPv4 y un bloque de CIDR de IPv6, un grupo de seguridad o una lista de prefijos.
  + **Anywhere-IPv4**: el bloque de CIDR IPv4 0.0.0.0/0.
  + **Anywhere-IPv6**: el bloque de CIDR ::/0 IPv6.
  + **Mi IP**: la dirección IPv4 pública de su equipo local.
+ Con la AWS CLI, puede especificar un bloque de CIDR de IPv4 mediante la opción `--cidr` o un grupo de seguridad mediante la opción `--source-group`. Para especificar una lista de prefijos o un bloque de CIDR de IPv6, utilice la opción `--ip-permissions`.

**aviso**  
Si agrega reglas de entrada para los puertos 22 (SSH) o 3389 (RDP), se le recomienda que autorice solo a la dirección IP específica o al rango de direcciones que necesita acceder a sus instancias. Si elige **Anywhere-IPv4**, permite que el tráfico de todas las direcciones IPv4 tengan acceso a sus instancias mediante el protocolo especificado. Si elige **Anywhere-IPv6**, permite que el tráfico de todas las direcciones IPv6 tengan acceso a sus instancias mediante el protocolo especificado.

------
#### [ Console ]

**Configuración de reglas de grupos de seguridad**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. En el panel de navegación, elija **Security Groups (Grupos de seguridad)**.

1. Seleccione el grupo de seguridad.

1. Para editar las reglas de entrada, seleccione **Editar reglas de entrada** en **Acciones** o en la pestaña **Reglas de entrada**.

   1. Para agregar una regla, elija **Agregar regla** e ingrese el tipo, el protocolo, el puerto y la fuente de la regla.

      Si el tipo es TCP o UDP, debe ingresar el rango de puertos que va a permitir. Para el protocolo ICMP personalizado, debe elegir el nombre del tipo de ICMP en **Protocol** (Protocolo) y, si se aplica, el nombre del código en **Port Range** (Rango de puertos). Si elige cualquier otro tipo, el protocolo y el rango de puertos se configurarán en su nombre.

   1. Para actualizar una regla, cambie su protocolo, descripción y fuente según sea necesario. Sin embargo, no puede cambiar el tipo de fuente. Por ejemplo, si el origen es un bloque CIDR de IPv4, no puede especificar un bloque de CIDR de IPv6, una lista de prefijos o un grupo de seguridad.

   1. Para eliminar una regla, pulse el botón **Eliminar**.

1. Para editar las reglas de salida, selecciona **Editar reglas de salida** en **Acciones** o en la pestaña **Reglas de salida**.

   1. Para agregar una regla, elija **Agregar regla** e ingrese el tipo, el protocolo, el puerto y el destino de la regla. También puede introducir una descripción opcional.

      Si el tipo es TCP o UDP, debe ingresar el rango de puertos que va a permitir. Para el protocolo ICMP personalizado, debe elegir el nombre del tipo de ICMP en **Protocol** (Protocolo) y, si se aplica, el nombre del código en **Port Range** (Rango de puertos). Si elige cualquier otro tipo, el protocolo y el rango de puertos se configurarán en su nombre.

   1. Para actualizar una regla, cambie su protocolo, descripción y fuente según sea necesario. Sin embargo, no puede cambiar el tipo de fuente. Por ejemplo, si el origen es un bloque CIDR de IPv4, no puede especificar un bloque de CIDR de IPv6, una lista de prefijos o un grupo de seguridad.

   1. Para eliminar una regla, pulse el botón **Eliminar**.

1. Seleccione **Guardar reglas**.

------
#### [ AWS CLI ]

**Adición de reglas de grupos de seguridad**  
Utilice el comando [authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html) para agregar reglas de entrada. En el siguiente ejemplo, se permite el tráfico SSH entrante procedente de los bloques de CIDR de la lista de prefijos especificada.

```
aws ec2 authorize-security-group-ingress \
    --group-id sg-1234567890abcdef0 \
    --ip-permissions 'IpProtocol=tcp,FromPort=22,ToPort=22,PrefixListIds=[{PrefixListId=pl-f8a6439156EXAMPLE}]'
```

Utilice el comando [authorize-security-group-egress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-egress.html) para agregar reglas de salida. En el siguiente ejemplo, se permite el tráfico TCP saliente en el puerto 80 a las instancias con el grupo de seguridad especificado.

```
aws ec2 authorize-security-group-egress \
    --group-id sg-1234567890abcdef0 \
    --ip-permissions 'IpProtocol=tcp,FromPort=80,ToPort=80,UserIdGroupPairs=[{GroupId=sg-0aad1c26bb6EXAMPLE}]'
```

**Eliminación de las reglas del grupo de seguridad**  
Utilice el siguiente comando [revoke-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/revoke-security-group-ingress.html) para eliminar una regla de entrada.

```
aws ec2 revoke-security-group-egress \
    --group id sg-1234567890abcdef0 \
    --security-group-rule-ids sgr-09ed298024EXAMPLE
```

Utilice el siguiente comando [revoke-security-group-egress](https://docs.aws.amazon.com/cli/latest/reference/ec2/revoke-security-group-egress.html) para eliminar una regla de salida.

```
aws ec2 revoke-security-group-ingress \
    --group id sg-1234567890abcdef0 \
    --security-group-rule-ids sgr-0352250c1aEXAMPLE
```

**Modificación de las reglas del grupo de seguridad**  
Utilice el comando [modify-security-group-rules](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-security-group-rules.html). En el siguiente ejemplo, se cambia el bloque de CIDR IPv4 de la regla del grupo de seguridad especificada.

```
aws ec2 modify-security-group-rules \
    --group id sg-1234567890abcdef0 \
    --security-group-rules 'SecurityGroupRuleId=sgr-09ed298024EXAMPLE,SecurityGroupRule={IpProtocol=tcp,FromPort=80,ToPort=80,CidrIpv4=0.0.0.0/0}'
```

------
#### [ PowerShell ]

**Adición de reglas de grupos de seguridad**  
Utilice el cmdlet [Grant-EC2SecurityGroupIngress](https://docs.aws.amazon.com/powershell/latest/reference/items/Grant-EC2SecurityGroupIngress.html) para agregar reglas de entrada. En el siguiente ejemplo, se permite el tráfico SSH entrante procedente de los bloques de CIDR de la lista de prefijos especificada.

```
$plid = New-Object -TypeName Amazon.EC2.Model.PrefixListId
$plid.Id = "pl-f8a6439156EXAMPLE"
Grant-EC2SecurityGroupIngress `
    -GroupId sg-1234567890abcdef0 `
    -IpPermission @{IpProtocol="tcp"; FromPort=22; ToPort=22; PrefixListIds=$plid}
```

Utilice el cmdlet [Grant-EC2SecurityGroupEgress](https://docs.aws.amazon.com/powershell/latest/reference/items/Grant-EC2SecurityGroupEgress.html) para agregar reglas de salida. En el siguiente ejemplo, se permite el tráfico TCP saliente en el puerto 80 a las instancias con el grupo de seguridad especificado.

```
$uigp = New-Object -TypeName Amazon.EC2.Model.UserIdGroupPair
$uigp.GroupId = "sg-0aad1c26bb6EXAMPLE"
Grant-EC2SecurityGroupEgress `
    -GroupId sg-1234567890abcdef0 `
    -IpPermission @{IpProtocol="tcp"; FromPort=80; ToPort=80; UserIdGroupPairs=$uigp}
```

**Eliminación de las reglas del grupo de seguridad**  
Utilice el cmdlet [Revoke-EC2SecurityGroupIngress](https://docs.aws.amazon.com/powershell/latest/reference/items/Revoke-EC2SecurityGroupIngress.html) para eliminar reglas de entrada.

```
Revoke-EC2SecurityGroupIngress `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRuleId sgr-09ed298024EXAMPLE
```

Utilice el cmdlet [Revoke-EC2SecurityGroupEgress](https://docs.aws.amazon.com/powershell/latest/reference/items/Revoke-EC2SecurityGroupEgress.html) para eliminar reglas de salida.

```
Revoke-EC2SecurityGroupEgress `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRuleId sgr-0352250c1aEXAMPLE
```

**Modificación de las reglas del grupo de seguridad**  
Utilice el cmdlet [Edit-EC2SecurityGroupRule](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2SecurityGroupRule.html). En el siguiente ejemplo, se cambia el bloque de CIDR IPv4 de la regla del grupo de seguridad especificada.

```
$sgrr = New-Object -TypeName Amazon.EC2.Model.SecurityGroupRuleRequest
$sgrr.IpProtocol = "tcp"
$sgrr.FromPort = 80
$sgrr.ToPort = 80
$sgrr.CidrIpv4 = "0.0.0.0/0"
$sgr = New-Object -TypeName Amazon.EC2.Model.SecurityGroupRuleUpdate
$sgr.SecurityGroupRuleId = "sgr-09ed298024EXAMPLE"
$sgr.SecurityGroupRule = $sgrr
Edit-EC2SecurityGroupRule  `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRule $sgr
```

------

# Eliminar un grupo de seguridad de Amazon EC2
<a name="deleting-security-group"></a>

Cuando ya no necesite un grupo de seguridad creado para utilizar con instancias de Amazon EC2, puede eliminarlo.

**Requisitos**
+ El grupo de seguridad no se puede asociar a una instancia o interfaz de red.
+ Una regla no puede hacer referencia al grupo de seguridad en otro grupo de seguridad.

------
#### [ Console ]

**Para eliminar un grupo de seguridad**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. (Opcional) Para comprobar que el grupo de seguridad no está asociado a una instancia, haga lo siguiente:

   1. En el panel de navegación, elija **Grupos de seguridad**.

   1. Copie el ID del grupo de seguridad que desee eliminar.

   1. En el panel de navegación, seleccione **Instances (Instancias)**.

   1. En la barra de búsqueda, agregue **los ID del grupo de seguridad equivalen a**, filtre y pegue el ID del grupo de seguridad. Si no hay resultados, el grupo de seguridad no está asociado a ninguna instancia. De lo contrario, debe desasociar el grupo de seguridad antes de poder eliminarlo.

1. En el panel de navegación, elija **Grupos de seguridad**.

1. Seleccione un grupo de seguridad y elija **Acciones**, **Eliminar grupo de seguridad**.

1. Si ha seleccionado más de un grupo de seguridad, se le solicitará que lo confirme. Si algunos de los grupos de seguridad no se pueden eliminar, mostramos el estado de cada grupo de seguridad, que indica si se eliminará. Para confirmar la eliminación, use **Eliminar**.

1. Elija **Eliminar**.

------
#### [ AWS CLI ]

**Para eliminar un grupo de seguridad**  
Utilice el siguiente comando [delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html).

```
aws ec2 delete-security-group --group-id sg-1234567890abcdef0
```

------
#### [ PowerShell ]

**Para eliminar un grupo de seguridad**  
Utilice el cmdlet [Remove-EC2SecurityGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2SecurityGroup.html).

```
Remove-EC2SecurityGroup -GroupId sg-1234567890abcdef0
```

------

# Seguimiento de conexiones del grupo de seguridad de Amazon EC2
<a name="security-group-connection-tracking"></a>

Los grupos de seguridad utilizan el seguimiento de las conexiones para realizar un seguimiento de la información sobre el tráfico hacia y desde la instancia. Las reglas se aplican según el estado de la conexión del tráfico para determinar si el tráfico se permite o se deniega. Con este enfoque, los grupos de seguridad tienen estado. Esto significa que se permite la salida de las repuestas al tráfico de entrada de la instancia, independientemente de las reglas de salida del grupo de seguridad y viceversa.

Por ejemplo, suponga que inicia un comando como netcat o alguno similar en las instancias desde la computadora doméstica y las reglas de tráfico de entrada del grupo de seguridad permiten el tráfico de ICMP. Se realiza un seguimiento de la información sobre la conexión (incluida la información del puerto). El tráfico de respuesta desde la instancia del comando no se sigue como una nueva solicitud, sino como una conexión establecida, y se permite que salga de la instancia, aunque las reglas de salida del grupo de seguridad restrinjan el tráfico de ICMP de salida.

En el caso de otros protocolos que no sean TCP, UDP o ICMP, solo se realiza el seguimiento de la dirección IP y del número de protocolo. Si la instancia envía tráfico a otro host, y este envía el mismo tipo de tráfico a su instancia en un plazo de 600 segundos, el grupo de seguridad de la instancia lo acepta independientemente de las reglas de entrada. El grupo de seguridad lo acepta porque se considera un tráfico de respuesta del tráfico original.

Cuando cambia una regla del grupo de seguridad, las conexiones de seguimiento no se interrumpen de forma inmediata. El grupo de seguridad sigue permitiendo paquetes hasta que las conexiones existentes se agoten. Para asegurarse de que el tráfico se interrumpa de forma inmediata, o que todo el tráfico esté sujeto a reglas de firewall, independientemente del estado de seguimiento, puede utilizar una ACL de red para su subred. Las ACL de red son sin estado y, por lo tanto, no permiten automáticamente el tráfico de respuesta. Agregar una ACL de red que bloquee el tráfico en cualquier dirección provoca la interrupción de las conexiones existentes. Para obtener más información, consulte la sección relacionada con las [ACL de red](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html) en la *Guía del usuario de Amazon VPC*.

**nota**  
Los grupos de seguridad no afectan al tráfico de DNS hacia el servicio Route 53 Resolver o desde el mismo, a veces denominado “dirección IP de VPC\$12” (consulte [¿Qué es Amazon Route 53 Resolver?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver.html) en la *Guía para desarrolladores de Amazon Route 53*) o “AmazonProvidedDNS” (consulte [Trabajo con conjuntos de opciones de DHCP](https://docs.aws.amazon.com/vpc/latest/userguide/DHCPOptionSet.html) en la *Guía del usuario de Amazon Virtual Private Cloud*). Si desea filtrar las solicitudes de DNS a través de Route 53 Resolver, puede habilitar el firewall de DNS de Route 53 Resolver (consulte [Firewall de DNS de Route 53 Resolver](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall.html) en la *Guía para desarrolladores de Amazon Route 53*).

## Conexiones sin seguimiento
<a name="untracked-connections"></a>

No se realiza un seguimiento de todos los flujos de tráfico. Si una regla del grupo de seguridad permite los flujos TCP o UDP para todo el tráfico (0.0.0.0/0 o ::/0) y hay una regla correspondiente en la otra dirección que permita todo el tráfico de respuesta (0.0.0.0/0 o ::/0) para todos los puertos (0-65 535), no se realizará un seguimiento de ese flujo de tráfico, a menos que sea parte de una [conexión de la cual se realiza un seguimiento de manera automática](#automatic-tracking). En el caso de un flujo sin seguimiento, se permite el tráfico de respuesta en función de la regla de entrada o de salida que permita el tráfico de respuesta y no según la información de seguimiento.

Un flujo de tráfico del que no se realiza seguimiento se interrumpe de inmediato si se elimina o modifica la regla que permite el flujo. Por ejemplo, si tiene una regla de salida abierta (0.0.0.0/0) y elimina una regla que permite todo el tráfico SSH (puerto TCP 22) entrante (0.0.0.0/0) a la instancia (o la modifica de modo que la conexión ya no se permita), las conexiones SSH existentes a la instancia se eliminan inmediatamente. La conexión no estaba siendo rastreada previamente, por lo que el cambio romperá la conexión. Por otro lado, si tiene una regla de entrada más estrecha que inicialmente permite la conexión SSH (lo que significa que se hizo un seguimiento de la conexión), pero cambia esa regla para que ya no permita nuevas conexiones desde la dirección del cliente SSH actual, la conexión SSH existente no se interrumpirá porque se le ha hecho un seguimiento.

## Conexiones con seguimiento automático
<a name="automatic-tracking"></a>

Se hace un seguimiento automático de las conexiones realizadas a través de lo siguiente, incluso si la configuración del grupo de seguridad no requiere ningún tipo de seguimiento:
+ Puerta de enlace de Internet de solo salida
+ Aceleradores de Global Accelerator
+ Puerta de enlace de NAT
+ Puntos de conexión de firewall de Network Firewall
+ Network Load Balancers
+ AWS PrivateLink (Puntos de conexión de VPC de tipo interfaz)
+ AWS Lambda (interfaces de red elásticas de hiperplano)
+ Puntos de conexión de la puerta de enlace de DynamoDB: cada conexión a DynamoDB consume 2 entradas de conntrack.

## Permisos de seguimiento de conexiones
<a name="connection-tracking-throttling"></a>

Amazon EC2 define el número máximo de conexiones que se pueden rastrear por instancia. Una vez alcanzado el máximo, los paquetes que se envían o reciben se pierden porque no se puede establecer una nueva conexión. Cuando esto sucede, las aplicaciones que envían y reciben paquetes no pueden comunicarse correctamente. Utilice la métrica de rendimiento de red `conntrack_allowance_available` para determinar la cantidad de conexiones rastreadas que aún están disponibles para ese tipo de instancia.

Para determinar si los paquetes se descartaron porque el tráfico de red de la instancia excedió el número máximo de conexiones que se pueden rastrear, utilice la métrica de rendimiento de red `conntrack_allowance_exceeded`. Para obtener más información, consulte [Supervisar el rendimiento de la red para ajustes ENA en la instancia de EC2](monitoring-network-performance-ena.md).

Con Elastic Load Balancing, si supera el número máximo de conexiones que se pueden rastrear por instancia, se recomienda escalar el número de instancias registradas con el equilibrador de carga o el tamaño de instancias registradas con el equilibrador de carga.

## Prácticas recomendadas de seguimiento de conexión
<a name="connection-tracking-performance"></a>

El enrutamiento asimétrico, en el que el tráfico entra en una instancia a través de una interfaz de red y sale por una interfaz de red diferente, puede reducir el rendimiento máximo que puede alcanzar una instancia si se realiza un seguimiento de los flujos.

Para mantener un rendimiento máximo y optimizar la gestión de las conexiones cuando el seguimiento de conexiones está habilitado para sus grupos de seguridad, le recomendamos la siguiente configuración:
+ Si es posible, evite las topologías de enrutamiento asimétrico.
+ En lugar de usar grupos de seguridad para filtrar, utilice las ACL de la red.
+ Si es necesario utilizar grupos de seguridad con seguimiento de conexiones, configure el tiempo de espera de seguimiento de conexiones inactivas más corto posible. Para obtener más detalles sobre el tiempo de espera de seguimiento de conexiones inactivas, consulte la siguiente sección.
+ Con los tiempos de espera predeterminados más cortos en las instancias de Nitrov6, las aplicaciones con conexiones de larga duración (como grupos de conexiones de bases de datos, conexiones HTTP persistentes o cargas de trabajo de streaming) deben configurar un valor de `TcpEstablishedTimeout` adecuado al lanzar la instancia.
+ En el caso de conexiones de larga duración, configure TCP keep alives para que se envíen a intervalos de menos de 5 minutos a fin de garantizar que las conexiones permanezcan abiertas y mantener su estado de seguimiento. Esto ayuda a evitar que las conexiones se interrumpan debido a un tiempo de inactividad y reduce la sobrecarga que supone restablecer la conexión.

Para obtener más información sobre el ajuste del rendimiento en el sistema Nitro, consulte [Consideraciones sobre el Nitro System para ajustar el rendimiento](ena-nitro-perf.md).

## Tiempo de espera de seguimiento de conexiones inactivas
<a name="connection-tracking-timeouts"></a>

El grupo de seguridad hace el seguimiento de cada conexión establecida para asegurarse de que los paquetes devueltos se entreguen como se espera. Existe un número máximo de conexiones que se pueden rastrear por instancia. Las conexiones que permanecen inactivas pueden provocar que se agote el seguimiento de las conexiones, que no se rastreen y que se pierdan paquetes. Puede establecer el tiempo de espera para el seguimiento de las conexiones inactivas en una interfaz de red elástica.

**nota**  
Esta característica solo está disponible con las [instancias basadas en Nitro](instance-types.md#instance-hypervisor-type). Antes de implementar sus aplicaciones en producción, debe probarlas en instancias de la generación Nitrov6 con el tiempo de espera de seguimiento de conexiones predeterminado reducido a `350` segundos.

Hay tres tiempos de espera configurables:
+ **Tiempo de espera establecido de TCP**: tiempo de espera (en segundos) para las conexiones TCP inactivas en un estado establecido.
  + Mínimo: `60` segundos
  + Máximo: `432000` segundos
  + Predeterminado: `350` segundos para los tipos de instancias de [Nitrov6](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html), excepto P6e-GB200. Y `432000` segundos para otros tipos de instancias, incluida P6e-GB200.
  + Recomendado: menos de `432000` segundos
+ **Tiempo de espera de UDP**: tiempo de espera (en segundos) para los flujos de UDP inactivos que solo han registrado tráfico en una sola dirección o en una sola transacción de solicitud-respuesta.
  + Mínimo: `30` segundos
  + Máximo: `60` segundos
  + Valor predeterminado: `30` segundos
+ **Tiempo de espera del flujo de UDP**: tiempo de espera (en segundos) para los flujos de UDP inactivos clasificados como flujos que han recibido más de una transacción de solicitud-respuesta.
  + Mínimo: `60` segundos
  + Máximo: `180` segundos
  + Valor predeterminado: `180` segundos

Si quiere modificar los tiempos de espera predeterminados para cualquiera de los siguientes casos:
+  Si [supervisa las conexiones rastreadas mediante métricas de rendimiento de red de Amazon EC2](monitoring-network-performance-ena.md), las métricas *conntrack\$1allowance\$1exceeded* y *conntrack\$1allowance\$1available* le permiten supervisar los paquetes descartados y el uso de las conexiones rastreadas para administrar de forma proactiva la capacidad de la instancia de EC2 con acciones de escalado vertical u horizontal para ayudar a satisfacer la demanda de conexiones de red antes de descartar paquetes. Si observa caídas de *conntrack\$1allowance\$1exceeded* en sus instancias de EC2, puede resultarle útil definir un tiempo de espera establecido de TCP más bajo para tener en cuenta las sesiones de TCP/UDP obsoletas que se deben a clientes o cajas intermedias de red inadecuadas.
+ Por lo general, los equilibradores de carga o los firewalls tienen un tiempo de espera de inactividad establecido de TCP de entre 60 y 90 minutos. Si ejecuta cargas de trabajo que se espera que gestionen un número muy elevado de conexiones (más de 100 000) desde dispositivos como firewalls de red, se recomienda configurar un tiempo de espera similar en una interfaz de red de EC2.
+ Si ejecuta una carga de trabajo que utiliza una topología de enrutamiento asimétrico, le recomendamos que configure un tiempo de espera de inactividad establecido de TCP de 60 segundos.
+ Si ejecuta cargas de trabajo con un gran número de conexiones, como DNS, SIP, SNMP, Syslog, Radius y otros servicios que utilizan principalmente UDP para atender las solicitudes, establecer el tiempo de espera de “flujo de UDP” en 60 segundos proporciona una mayor escala o un mayor rendimiento para la capacidad existente y evita errores grises.
+ En el caso de las conexiones TCP/UDP a través de los equilibradores de carga de red, se realiza un seguimiento de todas las conexiones. El valor de tiempo de espera de inactividad para los flujos de TCP es de 350 segundos y para los flujos de UDP es de 120 segundos, y varía según los valores de tiempo de espera de nivel de interfaz. Puede configurar los tiempos de espera a nivel de la interfaz de red para contar con mayor flexibilidad que los valores predeterminados del equilibrador de carga.

Tiene la opción de configurar los tiempos de espera de seguimiento de conexiones si hace lo siguiente:
+ [Crear una interfaz de red](create-network-interface.md)
+ [Modificar atributos de interfaz de red](modify-network-interface-attributes.md)
+ [Iniciar una instancia de EC2](ec2-instance-launch-parameters.md#liw-network-settings)
+ [Crear una plantilla de lanzamiento de una instancia de EC2](ec2-instance-launch-parameters.md#liw-network-settings)

## Ejemplo
<a name="connection-tracking-example"></a>

En el siguiente ejemplo, el grupo de seguridad incluye reglas de entrada que permiten el tráfico TCP e ICMP y reglas de salida que permiten todo el tráfico de salida.


**Entrada**  

| Tipo de protocolo | Número de puerto | Origen | 
| --- | --- | --- | 
| TCP  | 22 (SSH) | 203.0.113.1/32 | 
| TCP  | 80 (HTTP) | 0.0.0.0/0 | 
| TCP  | 80 (HTTP) | ::/0 | 
| ICMP | Todos | 0.0.0.0/0 | 


**Salida**  

| Tipo de protocolo | Número de puerto | Destino | 
| --- | --- | --- | 
| Todos | Todos | 0.0.0.0/0 | 
| Todos | Todos | ::/0 | 

Con una conexión de red directa a la instancia o la interfaz de red, el comportamiento del seguimiento es el siguiente:
+ Se hace un seguimiento del tráfico TCP entrante y saliente en el puerto 22 (SSH), ya que la regla de entrada solo permite el tráfico desde 203.0.113.1/32 y no todas las direcciones IP (0.0.0.0/0).
+ No se hace un seguimiento del tráfico TCP entrante y saliente en el puerto 80 (HTTP), ya que tanto las reglas de entrada como las de salida permiten el tráfico desde todas las direcciones IP.
+ Siempre se hace un seguimiento del tráfico ICMP.

Si elimina la regla de salida para el tráfico IPv4, se hace un seguimiento de todo el tráfico IPv4 entrante y saliente, incluido el tráfico del puerto 80 (HTTP). Lo mismo ocurre con el tráfico IPv6 si se elimina la regla de salida para este.

# Reglas de grupo de seguridad para diferentes casos de uso
<a name="security-group-rules-reference"></a>

Puede crear un grupo de seguridad y agregar reglas que reflejen el rol de la instancia que está asociada al grupo de seguridad. Por ejemplo, una instancia configurada como servidor web necesita reglas de grupo de seguridad que permitan el acceso HTTP y HTTPS entrante. Del mismo modo, una instancia de la base de datos necesita reglas que permitan el acceso para el tipo de base de datos, como el acceso a través del puerto 3306 para MySQL.

A continuación, se muestran ejemplos de los tipos de reglas que puede agregar a grupos de seguridad para tipos concretos de acceso.

**Topics**
+ [Reglas del servidor web](#sg-rules-web-server)
+ [Reglas del servidor de bases de datos](#sg-rules-db-server)
+ [Reglas para conectarse a las instancias desde un equipo](#sg-rules-local-access)
+ [Reglas para conectarse a las instancias desde una instancia con el mismo grupo de seguridad](#sg-rules-other-instances)
+ [Reglas para hacer ping/ICMP](#sg-rules-ping)
+ [Reglas del servidor DNS](#sg-rules-dns)
+ [Reglas de Amazon EFS](#sg-rules-efs)
+ [Reglas de Elastic Load Balancing](#sg-rules-elb)

Para obtener instrucciones, consulte [Creación de un grupo de seguridad](creating-security-group.md) y [Configurar reglas del grupo de seguridad](changing-security-group.md#add-remove-security-group-rules).

## Reglas del servidor web
<a name="sg-rules-web-server"></a>

Las siguientes reglas de entrada permiten el acceso HTTP y HTTPS de cualquier dirección IP. Si la VPC está habilitada para IPv6, puede agregar reglas para controlar el tráfico HTTP y HTTPS de entrada de direcciones IPv6.


| Tipo de protocolo | Número de protocolo | Puerto | IP de origen | Notas | 
| --- | --- | --- | --- | --- | 
| TCP | 6 | 80 (HTTP) | 0.0.0.0/0 | Permite el acceso de HTTP entrante de cualquier dirección IPv4. | 
| TCP | 6 | 443 (HTTPS) | 0.0.0.0/0 | Permite el acceso HTTPS entrante de cualquier dirección IPv4. | 
| TCP | 6 | 80 (HTTP) | ::/0 | Permite el acceso HTTP entrante desde cualquier dirección IPv6 | 
| TCP | 6 | 443 (HTTPS) | ::/0 | Permite el acceso HTTPS entrante desde cualquier dirección IPv6 | 

## Reglas del servidor de bases de datos
<a name="sg-rules-db-server"></a>

Las siguientes reglas de entrada son ejemplos de reglas que podría agregar para el acceso a bases de datos, según el tipo de base de datos que esté ejecutando en la instancia. Para obtener más información acerca de las instancias de Amazon RDS, consulte la [Guía del usuario de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/).

Para la IP de origen, especifique uno de los siguientes:
+ Una dirección IP específica o un rango de direcciones IP (con la notación de bloques de CIDR) de la red local
+ Un ID de grupo de seguridad para un grupo de instancias que obtengan acceso a la base de datos


| Tipo de protocolo | Número de protocolo | Puerto | Notas | 
| --- | --- | --- | --- | 
| TCP | 6 | 1433 (MS SQL) | El puerto predeterminado para obtener acceso a una base de datos Microsoft SQL Server, por ejemplo, en una instancia Amazon RDS. | 
| TCP | 6 | 3306 (MYSQL/Aurora) | El puerto predeterminado para obtener acceso a una base de datos MySQL o Aurora, por ejemplo, en una instancia Amazon RDS. | 
| TCP | 6 | 5439 (Redshift) | El puerto predeterminado para obtener acceso a una base de datos de clúster Amazon Redshift. | 
| TCP | 6 | 5432 (PostgreSQL) | El puerto predeterminado para obtener acceso a una base de datos PostgreSQL, por ejemplo, en una instancia Amazon RDS. | 
| TCP | 6 | 1521 (Oracle) | El puerto predeterminado para obtener acceso a una base de datos Oracle, por ejemplo, en una instancia Amazon RDS. | 

Opcionalmente, puede restringir el tráfico saliente desde los servidores de base de datos. Por ejemplo, es posible que desee permitir el acceso a Internet para actualizaciones de software y restringir todos los demás tipos de tráfico. Primero debe eliminar la regla de salida predeterminada que permite todo el tráfico de salida.


| Tipo de protocolo | Número de protocolo | Puerto | IP de destino | Notas | 
| --- | --- | --- | --- | --- | 
| TCP | 6 | 80 (HTTP) | 0.0.0.0/0 | Permite el acceso HTTP saliente a cualquier dirección IPv4. | 
| TCP | 6 | 443 (HTTPS) | 0.0.0.0/0 | Permite el acceso HTTPS saliente a cualquier dirección IPv4. | 
| TCP | 6 | 80 (HTTP) | ::/0 | (Solo para VPC habilitada para IPv6) Permite el acceso HTTP saliente a cualquier dirección IPv6. | 
| TCP | 6 | 443 (HTTPS) | ::/0 | (Solo para VPC habilitada para IPv6) Permite el acceso HTTPS saliente a cualquier dirección IPv6. | 

## Reglas para conectarse a las instancias desde un equipo
<a name="sg-rules-local-access"></a>

Para conectarse a una instancia, el grupo de seguridad debe tener reglas de entrada que permitan el acceso SSH (para instancias de Linux) o el acceso RDP (para instancias de Windows).


| Tipo de protocolo | Número de protocolo | Puerto | IP de origen | 
| --- | --- | --- | --- | 
| TCP | 6 | 22 (SSH) | La dirección IPv4 pública de su equipo o un rango de las direcciones IP en su red local. Si la VPC está habilitada para IPv6 y la instancia tiene una dirección IPv6, puede escribir una dirección IPv6 o un rango. | 
| TCP | 6 | 3389 (RDP) | La dirección IPv4 pública de su equipo o un rango de las direcciones IP en su red local. Si la VPC está habilitada para IPv6 y la instancia tiene una dirección IPv6, puede escribir una dirección IPv6 o un rango. | 

## Reglas para conectarse a las instancias desde una instancia con el mismo grupo de seguridad
<a name="sg-rules-other-instances"></a>

Para permitir que las instancias asociadas al mismo grupo de seguridad se comuniquen unas con otras, debe agregar explícitamente reglas para ello. 

**nota**  
Si configura rutas para reenviar el tráfico entre dos instancias en subredes diferentes a través de un dispositivo de middlebox, debe asegurarse de que los grupos de seguridad de ambas instancias permiten que el tráfico fluya entre las instancias. El grupo de seguridad de cada instancia debe hacer referencia a la dirección IP privada de la otra instancia, o al rango CIDR de la subred que contiene la otra instancia, como fuente. Si hace referencia al grupo de seguridad de la otra instancia como fuente, esto no permite que el tráfico fluya entre las instancias.

La siguiente tabla describe la regla de entrada para un grupo de seguridad que permite que las instancias asociadas se comuniquen entre sí. La regla permite todo tipo de tráfico.


| Tipo de protocolo | Número de protocolo | Puertos | IP de origen | 
| --- | --- | --- | --- | 
| -1 (Todos) | -1 (Todos) | -1 (Todos) | El ID del grupo de seguridad, o bien el rango CIDR de la subred que contiene la otra instancia (consulte la nota). | 

## Reglas para hacer ping/ICMP
<a name="sg-rules-ping"></a>

El comando **ping** es un tipo de tráfico de ICMP. Para hacer un ping a la instancia, debe agregar una de las siguientes reglas de entrada de ICMP.


| Tipo | Protocolo | Origen | 
| --- | --- | --- | 
| ICMP personalizado: IPv4 | Repetir solicitud | La dirección IPv4 pública del equipo, una dirección IPv4 específica o una dirección IPv4 o IPv6 de cualquier lugar. | 
| Todos ICMP: IPv4 | ICMP de IPv4 (1) | La dirección IPv4 pública del equipo, una dirección IPv4 específica o una dirección IPv4 o IPv6 de cualquier lugar. | 

Para utilizar el comando **ping6** para hacer ping a la dirección IPv6 de su instancia, debe agregar la siguiente regla de entrada de ICMPv6.


| Tipo | Protocolo | Origen | 
| --- | --- | --- | 
| Todos los ICMP: IPv6 | ICMP de IPv6 (58) | La dirección IPv6 del equipo, una dirección IPv4 específica o una dirección IPv4 o IPv6 desde cualquier lugar. | 

## Reglas del servidor DNS
<a name="sg-rules-dns"></a>

Si ha configurado su instancia de EC2 como un servidor DNS, debe asegurarse de que el tráfico TCP y UDP pueden llegar al servidor DNS a través del puerto 53. 

Para la IP de origen, especifique uno de los siguientes:
+ Una dirección IP o un rango de direcciones IP (con la notación de bloques de CIDR) de una local
+ El ID de un grupo de seguridad para el conjunto de instancias de la red que requieran acceso al servidor DNS


| Tipo de protocolo | Número de protocolo | Puerto | 
| --- | --- | --- | 
| TCP | 6 | 53 | 
| UDP | 17 | 53 | 

## Reglas de Amazon EFS
<a name="sg-rules-efs"></a>

Si está utilizando un sistema de archivos de Amazon EFS con las instancias Amazon EC2, el grupo de seguridad que asocia a los destinos de montaje de Amazon EFS debe permitir el tráfico a través del protocolo NFS. 


| Tipo de protocolo | Número de protocolo | Puertos | IP de origen | Notas | 
| --- | --- | --- | --- | --- | 
| TCP | 6 | 2049 (NFS) | El ID del grupo de seguridad | Permite el acceso NFS de entrada desde los recursos (incluido el destino de montaje) asociados a este grupo de seguridad. | 

Para montar un sistema de archivos de Amazon EFS en la instancia Amazon EC2, debe conectarse a la instancia. Por consiguiente, el grupo de seguridad asociado a su instancia debe tener reglas que permitan el tráfico SSH entrante de su equipo local o red local.


| Tipo de protocolo | Número de protocolo | Puertos | IP de origen | Notas | 
| --- | --- | --- | --- | --- | 
| TCP | 6 | 22 (SSH) | El rango de direcciones IP del equipo local o el rango de direcciones IP (con la notación de bloques de CIDR) de la red. | Permite el acceso SSH entrante desde el equipo local. | 

## Reglas de Elastic Load Balancing
<a name="sg-rules-elb"></a>

Si registra sus instancias de EC2 a un equilibrador de carga, el grupo de seguridad asociado al equilibrador de carga debe permitir la comunicación con las instancias. Para obtener más información, consulte lo siguiente en la documentación de Elastic Load Balancing.
+ [Grupos de seguridad para el equilibrador de carga de aplicación](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-update-security-groups.html)
+ [Grupos de seguridad para el equilibrador de carga de red](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-security-groups.html)
+ [Configurar grupos de seguridad para el equilibrador de carga clásico](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-vpc-security-groups.html)

# NitroTPM para instancias de Amazon EC2
<a name="nitrotpm"></a>

NitroTPM, el módulo de confianza de la plataforma Nitro, es un dispositivo virtual que proporciona el [AWS Nitro System](https://aws.amazon.com//ec2/nitro/) y se ajusta a la [especificación de TPM 2.0](https://trustedcomputinggroup.org/resource/trusted-platform-module-2-0-a-brief-introduction/). Almacena de forma segura los artefactos (como contraseñas, certificados o claves de cifrado) que se utilizan para autenticar la instancia. NitroTPM puede generar claves y utilizarlas para funciones criptográficas (como hash, firma, cifrado y descifrado).

NitroTPM proporciona *arranque medido*, un proceso en el que el cargador de arranque y el sistema operativo crean hash criptográficos de cada binario de arranque y los combinan con los valores anteriores de los registros de configuración de plataformas (PCR) internos de NitroTPM. Con el arranque medido, puede obtener valores de PCR firmados de NitroTPM y utilizarlos para demostrar a las entidades remotas la integridad del software de arranque de la instancia. Esto se denomina *declaración* remota.

Con NitroTPM, las claves y los secretos se pueden etiquetar con un valor PCR específico para que nunca se pueda acceder a ellos si cambia el valor de la PCR y, con ello, la integridad de la instancia. Esta forma especial de acceso condicional se denomina *sellado y revelado*. Tecnologías de sistemas operativos, como [BitLocker](https://learn.microsoft.com/en-us/windows/security/operating-system-security/data-protection/bitlocker/), pueden utilizar NitroTPM para sellar una clave de descifrado de unidad de modo que esta solo se pueda descifrar cuando el sistema operativo arrancó correctamente y se encuentra en un buen estado conocido.

Para utilizar NitroTPM, debe seleccionar una [imagen de máquina de Amazon (AMI)](AMIs.md) que se haya configurado para la compatibilidad con NitroTPM y, a continuación, utilizar la AMI para lanzar [instancias basadas en Nitro](instance-types.md#instance-hypervisor-type). Puede seleccionar una de las AMI de Amazon creadas previamente o crear una.

**Precios**  
No se aplica ningún costo adicional por el uso de NitroTPM. Solo pagará por los recursos subyacentes que utilice.

**Topics**
+ [Requisitos](enable-nitrotpm-prerequisites.md)
+ [Habilitar una AMI de Linux para NitroTPM](enable-nitrotpm-support-on-ami.md)
+ [Verifique que una AMI esté habilitada para NitroTPM](verify-nitrotpm-support-on-ami.md)
+ [Habilitación o finalización del uso de NitroTPM](nitrotpm-instance.md)
+ [Verificación de que una instancia está habilitada para NitroTPM](verify-nitrotpm-support-on-instance.md)
+ [Recupere la clave de aprobación pública](retrieve-ekpub.md)

# Requisitos para utilizar NitroTPM con instancias de Amazon EC2
<a name="enable-nitrotpm-prerequisites"></a>

Para iniciar una instancia con NitroTPM habilitado, se debe cumplir con los siguientes requisitos.

**Topics**
+ [AMI](#nitrotpm-ami)
+ [Tipos de instancias](#nitrotpm-instancetypes)
+ [Consideraciones](#nitrotpm-considerations)

## AMI
<a name="nitrotpm-ami"></a>

La AMI debe tener NitroTPM habilitado.

**AMI de Linux**  
No hay AMI preconfiguradas. Debe configurar su propia AMI. Para obtener más información, consulte [Habilitar una AMI de Linux para NitroTPM](enable-nitrotpm-support-on-ami.md).

**AMI de Windows**  
Para encontrar una AMI de Windows de AWS que esté preconfigurada para NitroTPM y UEFI Secure Boot con claves de Microsoft, consulte [Find Windows Server AMIs configured with NitroTPM and UEFI Secure Boot](https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/ami-windows-tpm.html#ami-windows-tpm-find) en la *Referencia de AMI de Windows de AWS*.

**nota**  
**Sistema operativo**: la AMI debe incluir un sistema operativo con un controlador de búfer de respuesta del comando (CRB) TPM 2.0. La mayoría de los sistemas operativos actuales cuentan con un controlador de CRB TPM 2.0.  
**Modo de arranque UEFI**: la AMI debe estar configurada para este modo de arranque. Para obtener más información, consulte [Arranque seguro de UEFI para instancias de Amazon EC2](uefi-secure-boot.md).

## Tipos de instancias
<a name="nitrotpm-instancetypes"></a>

Debe utilizar uno de los siguientes tipos de instancia virtualizada:
+ **De uso general**: M5, M5a, M5ad, M5d, M5dn, M5n, M5zn, M6a, M6g, M6gd, M6i, M6id, M6idn, M6in, M7a, M7g, M7gd, M7i, M7i-flex, M8a, M8azn, M8g, M8gb, M8gd, M8gn, M8i, M8id, M8i-flex, T3, T3a, T4g
+ **Optimizadas para la computación**: C5, C5a, C5ad, C5d, C5n, C6a, C6g, C6gd, C6gn, C6i, C6id, C6in, C7a, C7g, C7gd, C7gn, C7i, C7i-flex, C8a, C8g, C8gb, C8gd, C8gn, C8i, C8id, C8i-flex
+ **Optimizadas para la memoria**: R5, R5a, R5ad, R5b, R5d, R5dn, R5n, R6a, R6g, R6gd, R6i, R6id, R6idn, R6in, R7a, R7g, R7gd, R7i, R7iz, R8a, R8g, R8gb, R8gd, R8gn, R8i, R8id, R8i-flex, U7i-6tb, U7i-8tb, U7i-12tb, U7in-16tb, U7in-24tb, U7in-32tb, X2idn, X2iedn, X2iezn, X8g, X8aedz, X8i, z1d
+ **Optimizadas para el almacenamiento**: D3, D3en, I3en, I4i, I7i, I7ie, I8g, I8ge, Im4gn
+ **Computación acelerada**: F2, G4dn, G5, G6, G6e, G6f, Gr6, Gr6f, G7e, Inf1, Inf2, P5, P5e, P5en, P6-B200, P6-B300, Trn2, Trn2u
+ **De computación de alto rendimiento: **Hpc6a, Hpc6id, Hpc8a

## Consideraciones
<a name="nitrotpm-considerations"></a>

Las siguientes consideraciones se aplican cuando se utiliza NitroTPM:
+ Tras iniciar una instancia mediante una AMI con NitroTPM habilitado, si quiere cambiar el tipo de instancia, el nuevo tipo de instancia que elija también debe ser compatible con NitroTPM.
+ Los volúmenes BitLocker cifrados con claves basadas en NitroTPM solo se pueden utilizar en la instancia original.
+ El estado de NitroTPM no se muestra en la consola de Amazon EC2.
+ El estado de NitroTPM no se incluye en las [instantáneas de Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-snapshots.html).
+ El estado de NitroTPM no se incluye en imágenes [VM Import/Export](https://docs.aws.amazon.com/vm-import/latest/userguide/).
+ NitroTPM no es compatible en AWS Outposts, zonas locales o zonas Wavelength.

# Habilitar una AMI de Linux para NitroTPM
<a name="enable-nitrotpm-support-on-ami"></a>

Para habilitar NitroTPM para una instancia, debe iniciar la instancia mediante una AMI con NitroTPM habilitado. Debe configurar una AMI de Linux que contenga compatibilidad con NitroTPM cuando la registre. No puede configurar la compatibilidad con NitroTPM más adelante.

Para obtener la lista de AMI de Windows que están preconfiguradas para la compatibilidad con NitroTPM, consulte [Requisitos para utilizar NitroTPM con instancias de Amazon EC2](enable-nitrotpm-prerequisites.md).

Debe crear una AMI con NitroTPM configurada mediante la API [RegisterImage](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RegisterImage.html). No puede utilizar la consola de Amazon EC2 ni VM Import/Export.

**Para habilitar una AMI de Linux para NitroTPM**

1. Lance una instancia temporal con la AMI de Linux obligatoria. Anote el ID de su volumen raíz, que puede encontrar en la consola, en la pestaña **Almacenamiento** para la instancia.

1. Cuando la instancia alcance el estado `running`, cree una instantánea del volumen raíz de la instancia. Para obtener más información, consulte [Creación de una instantánea de un volumen de EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-create-snapshot.html).

1. Registre la instantánea que creó como una AMI. En la asignación de dispositivos de bloques, especifique la instantánea que creó para el volumen raíz.

   A continuación se muestra un ejemplo de comando [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html). En `--tpm-support`, especifique `v2.0`. En `--boot-mode`, especifique `uefi`. 

   ```
   aws ec2 register-image \
       --name my-image \
       --boot-mode uefi \
       --architecture x86_64 \
       --root-device-name /dev/xvda \
       --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=snap-0abcdef1234567890} \
       --tpm-support v2.0
   ```

   A continuación se muestra un ejemplo del cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html).

   ```
   $block = @{SnapshotId=snap-0abcdef1234567890}
   Register-EC2Image `
       -Name my-image `
       -Architecture "x86_64" `
       -RootDeviceName /dev/xvda `
       -BlockDeviceMapping @{DeviceName="/dev/xvda";Ebs=$block} `
       -BootMode Uefi `
       -TpmSupport V20
   ```

1. Finalice la instancia temporal que inició en el paso 1.

# Verifique que una AMI esté habilitada para NitroTPM
<a name="verify-nitrotpm-support-on-ami"></a>

Para habilitar NitroTPM para una instancia, debe iniciar la instancia mediante una AMI con NitroTPM habilitado. Puede describir una imagen para verificar si está habilitada para NitroTPM. Si es el propietario de la AMI, puede describir el atributo `tpmSupport` de la imagen.

La consola de Amazon EC2 no muestra `TpmSupport`.

------
#### [ AWS CLI ]

**Para verificar que NitroTPM está habilitado**  
Utilice el comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) .

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[*].TpmSupport
```

Si NitroTPM está habilitado para la AMI, el resultado aparece de la siguiente manera. Si TPM no está habilitado, el resultado está vacío.

```
[
    "v2.0"
]
```

Como alternativa, si es el propietario de la AMI, puede utilizar el comando [describe-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) con el atributo `tpmSupport`.

```
aws ec2 describe-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute tpmSupport
```

 A continuación, se muestra un ejemplo del resultado.

```
{
    "ImageId": "ami-0abcdef1234567890",
    "TpmSupport": {
        "Value": "v2.0"
    }
}
```

**Para buscar AMI con NitroTPM habilitado**  
El siguiente ejemplo enumera los ID de las AMI que posee con NitroTPM habilitado.

```
aws ec2 describe-images \
    --owners self \
    --filters Name=tpm-support,Values=v2.0 \
    --query Images[].ImageId
```

------
#### [ PowerShell ]

**Para verificar que NitroTPM está habilitado**  
Utilice el cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
Get-EC2Image `
    -ImageId ami-0abcdef1234567890 | Select TpmSupport
```

Si NitroTPM está habilitado para la AMI, el resultado aparece de la siguiente manera. Si TPM no está habilitado, el resultado está vacío.

```
TpmSupport
----------
v2.0
```

Como alternativa, si es el propietario de la AMI, puede usar el cmdlet [Get-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html) con el atributo `tpmSupport`.

```
Get-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute tpmSupport
```

**Para buscar AMI con NitroTPM habilitado**  
El siguiente ejemplo enumera los ID de las AMI que posee con NitroTPM habilitado.

```
Get-EC2Image `
    -Owner self `
    -Filter @{Name="tpm-support; Values="v2.0"} | Select ImageId
```

------

# Habilitación o finalización del uso de NitroTPM en una instancia de Amazon EC2
<a name="nitrotpm-instance"></a>

Solo puede habilitar una instancia de Amazon EC2 para NitroTPM durante la inicialización. Una vez que una instancia está habilitada para NitroTPM, no puede desactivarla. Si ya no es necesario usar NitroTPM, debe configurar el sistema operativo para que deje de utilizarlo.

**Topics**
+ [Lanzamiento de una instancia con NitroTPM habilitado](#launch-instance-with-nitrotpm)
+ [Dejar de utilizar NitroTPM en una instancia](#disable-nitrotpm-support-on-instance)

## Lanzamiento de una instancia con NitroTPM habilitado
<a name="launch-instance-with-nitrotpm"></a>

Cuando lance una instancia con los [requisitos previos](enable-nitrotpm-prerequisites.md), NitroTPM se habilita automáticamente en dicha instancia. Solo puede habilitar NitroTPM en una instancia durante la inicialización. Para obtener más información acerca de cómo iniciar una instancia, consulte [Lanzamiento de una instancia de Amazon EC2](LaunchingAndUsingInstances.md).

## Dejar de utilizar NitroTPM en una instancia
<a name="disable-nitrotpm-support-on-instance"></a>

Después de inicializar una instancia con NitroTPM habilitado, no puede desactivar NitroTPM para dicha instancia. Sin embargo, puede configurar el sistema operativo para que deje de utilizar NitroTPM al desactivar el controlador de dispositivo TPM 2.0 en la instancia mediante las siguientes herramientas:
+ Para **instancias de Linux**, utilice tpm-tools.
+ Para **instancias de Windows**, utilice la consola de administración de TPM (tpm.msc).

Para obtener más información sobre la desactivación del controlador de dispositivo, consulte la documentación de su sistema operativo.

# Verificación de que una instancia de Amazon EC2 está habilitada para NitroTPM
<a name="verify-nitrotpm-support-on-instance"></a>

Puede verificar si una instancia de Amazon EC2 está habilitada para NitroTPM. Si la compatibilidad con NitroTPM está habilitada en la instancia, el comando devuelve `"v2.0"`. De lo contrario, el campo `TpmSupport` no está presente en el resultado.

La consola de Amazon EC2 no muestra el campo `TpmSupport`.

------
#### [ AWS CLI ]

**Verificación de si una instancia está habilitada para NitroTPM**  
Utilice el comando [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query Reservations[].Instances[].TpmSupport
```

------
#### [ PowerShell ]

**Verificación de si una instancia está habilitada para NitroTPM**  
Utilice el cmdlet [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

```
(Get-EC2Instance `
    -InstanceId i-1234567890abcdef0).Instances.TpmSupport
```

------

## Verifique el acceso a NitroTPM en su instancia de Windows
<a name="verify-nitrotpm-support-windows-instance"></a>

**(Solo instancias de Windows) Comprobación de si Windows puede acceder a NitroTPM**

1. [Conéctese a la instancia sw EC2 de Windows](connecting_to_windows_instance.md).

1. En la instancia, ejecute el programa tpm.msc.

   Aparecerá la ventana **Administración de TPM en computadora local**.

1. Compruebe el campo **Información del fabricante de TPM**. Contiene el nombre del fabricante y la versión de NitroTPM en la instancia.  
![\[La ventana Administración de TPM en computadora local y el campo Información del fabricante de TPM muestran la versión de NitroTPM en la instancia.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/tpm-1.png)

# Recupere la clave de aprobación pública de una instancia EC2
<a name="retrieve-ekpub"></a>

Puede recuperar de forma segura la clave de aprobación pública de una instancia en cualquier momento.

------
#### [ AWS CLI ]

**Para recuperar la clave de aprobación pública de una instancia**  
Use el comando [get-instance-tpm-ek-pub](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-tpm-ek-pub.html).

**Ejemplo 1**  
El siguiente ejemplo obtiene la clave de aprobación pública `rsa-2048` en formato `tpmt` para la instancia especificada.

```
aws ec2 get-instance-tpm-ek-pub \
    --instance-id i-1234567890abcdef0 \
    --key-format tpmt \ 
    --key-type rsa-2048
```

A continuación, se muestra un ejemplo del resultado.

```
{
    "InstanceId": "i-01234567890abcdef",
    "KeyFormat": "tpmt",
    "KeyType": "rsa-2048",
    "KeyValue": "AAEACwADALIAIINxl2dEhLEXAMPLEUal1yT9UtduBlILZPKh2hszFGmqAAYAgABDA
    EXAMPLEAAABAOiRd7WmgtdGNoV1h/AxmW+CXExblG8pEUfNm0LOLiYnEXAMPLERqApiFa/UhvEYqN4
    Z7jKMD/usbhsQaAB1gKA5RmzuhSazHQkax7EXAMPLEzDthlS7HNGuYn5eG7qnJndRcakS+iNxT8Hvf
    0S1ZtNuItMs+Yp4SO6aU28MT/JZkOKsXIdMerY3GdWbNQz9AvYbMEXAMPLEPyHfzgVO0QTTJVGdDxh
    vxtXCOu9GYf0crbjEXAMPLEd4YTbWdDdgOKWF9fjzDytJSDhrLAOUctNzHPCd/92l5zEXAMPLEOIFA
    Ss50C0/802c17W2pMSVHvCCa9lYCiAfxH/vYKovAAE="
}
```

**Ejemplo 2**  
El siguiente ejemplo obtiene la clave de aprobación pública `rsa-2048` en formato `der` para la instancia especificada.

```
aws ec2 get-instance-tpm-ek-pub \
    --instance-id i-1234567890abcdef0 \
    --key-format der \ 
    --key-type rsa-2048
```

A continuación, se muestra un ejemplo del resultado.

```
{
    "InstanceId": "i-1234567890abcdef0",
    "KeyFormat": "der",
    "KeyType": "rsa-2048",
    "KeyValue": "MIIBIjANBgEXAMPLEw0BAQEFAAOCAQ8AMIIBCgKCAQEA6JF3taEXAMPLEXWH8DGZb4
    JcTFuUbykRR82bQs4uJifaKSOv5NGoEXAMPLEG8Rio3hnuMowP+6xuGxBoAHWAoDlGbO6FJrMdEXAMP
    LEnYUHvMO2GVLsc0a5ifl4buqcmd1FxqRL6I3FPwe9/REXAMPLE0yz5inhI7ppTbwxP8lmQ4qxch0x6
    tjcZ1Zs1DP0EXAMPLERUYLQ/Id/OBU7RBNMlUZ0PGG/G1cI670Zh/RytuOdx9iEXAMPLEtZ0N2A4pYX
    1+PMPK0lIOGssA5Ry03Mc8J3/3aXnOD2/ASRQ4gUBKznQLT/zTZEXAMPLEJUe8IJr2VgKIB/Ef+9gqi
    8AAQIDAQAB"
}
```

------
#### [ PowerShell ]

**Para recuperar la clave de aprobación pública de una instancia**  
Utilice el cmdlet [Get-EC2InstanceTpmEkPub](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceTpmEkPub.html).

**Ejemplo 1**  
El siguiente ejemplo obtiene la clave de aprobación pública `rsa-2048` en formato `tpmt` para la instancia especificada.

```
Get-EC2InstanceTpmEkPub `
    -InstanceId i-1234567890abcdef0 `
    -KeyFormat tpmt `
    -KeyType rsa-2048
```

**Ejemplo 2**  
El siguiente ejemplo obtiene la clave de aprobación pública `rsa-2048` en formato `der` para la instancia especificada.

```
Get-EC2InstanceTpmEkPub `
    -InstanceId i-1234567890abcdef0 `
    -KeyFormat der `
    -KeyType rsa-2048
```

------

# Verificación de instancias de Amazon EC2
<a name="nitrotpm-attestation"></a>

La atestación es un proceso que le permite demostrar criptográficamente a cualquier parte que solo se ejecutan software, controladores y procesos de arranque de confianza en una instancia de Amazon EC2. La verificación de instancias de Amazon EC2 se basa en el Módulo de plataforma segura Nitro (NitroTPM) y en las *AMI verificacbles*.

El primer paso para la atestación consiste en **crear una AMI verificable** y determinar las *mediciones de referencia* de esa AMI. Una AMI verificable es una AMI diseñada desde cero para la verificación. Las mediciones de referencia son mediciones de todo el software y las configuraciones que ha incluido en la AMI. Para obtener más información sobre cómo puede generar las mediciones de referencia, consulte [Compilación de la descripción de imagen de muestra](build-sample-ami.md).

![\[Generación de mediciones de referencia con AMI verificables.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/attestable-ami.PNG)


El siguiente paso consiste en lanzar una [instancia de EC2 con Nitro-TPM habilitado](enable-nitrotpm-prerequisites.md#nitrotpm-instancetypes) y la AMI verificable. Después de lanzar la instancia, puede usar las [herramientas NitroTPM](attestation-get-doc.md) para generar el *documento de atestación*. Luego puede comparar las mediciones reales de la instancia de EC2 del documento de atestación con las mediciones de referencia, para comprobar si la instancia tiene el software y las configuraciones en las que confía.

Al comparar las mediciones de referencia generadas durante el proceso de creación de la AMI verificable con las mediciones incluidas en el documento de atestación de una instancia, puede validar que solo se ejecuten en la instancia el software y el código en los que confía.

![\[Generación de un documento de atestación.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/attestation-document.PNG)


## Integración con AWS KMS
<a name="attestation-kms"></a>

Para simplificar el proceso de comparación de mediciones, puede usar AWS Key Management Service (AWS KMS) como verificador de documentos de atestación. Con AWS KMS, puede crear políticas de claves de KMS basadas en atestación que permiten realizar operaciones específicas con la clave de KMS solo si se proporciona un documento de atestación con mediciones que coincidan con las mediciones de referencia. Para hacerlo, agregue claves de condición específicas a las políticas de claves de KMS, que usen las mediciones de referencia como valores de clave de condición y, a continuación, especifique qué operaciones de KMS se permiten si se cumple la clave de condición.

Cuando realice operaciones de KMS con la clave de KMS, debe asociar un documento de atestación a la solicitud de KMS. AWS KMS valida las mediciones del documento de atestación frente a las mediciones de referencia definidas en la política de clave de KMS y permite el acceso a la clave solo si las mediciones coinciden.

Además, al generar el documento de atestación para una instancia, debe especificar una clave pública correspondiente a un par de claves que le pertenezca. La clave pública especificada se incluye en el documento de atestación. Cuando AWS KMS valida el documento de atestación y permite una operación de descifrado, cifra automáticamente la respuesta con la clave pública incluida en el documento de atestación antes de devolverla. Esto garantiza que la respuesta se pueda descifrar y utilizar únicamente con la clave privada correspondiente a la clave pública incluida en el documento de atestación. 

Esto garantiza que solo las instancias que ejecutan software y código de confianza puedan realizar operaciones criptográficas con una clave de KMS.

## Atestación de entornos de computación aislados
<a name="attestation-isolated-compute-environments"></a>

En general, puede crear y configurar una instancia de EC2 para que funcione como un **entorno de computación aislado**, el cual no ofrece acceso interactivo ni mecanismos para que los administradores o usuarios accedan a los datos que se procesan en la instancia de EC2. Con la verificación de instancias de EC2, puede demostrar a un tercero o a un servicio que la instancia se ejecuta como un entorno de computación aislado. Para obtener más información, consulte [Cómo aislar los datos de operadores propios](isolate-data-operators.md).

Como ejemplo, consulte la [descripción de imagen de Amazon Linux 2023](build-sample-ami.md) que crea un entorno de computación aislado. Puede usar esta descripción de imagen de muestra como punto de partida y personalizarla para adaptarla a sus requisitos.

## Modelo de responsabilidad compartida de AWS
<a name="attestation-shared-responsibility"></a>

NitroTPM y las AMI certificables son componentes fundamentales que pueden ayudar a configurar la verificación en las instancias de EC2. Es su responsabilidad configurar la AMI de modo que se ajuste al caso de uso correspondiente. Para obtener más información, consulte [Modelo de responsabilidad compartida de AWS](https://aws.amazon.com/compliance/shared-responsibility-model/).

**Topics**
+ [Integración con AWS KMS](#attestation-kms)
+ [Atestación de entornos de computación aislados](#attestation-isolated-compute-environments)
+ [Modelo de responsabilidad compartida de AWS](#attestation-shared-responsibility)
+ [AMI verificables](attestable-ami.md)
+ [Preparación de AWS KMS para la atestación](prepare-attestation-service.md)
+ [Obtención del documento de atestación de NitroTPM](attestation-get-doc.md)
+ [Integración de con AWS KMS](attestation-attest.md)
+ [Cómo aislar los datos de operadores propios](isolate-data-operators.md)

# AMI verificables
<a name="attestable-ami"></a>

Una AMI verificable es una imagen de máquina de Amazon (AMI) con un hash criptográfico correspondiente que representa todo su contenido. El hash se genera durante el proceso de creación de la AMI y se calcula en función de todo el contenido de dicha AMI, incluidas las aplicaciones, el código y el proceso de arranque.

## Cómo mantener un estado certificable
<a name="maintain-attestability"></a>

Las mediciones de una instancia se basan en su estado de arranque inicial. Cualquier cambio en el software o el código realizado en la instancia después del lanzamiento y que persista tras los reinicios modificará la medición de la instancia después de los reinicios. Si las mediciones se alteran, dejarán de coincidir con las mediciones de referencia de la AMI verificable, y la instancia ya no podrá superar correctamente la atestación ante AWS KMS después de reiniciarse. Por tanto, para que las AMI verificables resulten útiles, las instancias deben restaurar su estado de arranque original cada vez que se reinicien.

Mantener el estado de arranque original garantiza que la instancia pueda superar la atestación correctamente después de reiniciarse. Las siguientes utilidades pueden ayudar a garantizar que las instancias conserven su capacidad de atestación después de los reinicios:
+ `erofs`: sistema de archivos de solo lectura mejorado Esta utilidad mantiene el sistema de archivos raíz en modo de solo lectura. Con ella, las operaciones de escritura en el sistema de archivos, incluidas `/etc`, `/run` y `/var`, se almacenan en memoria y se descartan al reiniciar la instancia, de modo que el sistema de archivos raíz se conserva en su estado original de arranque. Para obtener más información, consulte la [documentación de EROFS](https://docs.kernel.org/filesystems/erofs.html).
+ `dm-verity`: protección de integridad para el sistema de archivos raíz de solo lectura. Esta utilidad calcula un hash de los bloques del sistema de archivos y lo almacena en la línea de comandos del kernel. Esto permite que el kernel verifique la integridad del sistema de archivos durante el arranque. Para obtener más información, consulte la [documentación de dm-verity](https://docs.kernel.org/admin-guide/device-mapper/verity.html).

## Requisitos para crear AMI con capacidad de atestación
<a name="ami-attestable-requirements"></a>

Las AMI con capacidad de atestación tienen los siguientes requisitos:
+ **Sistema operativo base**: Amazon Linux 2023 y [NixOS](https://github.com/aws/nitrotpm-attestation-samples)
+ **Arquitectura**: arquitectura `x86_64` o `arm64`
+ **Compatibilidad con TPM**: NitroTPM debe estar habilitado. Para obtener más información, consulte [Requisitos para utilizar NitroTPM con instancias de Amazon EC2](enable-nitrotpm-prerequisites.md).
+ **Modo de arranque**: el modo de arranque UEFI debe estar habilitado.

**Topics**
+ [Cómo mantener un estado certificable](#maintain-attestability)
+ [Requisitos para crear AMI con capacidad de atestación](#ami-attestable-requirements)
+ [Creación de AMI con capacidad de atestación](#sample-ami)
+ [Compilación de la descripción de imagen de muestra](build-sample-ami.md)
+ [Descripción de la imagen de muestra de Amazon Linux 2023](al2023-isolated-compute-recipe.md)
+ [Personalización de la descripción de la imagen de muestra](customize-sample-ami.md)
+ [Cálculo de mediciones PCR](create-pcr-compute.md)

## Creación de AMI con capacidad de atestación
<a name="sample-ami"></a>

Para crear una AMI con capacidad de atestación, debe usar Amazon Linux 2023 con [KIWI Next Generation (KIWI-NG)](https://osinside.github.io/kiwi/). Amazon Linux 2023 proporciona todo el software y las utilidades necesarias para crear una AMI con capacidad de atestación mediante KIWI-NG. 

KIWI NG es una herramienta de código abierto que permite compilar imágenes de Linux preconfiguradas. KIWI NG utiliza *descripciones de imagen* XML que definen el contenido de una imagen. La descripción de imagen especifica el sistema operativo base, el software, la configuración del kernel y los scripts que se deben ejecutar para generar una AMI lista para usar, adaptada a un caso de uso específico.

Durante el proceso de compilación de la AMI, debe usar la utilidad `nitro-tpm-pcr-compute` para generar las mediciones de referencia basadas en la imagen de núcleo unificado (UKI) generada por KIWI NG. Para obtener más información sobre cómo usar la utilidad `nitro-tpm-pcr-compute`, consulte [Cálculo de mediciones PCR para una AMI personalizada](create-pcr-compute.md).

AWS proporciona una descripción de la imagen de muestra de Amazon Linux 2023 que incluye todas las configuraciones necesarias para configurar una instancia de EC2 en un entorno de computación aislado. Para obtener más información, consulte [Compilación de la descripción de imagen de Amazon Linux 2023 de muestra](build-sample-ami.md).

# Compilación de la descripción de imagen de Amazon Linux 2023 de muestra
<a name="build-sample-ami"></a>

AWS proporciona una descripción de imagen de Amazon Linux 2023 de muestra que puede usar como punto de partida para crear sus propias AMI personalizadas con capacidad de atestación para las cargas de trabajo. La descripción de imagen de muestra incluye Amazon Linux 2023 como sistema operativo base, además de las configuraciones `dm-verity` y `erofs` para la inmutabilidad del sistema de archivos. También elimina todo acceso interactivo (como SSH, EC2 Instance Connect y consola serie) para crear un entorno de computación aislado. Para obtener más información sobre la descripción de imagen de muestra, consulte el [repositorio de GitHub](https://github.com/amazonlinux/kiwi-image-descriptions-examples).

La descripción de imagen de muestra instala automáticamente las herramientas NitroTPM (`nitro-tpm-pcr-compute` y `nitro-tpm-attest`) en la imagen compilada, dentro del directorio `/usr/bin/`. Esto garantiza que las herramientas estén preinstaladas en las instancias que se lanzan a partir de la AMI.

La descripción de imagen de muestra incluye un script (`edit_boot_install.sh`) con los comandos necesarios para generar las mediciones de referencia. El script monta el archivo de imagen de disco sin procesar (`.raw`) creado por KIWI NG en un dispositivo de bucle invertido, localiza la imagen de núcleo unificado (UKI), que tiene la extensión de archivo `.efi`, y luego ejecuta la utilidad `nitro-tpm-pcr-compute` para generar las mediciones de referencia de la AMI. El script se ejecuta automáticamente mediante KIWI NG durante el proceso de compilación.

Este tutorial muestra cómo compilar la descripción de imagen de muestra para crear una AMI con capacidad de atestación.

Para obtener más información sobre cómo crear sus propias descripciones de imagen, consulte la siguiente documentación de KIWI NG:
+ [Quick Start (Inicio rápido](https://osinside.github.io/kiwi/quickstart.html)
+ [Descripción de imagen](https://osinside.github.io/kiwi/image_description.html)
+ [Descripción de la imagen de muestra de Amazon Linux 2023](https://github.com/amazonlinux/kiwi-image-descriptions-examples)

Requisitos previos

Para completar este tutorial, su identidad de IAM necesita tener lo siguiente:
+ `ebs:CompleteSnapshot`, `ebs:StartSnapshot` y `ebs:PutSnapshotBlock` en `arn:aws:ec2:*::snapshot/*`
+ `ec2:RegisterImage` en todos los recursos

**Para compilar la descripción de la imagen de muestra de Amazon Linux 2023 con KIWI NG**

1. Lance una instancia de Amazon EC2 con la versión más reciente de la AMI AL2023. Para garantizar que la instancia tenga suficiente espacio de almacenamiento para compilar la AMI, asegúrese de aprovisionar al menos 12 GB de almacenamiento.

1. Instale las dependencias requeridas. El siguiente comando instala las utilidades necesarias:
   + `kiwi-cli`
   + `veritysetup`
   + `erofs-utils`
   + `aws-nitro-tpm-tools`

   ```
   sudo dnf install -y kiwi-cli python3-kiwi kiwi-systemdeps-core python3-poetry-core qemu-img veritysetup erofs-utils git cargo aws-nitro-tpm-tools
   ```

1. Instale la utilidad `coldsnap`. Esta utilidad permite crear instantáneas de Amazon EBS a partir de datos de imágenes sin procesar. Usará esta utilidad para crear una instantánea de EBS a partir del archivo de imagen de disco sin procesar creado por KIWI NG.

   ```
   git clone https://github.com/awslabs/coldsnap.git
   cd coldsnap
   cargo install --locked coldsnap
   cd ..
   ```

1. Obtenga los archivos de descripción de imagen de muestra.

   ```
   sudo dnf install kiwi-image-descriptions-examples
   ```

   Los archivos de descripción de imagen de muestra se descargan en el siguiente directorio: `/usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example`

1. Compile la descripción de imagen de muestra mediante el comando `system build` de KIWI NG. El siguiente comando crea un archivo de imagen de disco sin procesar en el directorio `./image`.

   ```
   sudo kiwi-ng \
   --color-output \
   --loglevel 0 \
   system build \
   --description /usr/share/kiwi-image-descriptions-examples/al2023/attestable-image-example \
   --target-dir ./image
   ```

   Para obtener más información, consulte la [documentación de compilación del sistema de kiwi-ng](https://osinside.github.io/kiwi/commands/system_build.html).

1. Obtenga las mediciones de referencia para la AMI. Las mediciones se generan mediante la utilidad `nitro-tpm-pcr-compute` durante el tiempo de compilación de la imagen, en el paso anterior. Puede ubicar las mediciones de referencia en el siguiente archivo: `./image/pcr_measurements.json`.

   Las mediciones se proporcionan en el siguiente formato JSON:

   ```
   {
     "Measurements": {
       "HashAlgorithm": "SHA384 { ... }",
       "PCR4": "PCR4_measurement",
       "PCR7": "PCR7_measurement",
       "PCR12": "PCR12_measurement"
     }
   }
   ```

1. Use la utilidad `coldsnap` para cargar la imagen de disco sin procesar creada por KIWI NG en una instantánea de EBS. El comando devuelve el ID de la instantánea. Anote ese ID, ya que será necesario para el siguiente paso.

   ```
   SNAPSHOT=$(.cargo/bin/coldsnap upload ./image/al2023*.raw)
   echo "Created snapshot: $SNAPSHOT"
   ```

   Para obtener más información sobre la utilidad `coldsnap`, consulte el [repositorio de GitHub de coldsnap](https://github.com/awslabs/coldsnap).

1. Registre una AMI con TPM 2.0 habilitado y modo de arranque UEFI con la instantánea del paso anterior. En `--architecture`, especifique `x86_64` para Intel o `arm64` para Graviton.

   ```
   aws ec2 register-image \
   --name "attestable_isolated_al2023_ami" \
   --virtualization-type hvm \
   --boot-mode uefi \
   --architecture x86_64|arm64 \
   --root-device-name /dev/xvda \
   --block-device-mappings DeviceName=/dev/xvda,Ebs={SnapshotId=${SNAPSHOT}} \
   --tpm-support v2.0 \
   --ena-support
   ```

# Descripción de la imagen de muestra de Amazon Linux 2023
<a name="al2023-isolated-compute-recipe"></a>

La descripción de la imagen de muestra de Amazon Linux 2023 incluye las siguientes características: 

1. **Arranque mediante imagen de núcleo unificado**: inicia con un único binario firmado que combina el kernel, `initrd` y los parámetros de arranque en una sola imagen inmutable.

1. **Sistema de archivos raíz de solo lectura**: usa el sistema de archivos de solo lectura mejorado (`erofs`) con protección dm-verity para garantizar que el sistema de archivos raíz no se modifique y conserve la verificación criptográfica de integridad.

1. **Sistema de archivos superpuesto efímero**: cree un sistema de archivos superpuesto temporal que permite escrituras temporales en directorios como `/etc`, `/run` y `/var`. Dado que este sistema de archivos superpuesto existe únicamente en la memoria, todos los cambios se pierden cuando la instancia se reinicia. Esto garantiza que el sistema recupere su estado original y confiable.

1. **Métodos de acceso remoto desactivados**: elimine los siguientes mecanismos de acceso remoto para impedir el acceso remoto:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/al2023-isolated-compute-recipe.html)

   \$1 Para obtener más información, consulte [Image Description Elements](https://osinside.github.io/kiwi/image_description/elements.html#packages-ignore).

# Personalización de la descripción de la imagen de muestra de Amazon Linux 2023 según las necesidades de la carga de trabajo
<a name="customize-sample-ami"></a>

Puede personalizar la descripción de la imagen de muestra de Amazon Linux 2023 e incluir los paquetes de software, scripts y archivos necesarios para la carga de trabajo específica. La personalización se realiza mediante la adición o modificación de distintos elementos en la descripción de imagen de KIWI NG.

**Topics**
+ [Administración de repositorios](#prepare-custom-image-repos)
+ [Administración de paquetes](#customize-sample-ami-packages)
+ [Adición de archivos y directorios](#customize-sample-ami-overlay)
+ [Adición de scripts personalizados](#customize-sample-ami-script)

## Administración de repositorios
<a name="prepare-custom-image-repos"></a>

De forma predeterminada, la descripción de imagen de muestra incluye un único elemento `<repository>` que apunta a un punto de conexión espejo para los repositorios principales de Amazon Linux 2023. Si es necesario, puede agregar referencias a otros repositorios desde los cuales instalar el software requerido.

La descripción de imagen de muestra usa el administrador de paquetes `dnf`, tal como se define en el elemento `<packagemanager>`.

Para obtener más información sobre cómo agregar repositorios, consulte [Setting up Repositories](https://osinside.github.io/kiwi/concept_and_workflow/repository_setup.html).

## Administración de paquetes
<a name="customize-sample-ami-packages"></a>

De forma predeterminada, la descripción de imagen de muestra incluye todos los paquetes necesarios para crear una AMI de Amazon Linux 2023 con capacidad de atestación destinada a un entorno de computación aislado con un sistema de archivos de solo lectura `erofs`.

Puede incluir paquetes de software adicionales en la descripción de imagen mediante la adición de dichos paquetes al elemento `<packages>` de la descripción de imagen. El elemento `<packages>` define todo el software que se debe instalar en la AMI.

También puede usar el elemento `<packages>` para desinstalar o eliminar paquetes de software específicos.

Para obtener más información sobre cómo agregar o eliminar paquetes en la descripción de imagen, consulte [Adding and Removing Packages](https://osinside.github.io/kiwi/concept_and_workflow/packages.html#).

## Adición de archivos y directorios
<a name="customize-sample-ami-overlay"></a>

La descripción de imagen de muestra incluye un directorio de estructura superpuesta (`/root/`). El directorio de estructura superpuesta es un directorio que contiene archivos y directorios que se copian en la imagen durante el proceso de compilación de la imagen. Cualquier archivo o directorio que se coloque en el directorio de estructura superpuesta se copia directamente en el sistema de archivos raíz de la imagen durante el proceso de compilación.

El directorio de estructura superpuesta se copia en la imagen después de la instalación de todos los paquetes. Los archivos nuevos se agregan y los existentes se sobrescriben.

## Adición de scripts personalizados
<a name="customize-sample-ami-script"></a>

La descripción de imagen de muestra incluye un único script personalizado (`edit_boot_install.sh`). Este script contiene los comandos necesarios para ejecutar la utilidad `nitro-tpm-pcr-compute`, la cual genera las mediciones de referencia con base en el contenido de la imagen. Este script se ejecuta inmediatamente después de la instalación del cargador de arranque.

Si es necesario, puede incluir sus propios scripts personalizados en la descripción de imagen para realizar tareas o configuraciones durante el proceso de compilación de la imagen o en su primer arranque. El uso de scripts permite personalizar las imágenes de maneras que no es posible mediante la descripción de imagen por sí sola.

Para incluir scripts personalizados en la descripción de imagen, asígneles el nombre adecuado según el tipo de script y agréguelo al mismo directorio que el archivo `appliance.kiwi`. KIWI NG detecta y ejecuta automáticamente los scripts cuando se nombran correctamente y se ubican en la ruta adecuada, sin necesidad de hacer referencia explícita a ellos en el archivo de descripción de la imagen.

Para obtener más información sobre los scripts compatibles con KIWI NG, consulte [Scripts definidos por el usuario](https://osinside.github.io/kiwi/concept_and_workflow/shell_scripts.html).

# Cálculo de mediciones PCR para una AMI personalizada
<a name="create-pcr-compute"></a>

La utilidad `nitro-tpm-pcr-compute` permite generar las mediciones de referencia para una AMI con capacidad de atestación durante el proceso de compilación, con base en su imagen de núcleo unificado (UKI).

La descripción de la imagen de muestra de Amazon Linux 2023 instala automáticamente la utilidad en la imagen compilada, dentro del directorio `/usr/bin/`. La descripción de imagen de muestra también incluye un script con los comandos necesarios para ejecutar la utilidad y generar las mediciones de referencia durante la compilación de la imagen. Si utiliza la descripción de imagen de muestra, no es necesario instalar la utilidad ni ejecutarla manualmente. Para obtener más información, consulte [Compilación de la descripción de imagen de Amazon Linux 2023 de muestra](build-sample-ami.md).

## Instalación de la utilidad `nitro-tpm-pcr-compute`
<a name="nitro-tpm-compute-install"></a>

Si utiliza Amazon Linux 2023, puede instalar la utilidad `nitro-tpm-pcr-compute` desde el repositorio de Amazon Linux de la siguiente manera:

```
sudo yum install aws-nitro-tpm-tools
```

Las herramientas se instalan en el directorio `/usr/bin`.

## Uso de la utilidad `nitro-tpm-pcr-compute`
<a name="nitro-tpm-compute-use"></a>

La utilidad proporciona un único comando (`nitro-tpm-pcr-compute`) para generar las mediciones de referencia.

Al ejecutar el comando, debe especificar lo siguiente:
+ Imagen de núcleo unificado (`UKI.efi`): requerida para el arranque estándar y UEFI.

**Para generar las mediciones de referencia de una AMI con capacidad de atestación:**  
Use el siguiente comando y parámetros:

```
/usr/bin/nitro-tpm-pcr-compute \
--image UKI.efi
```

La utilidad devuelve las mediciones de referencia en el siguiente formato JSON.

```
{
  "Measurements": {
    "HashAlgorithm": "SHA384 { ... }",
    "PCR4": "PCR4_measurement",
    "PCR7": "PCR7_measurement",
    "PCR12": "PCR12_measurement"
  }
}
```

Para un ejemplo práctico sobre cómo usar la utilidad `nitro-tpm-pcr-compute`, consulte el script `edit_boot_install.sh` incluido en la [ descripción de la imagen de muestra de Amazon Linux 2023](build-sample-ami.md).

# Preparación de AWS KMS para la atestación
<a name="prepare-attestation-service"></a>

**nota**  
Si debe realizar la atestación ante un servicio de terceros, debe crear sus propios mecanismos personalizados para recibir, analizar y validar los documentos de atestación. Para obtener más información, consulte [Validación de un documento de atestación de NitroTPM](nitrotpm-attestation-document-validate.md).

Después de crear su AMI con capacidad de atestación, debe contar con mediciones de referencia que pueda usar para validar las solicitudes provenientes de una instancia de Amazon EC2. AWS KMS proporciona compatibilidad integrada para la atestación con NitroTPM.

Para la clave de AWS KMS utilizada para cifrar los datos confidenciales, agregue una política de claves que permita el acceso únicamente si las solicitudes de API incluyen un documento de verificación con mediciones que coincidan con las mediciones de referencia generadas durante el proceso de creación de la AMI verificable. Utilice las medidas PCR4 y PCR12 para un arranque estándar o las medidas PCR7 para un arranque seguro. Esto garantiza que solo las solicitudes provenientes de instancias lanzadas con la AMI con capacidad de atestación puedan ejecutar operaciones criptográficas mediante la clave de AWS KMS.

AWS KMS proporciona claves de condición `kms:RecipientAttestation:NitroTPMPCR4`, `kms:RecipientAttestation:NitroTPMPCR7` y `kms:RecipientAttestation:NitroTPMPCR12` que permiten crear condiciones basadas en atestación para las políticas de claves de KMS para NitroTPM. Para obtener más información, consulte [Condition keys for NitroTPM](https://docs.aws.amazon.com/kms/latest/developerguide/conditions-nitro-tpm.html).

Por ejemplo, la siguiente política de claves de AWS KMS permite el acceso a la clave únicamente si la solicitud se origina en una instancia con el perfil de instancia `MyEC2InstanceRole` asociado, y si la solicitud incluye un documento de atestación con valores específicos de PCR 4 y PCR 12.

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "Allow requests from instances with attested AMI only",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/MyEC2InstanceRole"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateRandom"
      ],
      "Resource": "*",
      "Condition": {
        "StringEqualsIgnoreCase": {
          "kms:RecipientAttestation:NitroTPMPCR4":"EXAMPLE6b9b3d89a53b13f5dfd14a1049ec0b80a9ae4b159adde479e9f7f512f33e835a0b9023ca51ada02160EXAMPLE",
          "kms:RecipientAttestation:NitroTPMPCR12":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        }
      }
    }
  ]
}
```

# Obtención del documento de atestación de NitroTPM
<a name="attestation-get-doc"></a>

El documento de atestación es un componente esencial del proceso de atestación de NitroTPM. Contiene una serie de mediciones criptográficas que se pueden utilizar para verificar la identidad de la instancia y demostrar que ejecuta únicamente software confiable. Puede utilizar el documento de atestación con AWS KMS, que proporciona compatibilidad integrada para la atestación de NitroTPM, o crear sus propios mecanismos criptográficos de atestación.

La utilidad `nitro-tpm-attest` permite recuperar un documento de atestación de NitroTPM firmado para una instancia de Amazon EC2 durante el tiempo de ejecución.

La descripción de la imagen de muestra de Amazon Linux 2023 instala automáticamente la utilidad en la imagen compilada, dentro del directorio `/usr/bin/`. Esto garantiza que la utilidad esté preinstalada en las instancias que se lanzan con la AMI. No es necesario instalar la utilidad manualmente. Para obtener más información, consulte [Compilación de la descripción de imagen de Amazon Linux 2023 de muestra](build-sample-ami.md).

**Topics**
+ [Instalación de la utilidad `nitro-tpm-attest`](#nitro-tpm-attest-install)
+ [Uso de la utilidad `nitro-tpm-attest`](#nitro-tpm-attest-use)
+ [Documento de atestación NitroTPM](nitrotpm-attestation-document-content.md)
+ [Validación del documento de atestación](nitrotpm-attestation-document-validate.md)

## Instalación de la utilidad `nitro-tpm-attest`
<a name="nitro-tpm-attest-install"></a>

Si utiliza Amazon Linux 2023, puede instalar la utilidad `nitro-tpm-attest` desde el repositorio de Amazon Linux de la siguiente manera:

```
sudo yum install aws-nitro-tpm-tools
```

## Uso de la utilidad `nitro-tpm-attest`
<a name="nitro-tpm-attest-use"></a>

La utilidad proporciona un único comando (`nitro-tpm-attest`) para recuperar el documento de atestación. El comando devuelve el documento de atestación codificado en Concise Binary Object Representation (CBOR) y firmado mediante CBOR Object Signing and Encryption (COSE).

Cuando se ejecuta el comando, es posible especificar los siguientes parámetros opcionales:
+ `public-key`: una clave pública que puede utilizar AWS KMS o un servicio externo para cifrar los datos de respuesta antes de su devolución. Esto garantiza que solo el destinatario previsto, que posee la clave privada, pueda descifrar los datos. Por ejemplo, si se realiza una atestación con AWS KMS, el servicio cifra los datos en texto plano con la clave pública incluida en el documento de atestación y devuelve el texto cifrado en el campo `CiphertextForRecipient` de la respuesta. Solo se admiten claves RSA.
+ `user-data`: los datos de usuario se pueden utilizar para enviar cualquier información adicional firmada a un servicio externo. Estos datos de usuario se pueden emplear para completar un protocolo acordado entre la instancia solicitante y el servicio externo. No se utiliza para la atestación con AWS KMS.
+ `nonce`: el valor nonce se puede emplear para establecer autenticación de desafío y respuesta entre la instancia y el servicio externo, con el fin de ayudar a prevenir ataques de suplantación El uso de un valor nonce permite que el servicio externo verifique que interactúa con una instancia activa y no con un suplantador que reutiliza un documento de atestación antiguo. No se utiliza para la atestación con AWS KMS.

**Recuperación del documento de atestación**  
Utilice el siguiente comando y parámetros opcionales:

```
/usr/bin/nitro-tpm-attest \
--public-key rsa_public_key \
--user-data user_data \
--nonce nonce
```

Para un ejemplo completo que muestra cómo generar un par de claves RSA y cómo solicitar una atestación con la clave pública, consulte el [ repositorio de GitHub nitro-tpm-attest](https://github.com/aws/NitroTPM-Tools/).

# Contenido del documento de atestación NitroTPM
<a name="nitrotpm-attestation-document-content"></a>

Se genera un documento de atestación mediante NitroTPM, y este se firma a través del hipervisor Nitro. Incluye una serie de valores de registros de configuración de plataforma (PCR) relacionados con una instancia de Amazon EC2. Los siguientes PCR se incluyen en el documento de atestación:

**importante**  
Los PCR0 y PCR1 se utilizan generalmente para medir el código de arranque inicial, que está controlado por AWS. Para permitir actualizaciones seguras del código de arranque temprano, estos PCR siempre contienen valores constantes.
+ `PCR0`: código ejecutable del firmware del sistema principal
+ `PCR1`: datos del firmware del sistema principal
+ `PCR2`: código ejecutable ampliado o conectable
+ `PCR3`: datos de firmware ampliados o conectables
+ `PCR4`: código del administrador de arranque
+ `PCR5`: código de configuración del administrador de arranque, datos y tabla de particiones GPT
+ `PCR6`: especificaciones del fabricante de la plataforma del host
+ `PCR7`: política de arranque seguro
+ `PCR8 - 15`: definido para su uso por el sistema operativo estático
+ `PCR16`: depuración
+ `PCR23`: compatibilidad con aplicaciones

Los **PCR4**, **PCR7** y **PCR12** se utilizan específicamente para validar que una instancia se haya lanzado con una AMI verificable. PCR4 y PCR12 se pueden utilizar para validar con el arranque estándar, mientras que PCR7 se puede utilizar para validar con el arranque seguro.
+ **PCR4 (código del administrador de arranque)**: cuando una instancia se inicia, NitroTPM crea valores hash criptográficos de todos los binarios ejecutados por su entorno UEFI. En las AMI con capacidad de atestación, estos binarios de arranque incorporan valores hash que impiden la carga futura de binarios que no tengan coincidencias. De este modo, el valor hash del binario de arranque único puede describir con precisión qué código ejecutará una instancia.
+ **PCR7 (política de arranque seguro)**: los binarios de arranque UEFI se pueden firmar con una clave de firma de arranque seguro UEFI. Cuando el arranque seguro UEFI está habilitado, UEFI impedirá la ejecución de binarios de arranque UEFI que no coincidan con la política configurada. PCR7 contiene un valor hash de la política de arranque seguro UEFI de la instancia.

  Si necesita mantener una única política de KMS que persista entre actualizaciones de instancias, puede crear una política que se valide frente a PCR7 para validar un certificado de arranque seguro UEFI. Durante la creación de una AMI con capacidad de atestación, puede firmar el binario de arranque con el certificado e instalarlo como el único certificado permitido en los datos UEFI de la AMI. Tenga en cuenta que este modelo requiere generar un nuevo certificado, instalarlo en la política y actualizar las AMI si desea impedir que las instancias iniciadas a partir de AMI antiguas (no confiables) superen la validación de la política de KMS.
+ **PCR12**: Contiene el hash de la línea de comandos que se pasa al binario de arranque UEFI. Se requiere junto con el PCR4 para el arranque estándar a fin de verificar que no se ha modificado la línea de comandos.

# Validación de un documento de atestación de NitroTPM
<a name="nitrotpm-attestation-document-validate"></a>

**nota**  
Este tema está dirigido a los usuarios que utilizan un servicio de administración de claves de terceros y necesitan crear sus propios mecanismos de validación de documentos de atestación.

Este tema ofrece una descripción detallada de todo el flujo de atestación de NitroTPM. También aborda lo que genera el sistema AWS Nitro cuando se solicita un documento de atestación y explica cómo un servicio de administración de claves debe procesar dicho documento.

**Topics**
+ [El documento de atestación](#doc-def)
+ [Validación del documento de atestación](#validation-process)

El propósito de la atestación es demostrar que una instancia es una entidad confiable, con base en el código y la configuración que ejecuta. La raíz de confianza de la instancia reside dentro del sistema AWS Nitro, que proporciona documentos de atestación. 

Los documentos de atestación están firmados por la infraestructura de clave pública (PKI) de atestación de AWS Nitro, que incluye una autoridad certificadora publicada que se puede incorporar a cualquier servicio. 

## El documento de atestación
<a name="doc-def"></a>

Los documentos de atestación se codifican en la representación concisa de objetos binarios (CBOR) y se firman mediante el esquema de firma y cifrado de objetos CBOR (COSE).

Para obtener más información sobre CBOR, consulte [RFC 8949: Representación concisa de objetos binarios (CBOR)](https://www.rfc-editor.org/rfc/rfc8949.html).

### Especificación del documento de atestación
<a name="doc-spec"></a>

A continuación se muestra la estructura de un documento de atestación.

```
AttestationDocument = {
    module_id: text,                     ; issuing Nitro hypervisor module ID
    timestamp: uint .size 8,             ; UTC time when document was created, in
                                         ; milliseconds since UNIX epoch
    digest: digest,                      ; the digest function used for calculating the
                                         ; register values
    nitrotpm_pcrs: { + index => pcr },   ; map of PCRs at the moment the Attestation Document was generated
    certificate: cert,                   ; the public key certificate for the public key 
                                         ; that was used to sign the Attestation Document
    cabundle: [* cert],                  ; issuing CA bundle for infrastructure certificate
    ? public_key: user_data,             ; an optional DER-encoded key the attestation
                                         ; consumer can use to encrypt data with
    ? user_data: user_data,              ; additional signed user data, defined by protocol
    ? nonce: user_data,                  ; an optional cryptographic nonce provided by the
                                         ; attestation consumer as a proof of authenticity
}

cert = bytes .size (1..1024)       ; DER encoded certificate
user_data = bytes .size (0..1024)
pcr = bytes .size (32/48/64)       ; PCR content
index = 0..31
digest = "SHA384"
```

Los parámetros opcionales del documento de atestación (`public_key`, `user_data` y `nonce`) se pueden utilizar para establecer un protocolo de validación personalizado entre una instancia que realiza la atestación y el servicio externo.

## Validación del documento de atestación
<a name="validation-process"></a>

Cuando se solicita un documento de atestación al hipervisor Nitro, se recibe un blob binario que contiene el documento de atestación firmado. El documento de atestación firmado es un objeto codificado en CBOR y firmado en COSE (mediante la estructura de firma COSE\$1Sign1). El proceso general de validación incluye los siguientes pasos:

1. Decodificar el objeto CBOR y asignarlo a una estructura COSE\$1Sign1.

1. Extraer el documento de atestación de la estructura COSE\$1Sign1.

1. Verificar la cadena de certificados.

1. Asegurarse de que el documento de atestación esté firmado correctamente.

Los documentos de atestación se firman mediante la infraestructura de clave pública de atestación (PKI) de AWS Nitro, que incluye un certificado raíz para las particiones comerciales de AWS. El certificado raíz se puede descargar desde [https://aws-nitro-enclaves.amazonaws.com/AWS\$1NitroEnclaves\$1Root-G1.zip](https://aws-nitro-enclaves.amazonaws.com/AWS_NitroEnclaves_Root-G1.zip) y se puede verificar con la siguiente huella digital.

```
64:1A:03:21:A3:E2:44:EF:E4:56:46:31:95:D6:06:31:7E:D7:CD:CC:3C:17:56:E0:98:93:F3:C6:8F:79:BB:5B
```

El certificado raíz se basa en una clave privada de una entidad de certificación privada de AWS Certificate Manager (AWS Private CA) y tiene una vigencia de 30 años. El asunto de la PCA tiene el siguiente formato.

```
CN=aws.nitro-enclaves, C=US, O=Amazon, OU=AWS
```

**Topics**
+ [COSE y CBOR](#COSE-CBOR)
+ [Validez semántica](#semantic-validation)
+ [Validez del certificado](#cert-validity)
+ [Validez de la cadena de certificados](#chain)

### COSE y CBOR
<a name="COSE-CBOR"></a>

Por lo general, la estructura de firma COSE\$1Sign1 se utiliza cuando solo se aplica una firma a un mensaje. Los parámetros relacionados con el contenido y la firma se ubican en el encabezado protegido, en lugar de utilizar la separación propia de COSE\$1Sign. La estructura se puede codificar como etiquetada o sin etiquetar, según el contexto en el que se use. Una estructura COSE\$1Sign1 etiquetada se identifica mediante la etiqueta CBOR 18. 

El objeto CBOR que contiene el cuerpo, la firma y la información sobre ambos se denomina estructura COSE\$1Sign1. La estructura COSE\$1Sign1 es un arreglo CBOR. El arreglo incluye los siguientes campos.

```
[
  protected:   Header,
  unprotected: Header,
  payload:     This field contains the serialized content to be signed,
  signature:   This field contains the computed signature value.
]
```

En el contexto de un documento de atestación, el arreglo incluye lo siguiente.

```
18(/* COSE_Sign1 CBOR tag is 18 */
    {1: -35}, /* This is equivalent with {algorithm: ECDS 384} */
    {}, /* We have nothing in unprotected */
    $ATTESTATION_DOCUMENT_CONTENT /* Attestation Document */,
    signature /* This is the signature */
)
```

Para obtener más información sobre CBOR, consulte [RFC 8949: Representación concisa de objetos binarios (CBOR)](https://www.rfc-editor.org/rfc/rfc8949.html).

### Validez semántica
<a name="semantic-validation"></a>

Un documento de atestación siempre contiene su paquete de entidades de certificación (CA) en el siguiente orden.

```
[ ROOT_CERT - INTERM_1 - INTERM_2 .... - INTERM_N]
      0          1          2             N - 1
```

Se debe tener en cuenta este orden, ya que algunas herramientas existentes, como CertPath de Java ([de la guía del programador de la API de PKI de Java](https://docs.oracle.com/javase/8/docs/technotes/guides/security/certpath/CertPathProgGuide.html)), pueden requerir que se ordenen de manera diferente.

Para validar los certificados, inicie desde el paquete de entidades de certificación (CA) del documento de atestación y genere la cadena necesaria, donde `TARGET_CERT` corresponde al certificado dentro del documento de atestación.

```
[TARGET_CERT, INTERM_N, ..... , INTERM_2, INTERM_1, ROOT_CERT]
```

### Validez del certificado
<a name="cert-validity"></a>

Para todos los certificados de la cadena, se debe asegurar de que la fecha actual se encuentre dentro del período de validez especificado en el certificado.

### Validez de la cadena de certificados
<a name="chain"></a>

En general, puede ser necesaria una cadena compuesta por varios certificados, que incluya un certificado del propietario de la clave pública firmado por una entidad de certificación, y cero o más certificados adicionales de entidades de certificación firmados por otras entidades de certificación. Dichas cadenas, denominadas rutas de certificación, son necesarias porque un usuario de clave pública solo se inicializa con un número limitado de claves públicas de entidades de certificación de confianza. Los procedimientos de validación de rutas de certificación para la infraestructura de clave pública (PKI) de Internet se basan en el algoritmo definido en X.509. El procesamiento de rutas de certificación verifica la vinculación entre el nombre distinguido del sujeto o el nombre alternativo del sujeto, y la clave pública del sujeto. La vinculación está limitada por las restricciones especificadas en los certificados que componen la ruta y por las entradas definidas por la parte que confía. Las extensiones de restricciones básicas y de políticas permiten que la lógica de procesamiento de rutas de certificación automatice el proceso de toma de decisiones.

**nota**  
CRL debe estar desactivado al realizar la validación.

En Java, al partir de la ruta raíz y de la cadena de certificados generada, la validación de la cadena se realiza de la siguiente manera.

```
validateCertsPath(certChain, rootCertficate) {
    /* The trust anchor is the root CA to trust */
    trustAnchors.add(rootCertificate);

    /* We need PKIX parameters to specify the trust anchors
     * and disable the CRL validation
     */
    validationParameters = new PKIXParameters(trustAnchors);
    certPathValidator = CertPathValidator.getInstance(PKIX);
    validationParameters.setRevocationEnabled(false);

    /* We are ensuring that certificates are chained correctly */
    certPathValidator.validate(certPath, validationParameters);
}
```

# Integración de con AWS KMS
<a name="attestation-attest"></a>

La instancia debe tener una aplicación capaz de efectuar solicitudes de API AWS KMS con el documento de atestación obtenido del NitroTPM. Cuando se efectúa una solicitud con un documento de atestación, AWS KMS valida las mediciones contenidas en el documento de atestación frente a las mediciones de referencia definidas en la política de claves de KMS. Las solicitudes se permiten únicamente si las mediciones del documento de atestación coinciden con las mediciones de referencia establecidas en la política de claves de KMS.

Cuando se llama a las operaciones de API [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html), [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html) o [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html) con un documento de atestación, dichas API cifran el texto plano en la respuesta mediante la clave pública del documento de atestación y devuelven texto cifrado en lugar de texto plano. Este texto cifrado solo se puede descifrar mediante la clave privada correspondiente que se generó en la instancia.

Para obtener más información, consulte [Atestación criptográfica para NitroTPM](https://docs.aws.amazon.com/kms/latest/developerguide/services-nitro-enclaves.html) en la *Guía del desarrollador de AWS Key Management Service*.

**nota**  
Si debe realizar la atestación ante un servicio de terceros, debe crear sus propios mecanismos personalizados para recibir, analizar y validar los documentos de atestación. Para obtener más información, consulte [Validación de un documento de atestación de NitroTPM](nitrotpm-attestation-document-validate.md).

# Cómo aislar los datos de operadores propios
<a name="isolate-data-operators"></a>

El sistema AWS Nitro [no tiene acceso de operador](https://docs.aws.amazon.com/whitepapers/latest/security-design-of-aws-nitro-system/no-aws-operator-access.html). No existe ningún mecanismo que permita que un sistema o una persona de AWS inicie sesión en los hosts de Amazon EC2 Nitro, acceda a la memoria de las instancias de EC2 ni a los datos de clientes almacenados en el almacenamiento cifrado local de las instancias o en los volúmenes cifrados de Amazon EBS.

Cuando se trata de información altamente confidencial, puede considerar restringir el acceso a esa información para evitar que incluso operadores propios accedan a la instancia de EC2.

Es posible crear AMI personalizadas con capacidad de atestación configuradas para proporcionar un entorno de computación aislado. La configuración de la AMI depende de la carga de trabajo y de los requisitos de la aplicación. Tenga en cuenta estas prácticas recomendadas al crear una AMI para establecer un entorno de computación aislado.
+ **Elimine todos los accesos interactivos** para impedir que los operadores o usuarios accedan a la instancia.
+ **Asegúrese de que en la AMI solo se incluyan software y código confiables**.
+ **Configure un firewall de red** dentro de la instancia para bloquear el acceso.
+ **Garantice estados de solo lectura e inmutables** para todos los sistemas de almacenamiento y archivos.
+ **Limite el acceso a las instancias** únicamente a las llamadas a la API que estén autenticadas, autorizadas y registradas.

# Actualización de AMI con capacidad de atestación sin acceso interactivo
<a name="working-with-isolated-amis"></a>

Una vez que se lanza una instancia mediante una AMI con un entorno de computación aislado, no existe forma de que ningún usuario ni operador se conecte a la instancia. Esto significa que no hay manera de instalar ni actualizar ningún software en la instancia después de su lanzamiento.

Si se requiere instalar un nuevo software o realizar una actualización, debe crear una nueva AMI con capacidad de atestación que incluya el software o las actualizaciones necesarias. Luego, utilice esa AMI para lanzar una nueva instancia o para reemplazar el volumen raíz de la instancia original. Cualquier cambio de software realizado en la AMI generará un nuevo valor hash.

Las siguientes acciones provocarán un cambio en las mediciones de referencia del documento de atestación de NitroTPM:
+ Detención e inicio de una instancia lanzada con una AMI con capacidad de atestación
+ Realización de un reemplazo del volumen raíz con una AMI diferente

Si realiza cualquiera de estas acciones, debe actualizar el servicio de atestación con las nuevas mediciones de referencia. Por ejemplo, debe actualizar la política de claves de KMS con las nuevas mediciones de referencia si usa AWS KMS para la atestación.

Una instancia conserva su material de claves NitroTPM durante todo el ciclo de vida de la instancia y lo mantiene a través de las operaciones de detención, inicio y reemplazo del volumen raíz.

# Credential Guard para instancias de Windows
<a name="credential-guard"></a>

El sistema AWS Nitro es compatible con Credential Guard para instancias de Windows de Amazon Elastic Compute Cloud (Amazon EC2). Credential Guard es una característica de seguridad basada en la virtualización (VBS) de Windows que permite crear entornos aislados para proteger los activos de seguridad, como las credenciales de usuario de Windows y el cumplimiento de la integridad del código, más allá de las protecciones del kernel de Windows. Al ejecutar instancias de EC2 de Windows, Credential Guard utiliza el sistema AWS Nitro para evitar que las credenciales de inicio de sesión de Windows se extraigan de la memoria del sistema operativo.

**Topics**
+ [Requisitos previos](#credential-guard-prerequisites)
+ [Lanzamiento de una instancia compatible](#credential-guard-launch-instance)
+ [Cómo desactivar la integridad de memoria](#disable-memory-integrity)
+ [Cómo activar Credential Guard](#turn-on-credential-guard)
+ [Cómo comprobar que Credential Guard se esté ejecutando](#verify-credential-guard)

## Requisitos previos
<a name="credential-guard-prerequisites"></a>

Su instancia de Windows debe cumplir con los siguientes requisitos previos para utilizar Credential Guard.

**Imágenes de máquina de Amazon (AMI)**  
La AMI debe estar preconfigurada para habilitar NitroTPM y el UEFI Secure Boot. Para obtener más información acerca de las AMI, consulte [Requisitos para utilizar NitroTPM con instancias de Amazon EC2](enable-nitrotpm-prerequisites.md).

**Integridad de memoria**  
No se admite la *integridad de memoria*, también conocida *como integridad del código del hipervisor (HVCI)* o *integridad de código aplicado por hipervisor*. Antes de activar Credential Guard, debe asegurarse de que esta característica esté deshabilitada. Para obtener más información, consulte [Cómo desactivar la integridad de memoria](#disable-memory-integrity).

**Tipos de instancias**  
Los siguientes tipos de instancias admiten Credential Guard en todos los tamaños excepto que se indique otra cosa: `C5`, `C5d`, `C5n`, `C6i`, `C6id`, `C6in`, `C7i`, `C7i-flex`, `M5`, `M5d`, `M5dn`, `M5n`, `M5zn`, `M6i`, `M6id`, `M6idn`, `M6in`, `M7i`, `M7i-flex`, `R5`, `R5b`, `R5d`, `R5dn`, `R5n`, `R6i`, `R6id`, `R6idn`, `R6in` `R7i`, `R7iz`, `T3`.  
+ Si bien NitroTPM tiene algunos tipos de instancia obligatorios en común, el tipo de instancia debe ser uno de los tipos anteriores para que sea compatible con Credential Guard.
+ No se admite Credential Guard en lo siguiente:
  + instancias Bare Metal.
  + Los siguientes tipos de instancias admiten EFA: `C7i.48xlarge`, `M7i.48xlarge` y `R7i.48xlarge`.
Para obtener más información acerca de los tipos de instancias, consulte la [Guía de tipos de instancias de Amazon EC2](https://docs.aws.amazon.com/ec2/latest/instancetypes/instance-types.html).

## Lanzamiento de una instancia compatible
<a name="credential-guard-launch-instance"></a>

Puede utilizar la consola de Amazon EC2 o AWS Command Line Interface (AWS CLI) para iniciar una instancia que sea compatible con Credential Guard. Necesitará un ID de AMI compatible para iniciar la instancia, que sea único para cada Región de AWS.

**sugerencia**  
Puede utilizar el siguiente enlace para descubrir y iniciar instancias con AMI compatibles proporcionadas por Amazon en la consola de Amazon EC2:  
[https://console.aws.amazon.com/ec2/v2/home?#Images:visibility=public-images;v=3;search=:TPM-Windows_Server;ownerAlias=amazon](https://console.aws.amazon.com/ec2/v2/home?#Images:visibility=public-images;v=3;search=:TPM-Windows_Server;ownerAlias=amazon)

------
#### [ Console ]

**Cómo lanzar una instancia**  
Siga estos pasos para [lanzar una instancia](ec2-launch-instance-wizard.md) y especificar un tipo de instancia compatible y una AMI de Windows preconfigurada.

------
#### [ AWS CLI ]

**Cómo lanzar una instancia**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) para lanzar una instancia con un tipo de instancia compatible y una AMI de Windows preconfigurada.

```
aws ec2 run-instances \
    --image-id resolve:ssm:/aws/service/ami-windows-latest/TPM-Windows_Server-2022-English-Full-Base \
    --instance-type c6i.large \
    --region us-east-1 \
    --subnet-id subnet-0abcdef1234567890
    --key-name key-name
```

------
#### [ PowerShell ]

**Cómo lanzar una instancia**  
Utilice el comando [https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) para lanzar una instancia con un tipo de instancia compatible y una AMI de Windows preconfigurada.

```
New-EC2Instance `
    -ImageId resolve:ssm:/aws/service/ami-windows-latest/TPM-Windows_Server-2022-English-Full-Base `
    -InstanceType c6i.large `
    -Region us-east-1 `
    -SubnetId subnet-0abcdef1234567890 `
    -KeyName key-name
```

------

## Cómo desactivar la integridad de memoria
<a name="disable-memory-integrity"></a>

Puede utilizar el Editor de políticas de grupo local para desactivar la integridad de memoria en los escenarios compatibles. Se puede aplicar la siguiente instrucción para cada parámetro de configuración de la **Protección basada en la virtualización de la integridad del código**:
+ **Habilitada sin bloqueo**: modifique la configuración a **Desactivada** para desactivar la integridad de memoria.
+ **Habilitada con bloqueo UEFI**: la integridad de memoria se ha habilitado con el bloqueo UEFI. La integridad de memoria no se puede desactivar una vez que se haya habilitado con el bloqueo UEFI. Recomendamos crear una nueva instancia con la integridad de memoria desactivada y terminar la instancia no compatible si no está en uso.

**Para desactivar la integridad de memoria con el Editor de políticas de grupos locales**

1. Conéctese a su instancia como una cuenta de usuario con privilegios de administrador mediante el protocolo de escritorio remoto (RDP). Para obtener más información, consulte [Conexión a la instancia de Windows mediante un cliente RDP](connect-rdp.md).

1. Abra el menú Inicio y busque **cmd** para abrir un símbolo del sistema.

1. Ejecute el siguiente comando para abrir el editor de políticas de grupo local: `gpedit.msc`

1. En el editor de políticas de grupo local, elija **Configuración del equipo**, **Plantillas administrativas**, **Sistema**, **Device Guard**.

1. Seleccione **Activar seguridad basada en la virtualización** y, a continuación, seleccione **Editar configuración de políticas**.

1. Abra el menú desplegable de configuración para **Protección basada en la virtualización de la integridad de código**, elija **Desactivada** y, a continuación, seleccione **Aplicar**.

1. Reinicie la instancia para aplicar los cambios.

## Cómo activar Credential Guard
<a name="turn-on-credential-guard"></a>

Después de iniciar una instancia de Windows con un tipo de instancia y una AMI compatibles, y tras confirmar que se ha desactivado la integridad de memoria, puede activar Credential Guard.

**importante**  
Se requieren privilegios de administrador para realizar los siguientes pasos para activar Credential Guard.

**Para activar Credential Guard**

1. Conéctese a su instancia como una cuenta de usuario con privilegios de administrador mediante el protocolo de escritorio remoto (RDP). Para obtener más información, consulte [Conexión a la instancia de Windows mediante un cliente RDP](connect-rdp.md).

1. Abra el menú Inicio y busque **cmd** para abrir un símbolo del sistema.

1. Ejecute el siguiente comando para abrir el editor de políticas de grupo local: `gpedit.msc`

1. En el editor de políticas de grupo local, elija **Configuración del equipo**, **Plantillas administrativas**, **Sistema**, **Device Guard**.

1. Seleccione **Activar seguridad basada en la virtualización** y, a continuación, seleccione **Editar configuración de políticas**.

1. Elija **Habilitado** en el menú **Activar seguridad basada en la virtualización**.

1. En **Seleccionar nivel de seguridad de la plataforma**, elija **Arranque seguro y protección DMA**.

1. En **Configuración de Credential Guard**, elija **Habilitada con bloqueo de UEFI**.
**nota**  
Las configuraciones de política restantes no son necesarias para habilitar Credential Guard y se pueden dejar como **No configuradas**.

   La siguiente imagen muestra los ajustes de VBS configurados como se ha descrito anteriormente:  
![\[\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/vbs-credential-guard-gpo-enabled.png)

1. Reinicie la instancia para aplicar la configuración.

## Cómo comprobar que Credential Guard se esté ejecutando
<a name="verify-credential-guard"></a>

Puede utilizar la herramienta Información del sistema de Microsoft (`Msinfo32.exe`) para confirmar que Credential Guard se esté ejecutando.

**importante**  
Primero debe reiniciar la instancia para terminar de aplicar la configuración de políticas necesaria para habilitar Credential Guard.

**Para comprobar que Credential Guard se esté ejecutando**

1. Conéctese a la instancia mediante el protocolo de escritorio remoto (RDP). Para obtener más información, consulte [Conexión a la instancia de Windows mediante un cliente RDP](connect-rdp.md).

1. Dentro de la sesión RDP de su instancia, abra el menú Inicio y busque **cmd** para abrir un símbolo del sistema.

1. Para abrir Información del sistema ejecute el siguiente comando: `msinfo32.exe`

1. La herramienta Información del sistema de Microsoft muestra los detalles de la configuración de VBS. Junto a Servicios de seguridad basados en la virtualización, confirme que **Credential Guard** aparezca como **En ejecución**.

   La siguiente imagen muestra que VBS se está ejecutando, como se ha descrito anteriormente:  
![\[\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/vbs-credential-guard-msinfo32-enabled.png)

# Acceso a Amazon EC2 mediante un punto de conexión de VPC de interfaz.
<a name="interface-vpc-endpoints"></a>

Para mejorar la posición de seguridad de su VPC, cree una conexión privada entre los recursos de la VPC y la API de Amazon EC2. Puede acceder a la API de Amazon EC2 como si estuviera en su VPC, sin el uso de una puerta de enlace de Internet, un dispositivo NAT, una conexión VPN o una conexión Direct Connect. Las instancias de EC2 de la VPC no necesitan direcciones IP públicas para acceder a la API de Amazon EC2.

Para obtener más información, consulte [Acceso a Servicios de AWS a través de AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html) en la *Guía de AWS PrivateLink*.

**Topics**
+ [Creación de un punto de conexión de la VPC de tipo interfaz](#create-endpoint)
+ [Creación de una política de punto de conexión](#endpoint-policy)

## Creación de un punto de conexión de la VPC de tipo interfaz
<a name="create-endpoint"></a>

Cree un punto de conexión para Amazon EC2 con el siguiente nombre de servicio:
+ **com.amazonaws.*región*.ec2**: crea un punto de conexión para las acciones de la API de Amazon EC2.

Para obtener más información, consulte [Acceder a Servicio de AWS a través de un punto de conexión de VPC de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) en la *Guía de AWS PrivateLink*.

## Creación de una política de punto de conexión
<a name="endpoint-policy"></a>

Una política de punto de conexión es un recurso de IAM que puede adjuntar al punto de conexión de su interfaz. La política de punto de conexión predeterminada permite acceso completo a la API de Amazon EC2 a través del punto de conexión de interfaz. Para controlar el acceso permitido a la API de Amazon EC2 desde la VPC, adjunte una política de punto de conexión personalizada al punto de conexión de interfaz.

Una política de punto de conexión especifica la siguiente información:
+ Las entidades principales que pueden realizar acciones.
+ Las acciones que se pueden realizar.
+ El recurso en el que se pueden realizar las acciones.

**importante**  
Cuando se aplica una política no predeterminada a un punto de conexión de VPC de interfaz de Amazon EC2, es posible que algunas solicitudes de API que produzcan un error, como aquellas que fallan a partir de `RequestLimitExceeded`, no estén registradas en AWS CloudTrail o Amazon CloudWatch.

Para obtener más información, consulte [Control del acceso a los servicios con puntos de conexión de la VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) en la *Guía del usuario de AWS PrivateLink*.

En el ejemplo siguiente se muestra una política de punto de conexión de VPC que deniega el permiso para crear volúmenes no cifrados o para lanzar instancias con volúmenes no cifrados. La política de ejemplo también concede permiso para realizar todas las demás acciones de Amazon EC2.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Action": "ec2:*",
        "Effect": "Allow",
        "Resource": "*",
        "Principal": "*"
    },
    {
        "Action": [
            "ec2:CreateVolume"
        ],
        "Effect": "Deny",
        "Resource": "*",
        "Principal": "*",
        "Condition": {
            "Bool": {
                "ec2:Encrypted": "false"
            }
        }
    },
    {
        "Action": [
            "ec2:RunInstances"
        ],
        "Effect": "Deny",
        "Resource": "*",
        "Principal": "*",
        "Condition": {
            "Bool": {
                "ec2:Encrypted": "false"
            }
        }
    }]
}
```

------