

# Descripción del uso de las AMI compartidas en Amazon EC2
<a name="sharing-amis"></a>

*Una AMI compartida* es una AMI que un desarrollador ha creado y puesto a disposición de otros desarrolladores. Una de las formas más sencillas de iniciarse con Amazon EC2 es utilizar una AMI compartida que tenga los componentes que necesita y, a continuación, añadir contenido personalizado. También puede crear sus propias AMI y compartirlas con otros. 

El uso de una AMI compartida es por su cuenta y riesgo. Amazon no responde de la integridad o la seguridad de las AMI compartidas por otros usuarios de Amazon EC2. Por lo tanto, debe tratar las AMI compartidas como trataría cualquier código ajeno que desee implementar en su propio centro de datos y ejercer la diligencia debida apropiada. Le recomendamos que las AMI provengan de fuentes de confianza, como un proveedor verificado.

## Proveedor verificado
<a name="verified-ami-provider"></a>

En la consola de Amazon EC2, las AMI públicas que son propiedad de Amazon o de un socio verificado están marcadas con la inscripción **Proveedor verificado**.

También puede utilizar el comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) de la AWS CLI para identificar las AMI públicas que provienen de un proveedor verificado. Las imágenes públicas propiedad de Amazon o de un socio verificado tienen un propietario con alias, que puede ser `amazon`, `aws-backup-vault` o `aws-marketplace`. En el resultado de la CLI, estos valores aparecen para `ImageOwnerAlias`. Otros usuarios no pueden asociar las AMI. Esto le permite encontrar las AMI de Amazon o de los socios verificados fácilmente.

Para convertirse en un proveedor verificado, debe registrarse como vendedor en AWS Marketplace. Una vez registrado, puede incluir su AMI en AWS Marketplace. Para obtener más información, consulte [Introducción a los vendedores](https://docs.aws.amazon.com/marketplace/latest/userguide/user-guide-for-sellers.html) y [Productos basados en AMI](https://docs.aws.amazon.com/marketplace/latest/userguide/ami-products.html) en la *Guía del vendedor de AWS Marketplace*.

**Topics**
+ [Proveedor verificado](#verified-ami-provider)
+ [Búsqueda de AMI compartidas para utilizarlas en las instancias de Amazon EC2](usingsharedamis-finding.md)
+ [Preparación para utilizar AMI compartidas para Linux](usingsharedamis-confirm.md)
+ [Controle el descubrimiento y el uso de las AMI en Amazon EC2 con las AMI permitidas](ec2-allowed-amis.md)
+ [Publicación de la AMI para utilizarla en Amazon EC2](sharingamis-intro.md)
+ [Descripción del bloqueo del acceso público de las AMI](block-public-access-to-amis.md)
+ [Cómo compartir una AMI con organizaciones y unidades organizativas](share-amis-with-organizations-and-OUs.md)
+ [Compartir una AMI con cuentas de AWS específicas](sharingamis-explicit.md)
+ [Cancelar que se comparta una AMI con su Cuenta de AWS](cancel-sharing-an-AMI.md)
+ [Recomendaciones para crear AMI compartidas de Linux](building-shared-amis.md)

**Si quiere obtener información sobre otros temas**
+ Para obtener información acerca de la creación de una AMI, consulte [Creación de una AMI basada en Amazon S3](creating-an-ami-instance-store.md) o [Creación de una AMI basada en Amazon EBS](creating-an-ami-ebs.md).
+ Para obtener más información sobre cómo crear, entregar y mantener las aplicaciones en AWS Marketplace, consulte la [documentación de AWS Marketplace](https://docs.aws.amazon.com/marketplace/).

# Búsqueda de AMI compartidas para utilizarlas en las instancias de Amazon EC2
<a name="usingsharedamis-finding"></a>

Puede utilizar la consola de Amazon EC2 o la línea de comandos para encontrar AMI compartidas públicas o privadas para utilizarlas con las instancias de Amazon EC2.

Las AMI son un recurso regional. Por tanto, si busca una AMI compartida (pública o privada), debe buscarla en la misma región en la que se está compartiendo. Para hacer que una AMI esté disponible en una región distinta, copie la AMI en dicha región y, a continuación, compártala. Para obtener más información, consulte [Copia de una AMI de Amazon EC2](CopyingAMIs.md).

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

La consola ofrece un campo que permite filtrar las AMI. También puede acotar sus búsquedas mediante los filtros que se proporcionan en el campo **Búsqueda**.

**Para buscar una AMI compartida**

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 **AMIs**.

1. En el primer filtro, elija una de las siguientes opciones:
   + **Imágenes privadas**: muestra todas las AMI que se comparten con usted.
   + **Imágenes públicas**: muestra todas las AMI públicas.

1. (Opcional) Para mostrar solo las imágenes públicas de Amazon, elija el campo **Buscar** y luego, en las opciones del menú, elija **Alias ​​del propietario**, luego **=** y luego **amazon**.

1. (Opcional) Añada filtros para acotar su búsqueda a las AMI que cumplan sus requisitos.

**Para encontrar una AMI pública compartida de un [proveedor verificado](sharing-amis.md#verified-ami-provider)**

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 **Catálogo de AMI**.

1. Elija **AMI de comunidad**.

1. En el panel **Refinar resultados**, seleccione **Proveedor verificado**. La etiqueta **Proveedor verificado** indica las AMI que son de Amazon o de un socio verificado.

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

Utilice el comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) para enumerar las AMI. Puede limitar la lista según los tipos de AMI que le interesen, tal y como se muestra en los siguientes ejemplos:

**Para enumerar todas las AMI públicas**  
El siguiente comando muestra todas las AMI públicas, incluidas aquellas de su propiedad.

```
aws ec2 describe-images --executable-users all
```

**Para enumerar las AMI con permisos de lanzamiento explícitos**  
El siguiente comando muestra las AMI para las que tiene permisos de inicialización explícitos. Esta lista no incluye las AMI de su propiedad.

```
aws ec2 describe-images --executable-users self
```

**Para enumerar las AMI propiedad de proveedores verificados**  
El siguiente comando enumera las AMI propiedad de [proveedores verificados](sharing-amis.md#verified-ami-provider). Las AMI públicas propiedad de proveedores verificados (Amazon o socios verificados) tienen un propietario con alias, el cual aparece como `amazon`, `aws-backup-vault` o `aws-marketplace` en el campo de cuenta. Esto le permite encontrar AMI de proveedores verificados fácilmente. Otros usuarios no pueden asociar las AMI.

```
aws ec2 describe-images \
    --owners amazon aws-marketplace \
    --query 'Images[*].[ImageId]' \
    --output text
```

**Para enumerar las AMI propiedad de una cuenta**  
El siguiente comando muestra las AMI que son propiedad de la Cuenta de AWS especificada.

```
aws ec2 describe-images --owners 123456789012
```

**Para acotar las AMI mediante un filtro**  
Para reducir el número de AMI que se muestran, utilice un filtro para mostrar solo los tipos de AMI que le interesen. Por ejemplo, utilice el siguiente filtro para mostrar solo las AMI respaldadas por EBS.

```
--filters "Name=root-device-type,Values=ebs"
```

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

Utilice el cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) (Herramientas para Windows PowerShell) para mostrar una lista de las AMI. Puede limitar la lista según los tipos de AMI que le interesen, tal y como se muestra en los siguientes ejemplos:

**Para enumerar todas las AMI públicas**  
El siguiente comando muestra todas las AMI públicas, incluidas aquellas de su propiedad.

```
Get-EC2Image -ExecutableUser all
```

**Para enumerar las AMI con permisos de lanzamiento explícitos**  
El siguiente comando muestra las AMI para las que tiene permisos de inicialización explícitos. Esta lista no incluye las AMI de su propiedad.

```
Get-EC2Image -ExecutableUser self
```

**Para enumerar las AMI propiedad de proveedores verificados**  
El siguiente comando enumera las AMI propiedad de [proveedores verificados](sharing-amis.md#verified-ami-provider). Las AMI públicas propiedad de proveedores verificados (Amazon o socios verificados) tienen un propietario con alias, el cual aparece como `amazon`, `aws-backup-vault` o `aws-marketplace` en el campo de cuenta. Esto le permite encontrar AMI de proveedores verificados fácilmente. Otros usuarios no pueden asociar las AMI.

```
Get-EC2Image -Owner amazon aws-marketplace
```

**Para enumerar las AMI propiedad de una cuenta**  
El siguiente comando muestra las AMI que son propiedad de la Cuenta de AWS especificada.

```
Get-EC2Image -Owner 123456789012
```

**Para acotar las AMI mediante un filtro**  
Para reducir el número de AMI que se muestran, utilice un filtro para mostrar solo los tipos de AMI que le interesen. Por ejemplo, utilice el siguiente filtro para mostrar solo las AMI respaldadas por EBS.

```
-Filter @{Name="root-device-type"; Values="ebs"}
```

------

# Preparación para utilizar AMI compartidas para Linux
<a name="usingsharedamis-confirm"></a>

Antes de usar una AMI compartida para Linux, siga estos pasos para confirmar que no hay credenciales preinstaladas que pudieran permitir un acceso no deseado a la instancia por parte de terceros ni registros remotos preconfigurados que pudieran transmitir información confidencial a terceros. Consulte la documentación de la distribución de Linux utilizada por la AMI para obtener información sobre cómo mejorar la seguridad del sistema.

Para garantizar que no pierda acceso a la instancia de manera accidental, le recomendamos que inicie dos sesiones de SSH y que mantenga la segunda de ellas abierta hasta que haya eliminado las credenciales que no reconozca y comprobado que sigue pudiendo iniciar sesión en la instancia a través de SSH.

1. Identificación y deshabilitación de claves SSH públicas no autorizadas. La única clave del archivo debería ser la que usó para iniciar la AMI. El siguiente comando localiza los archivos `authorized_keys`:

   ```
   [ec2-user ~]$ sudo find / -name "authorized_keys" -print -exec cat {} \;
   ```

1. Deshabilitación de autenticación mediante contraseña para el usuario raíz. Abra el archivo `sshd_config` y edite la línea `PermitRootLogin` del modo siguiente:

   ```
   PermitRootLogin without-password
   ```

   También puede deshabilitar la opción iniciar sesión en la instancia como el usuario raíz:

   ```
   PermitRootLogin No
   ```

   Reinicie el servicio sshd.

1. Verifique si existe algún otro usuario que pueda iniciar sesión en la instancia. Los usuarios con privilegios de superusuario son particularmente peligrosos. Elimine o bloquee la contraseña de cualquier cuenta desconocida.

1. Verifique si hay puertos abiertos que no esté utilizando y servicios de red en ejecución que escuchen conexiones entrantes.

1. Para evitar registros remotos preconfigurados, debe eliminar el archivo de configuración existente y reiniciar el servicio `rsyslog`. Por ejemplo:

   ```
   [ec2-user ~]$ sudo rm /etc/rsyslog.conf
   [ec2-user ~]$ sudo service rsyslog restart
   ```

1. Verifique que todos los trabajos cron son legítimos.

Si descubre una AMI pública que considere que podría suponer un riesgo para la seguridad, contacte con el equipo de seguridad de AWS. Para obtener más información, consulte el [ Centro de seguridad de AWS](https://aws.amazon.com/security/).

# Controle el descubrimiento y el uso de las AMI en Amazon EC2 con las AMI permitidas
<a name="ec2-allowed-amis"></a>

Para controlar el descubrimiento y el uso de las Imágenes de máquina de Amazon (AMI) por parte de los usuarios de la Cuenta de AWS, puede utilizar la característica *AMI permitidas*. Usted especifica los criterios que las AMI deben cumplir para estar visibles y disponibles en la cuenta. Cuando los criterios están habilitados, los usuarios que lancen instancias solo verán las AMI que cumplan con los criterios especificados, y únicamente tendrán acceso a estas. Por ejemplo, puede especificar una lista de proveedores de AMI de confianza como criterio y solo las AMI de estos proveedores estarán visibles y disponibles para ser utilizadas.

Antes de habilitar la configuración de AMI permitidas, puede habilitar el *modo de auditoría* para obtener una vista previa de las AMI que estarán o no visibles y disponibles para ser utilizadas. Esto permite ajustar los criterios según sea necesario para garantizar que solo las AMI previstas estén visibles y disponibles para los usuarios de la cuenta. Además, utilice el comando [describe-instance-image-metadata](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html) para buscar las instancias que se hayan lanzado con AMI que no cumplan los criterios especificados. Esta información puede fundamentar su decisión para determinar si actualizar las configuraciones de lanzamiento para usar AMI compatibles (por ejemplo, especificar una AMI diferente en una plantilla de lanzamiento) o ajustar los criterios para permitir estas AMI.

Especifica la configuración de AMI permitidas a nivel de cuenta, ya sea directamente en la cuenta o mediante una política declarativa. Estos ajustes se deben configurar en cada Región de AWS en la que desee controlar el uso de AMI. El uso de una política declarativa permite aplicar la configuración en varias regiones simultáneamente, así como en varias cuentas simultáneamente. Cuando se utiliza una política declarativa, no se puede modificar la configuración directamente en una cuenta. En este tema se describe cómo configurar el ajuste directamente dentro de una cuenta. Para obtener información sobre el uso de políticas declarativas, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) en la *Guía del usuario de AWS Organizations*.

**nota**  
La característica AMI permitidas solo controla la detección y el uso de las AMI públicas o las AMI compartidas con la cuenta. No restringe las AMI propiedad de la cuenta. Independientemente de los criterios que establezca, los usuarios de la cuenta siempre pueden detectar y utilizar las AMI creadas por la cuenta.

**Principales ventajas de la característica AMI permitidas**
+ **Cumplimiento y seguridad**: los usuarios solo pueden descubrir y utilizar las AMI que cumplan los criterios especificados, lo que reduce el riesgo del uso no conforme de las AMI.
+ **Administración eficiente**: al reducir la cantidad de AMI permitidas, resulta más fácil y eficiente administrar las restantes.
+ **Implementación centralizada a nivel de cuenta**: configure los ajustes de AMI permitidas a nivel de cuenta, ya sea directamente dentro de la cuenta o mediante una política declarativa. Esto proporciona una forma centralizada y eficiente de controlar el uso de AMI en toda la cuenta.

**Topics**
+ [Cómo funciona la característica AMI permitidas](#how-allowed-amis-works)
+ [Prácticas recomendadas para implementar la característica AMI permitidas](#best-practice-for-implementing-allowed-amis)
+ [Permisos de IAM necesarios](#iam-permissions-for-allowed-amis)
+ [Administración de la configuración de las AMI permitidas](manage-settings-allowed-amis.md)

## Cómo funciona la característica AMI permitidas
<a name="how-allowed-amis-works"></a>

Para controlar qué AMI se pueden descubrir y usar en la cuenta, se define un conjunto de criterios con los cuales evaluar las AMI. Los criterios se componen de uno o más `ImageCriterion`, como se muestra en el siguiente diagrama. A continuación del diagrama se presenta una explicación.

![\[Jerarquía de configuración de ImageCriteria de AMI permitidas.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ami_allowed-amis-imagecriteria.png)


La configuración tiene tres niveles:
+ **1** – valores de parámetros
  + Parámetros con varios valores:
    + `ImageProviders`
    + `ImageNames`
    + `MarketplaceProductCodes`

      Una AMI puede coincidir con *cualquiera* de los valores dentro de un parámetro para que se permita.

      Ejemplo: `ImageProviders` = `amazon` **O** cuenta `111122223333` **O** cuenta `444455556666` (La lógica de evaluación de los valores de los parámetros no se muestra en el diagrama).
  + Parámetros de un solo valor:
    + `CreationDateCondition`
    + `DeprecationTimeCondition`
+ **2**: `ImageCriterion`
  + Agrupa varios parámetros con la lógica **AND**.
  + Una AMI debe coincidir con *todos* los parámetros dentro de una `ImageCriterion` para que se permita.
  + Ejemplo: `ImageProviders` = `amazon` **AND** `CreationDateCondition` = 300 días o menos
+ **3**: `ImageCriteria`
  + Agrupa varios `ImageCriterion` con lógica **OR**.
  + Una AMI puede coincidir con *cualquier* `ImageCriterion` para que se permita.
  + Constituye la configuración completa con la cual se evalúan las AMI. 

**Topics**
+ [Parámetros de AMI permitidas](#allowed-amis-criteria)
+ [Configuración de AMI permitidas](#allowed-amis-json-configuration)
+ [Cómo se evalúan los criterios](#how-allowed-amis-criteria-are-evaluated)
+ [Límites](#allowed-amis-json-configuration-limits)
+ [Operaciones de AMI permitidas](#allowed-amis-operations)

### Parámetros de AMI permitidas
<a name="allowed-amis-criteria"></a>

Los siguientes parámetros se pueden configurar para crear `ImageCriterion`:

`ImageProviders`  
Los proveedores de AMI cuyas AMI están permitidas.  
Los valores válidos son los alias definidos por AWS, y los ID de Cuenta de AWS, de la siguiente manera:  
+ `amazon`: un alias que identifica las AMI creadas por Amazon o proveedores verificados
+ `aws-marketplace`: un alias que identifica las AMI creadas por proveedores verificados en el AWS Marketplace
+ `aws-backup-vault`: un alias que identifica las AMI de copia de seguridad que residen en cuentas de almacenes aislados lógicamente de AWS Backup. Si utiliza la característica de almacén aislado lógicamente de AWS Backup, asegúrese de incluir este alias como proveedor de AMI.
+ Identificadores de Cuenta de AWS: uno o más identificadores de Cuenta de AWS de 12 dígitos
+ `none`: indica que solo se pueden descubrir y utilizar las AMI creadas por la cuenta. Las AMI públicas o compartidas no se pueden detectar ni utilizar. Cuando se especifica, no se puede especificar ningún otro criterio.

`ImageNames`  
Los nombres de las AMI permitidas, con coincidencias exactas o caracteres comodín (`?` o `*`).

`MarketplaceProductCodes`  
Los códigos de producto de AWS Marketplace de las AMI permitidas.

`CreationDateCondition`  
La antigüedad máxima de las AMI permitidas.

`DeprecationTimeCondition`  
El período máximo desde la obsolescencia de las AMI permitidas.

Para conocer los valores válidos y las restricciones de cada criterio, consulte [ImageCriterionRequest](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImageCriterionRequest.html) en la *Referencia de la API de Amazon EC2*.

### Configuración de AMI permitidas
<a name="allowed-amis-json-configuration"></a>

La configuración principal de las AMI permitidas es la configuración de `ImageCriteria` que define los criterios para las AMI permitidas. La siguiente estructura JSON muestra los parámetros que se pueden especificar:

```
{
    "State": "enabled" | "disabled" | "audit-mode",  
    "ImageCriteria" : [
        {
            "ImageProviders": ["string",...],
            "MarketplaceProductCodes": ["string",...],           
            "ImageNames":["string",...],
            "CreationDateCondition" : {
                "MaximumDaysSinceCreated": integer
            },
            "DeprecationTimeCondition" : {
                "MaximumDaysSinceDeprecated": integer
            }
         },
         ...
}
```

#### Ejemplo de ImageCriteria
<a name="allowed-amis-json-configuration-example"></a>

En el siguiente ejemplo de `ImageCriteria` se configuran cuatro `ImageCriterion`. Se permite una AMI si coincide con alguno de estos `ImageCriterion`. Para obtener información sobre cómo se evalúan los criterios, consulte [Cómo se evalúan los criterios](#how-allowed-amis-criteria-are-evaluated).

```
{
    "ImageCriteria": [
        // ImageCriterion 1: Allow AWS Marketplace AMIs with product code "abcdefg1234567890"
        {
            "MarketplaceProductCodes": [
                "abcdefg1234567890"
            ]
        },
        // ImageCriterion 2: Allow AMIs from providers whose accounts are
        // "123456789012" OR "123456789013" AND AMI age is less than 300 days
        {
            "ImageProviders": [
                "123456789012",
                "123456789013"
            ],
            "CreationDateCondition": {
                "MaximumDaysSinceCreated": 300
            }
        },
        // ImageCriterion 3: Allow AMIs from provider whose account is "123456789014" 
        // AND with names following the pattern "golden-ami-*"
        {
            "ImageProviders": [
                "123456789014"
            ],
            "ImageNames": [
                "golden-ami-*"
            ]
        },
        // ImageCriterion 4: Allow AMIs from Amazon or verified providers 
        // AND which aren't deprecated
        {
            "ImageProviders": [
                "amazon"
            ],
            "DeprecationTimeCondition": {
                "MaximumDaysSinceDeprecated": 0
            }
        }
    ]
}
```

### Cómo se evalúan los criterios
<a name="how-allowed-amis-criteria-are-evaluated"></a>

La siguiente tabla explica las reglas de evaluación que determinan si una AMI está permitida, y muestra cómo se aplica el operador `AND` o `OR` en cada nivel:


| Nivel de evaluación | Operador | Requisito para que se permita una AMI | 
| --- | --- | --- | 
| Valores de parámetros para ImageProviders, ImageNames y MarketplaceProductCodes | OR | La AMI debe coincidir con al menos un valor en cada lista de parámetros | 
| ImageCriterion | AND | La AMI debe coincidir con todos los parámetros en cada ImageCriterion | 
| ImageCriteria | OR | La AMI debe coincidir con cualquiera de los ImageCriterion | 

Utilicemos las reglas de evaluación anteriores para ver cómo aplicarlas a [Ejemplo de ImageCriteria](#allowed-amis-json-configuration-example):
+ `ImageCriterion` 1: permite las AMI que tienen el código de producto `abcdefg1234567890` de AWS Marketplace

  `OR`
+ `ImageCriterion` 2: permite las AMI que cumplen estos dos criterios:
  + Propiedad de cualquiera de las cuentas `123456789012` `OR` `123456789013`
    + `AND`
  + Creada en los últimos 300 días

  `OR`
+ `ImageCriterion` 3: permite las AMI que cumplen estos dos criterios:
  + Propiedad de la cuenta `123456789014`
    + `AND`
  + Nombrada con el patrón `golden-ami-*`

  `OR`
+ `ImageCriterion` 4: permite las AMI que cumplen estos dos criterios:
  + Publicada por Amazon o proveedores verificados (especificados por el alias `amazon`)
    + `AND`
  + No está en desuso (el número máximo de días transcurridos desde la obsolescencia es `0`)

### Límites
<a name="allowed-amis-json-configuration-limits"></a>

El `ImageCriteria` puede incluir hasta:
+ 10 `ImageCriterion`

Cada `ImageCriterion` puede incluir hasta:
+ 200 valores para `ImageProviders`
+ 50 valores para `ImageNames` 
+ 50 valores para `MarketplaceProductCodes` 

**Ejemplo de límites**

Si utilizamos el [Ejemplo de ImageCriteria](#allowed-amis-json-configuration-example) anterior:
+ Hay 4 `ImageCriterion`. Se pueden agregar hasta 6 más a la solicitud para alcanzar el límite de 10.
+ En el primer `ImageCriterion`, hay 1 valor para `MarketplaceProductCodes`. Se pueden agregar hasta 49 más a este `ImageCriterion` para alcanzar el límite de 50.
+ En el segundo `ImageCriterion`, hay 2 valores para `ImageProviders`. Se pueden agregar hasta 198 más a este `ImageCriterion` para alcanzar el límite de 200.
+ En el tercer `ImageCriterion`, hay 1 valor para `ImageNames`. Se pueden agregar hasta 49 más a este `ImageCriterion` para alcanzar el límite de 50.

### Operaciones de AMI permitidas
<a name="allowed-amis-operations"></a>

La característica de AMI permitidas tiene tres estados operativos para administrar los criterios de imágenes: **habilitada**, **desactivada** y **modo auditoría**. Con estos es posible habilitar o desactivar los criterios de imágenes, así como revisarlos según sea necesario.

**Habilitado**

Cuando AMI permitidas se encuentra habilitada: 
+ Se aplican los `ImageCriteria`.
+ Solo se pueden detectar AMI permitidas en la consola de EC2 y por las API que utilizan imágenes (por ejemplo, que describen, copian, almacenan o realizan otras acciones que utilizan imágenes).
+ Las instancias solo se pueden lanzar con las AMI permitidas.

**Deshabilitado**

Cuando AMI permitidas se encuentra desactivada: 
+ No se aplican los `ImageCriteria`.
+ No se imponen restricciones a la capacidad de detección o uso de las AMI. 

**Modo de auditoría**

 En el modo de auditoría:
+ Los `ImageCriteria` se aplican, pero no se imponen restricciones a la capacidad de detección o uso de las AMI.
+ En la consola de EC2, para cada AMI, el campo **Imagen permitida** muestra **Sí** o **No** para indicar si la AMI se podrá detectar y estará disponible para los usuarios de la cuenta cuando la característica AMI permitidas esté habilitada.
+ En la línea de comandos, la respuesta a la operación `describe-image` incluye `"ImageAllowed": true` o `"ImageAllowed": false` para indicar si la AMI podrá ser detectada y estará disponible para los usuarios de la cuenta cuando si la característica AMI permitidas está habilitada.
+ En la consola de EC2, el catálogo de AMI muestra **No permitida** junto a las AMI que no podrán detectar los usuarios de la cuenta y no estarán disponibles para ellos cuando la característica AMI permitidas esté habilitada.

## Prácticas recomendadas para implementar la característica AMI permitidas
<a name="best-practice-for-implementing-allowed-amis"></a>

Al implementar AMI permitidas, tenga en cuenta estas prácticas recomendadas para garantizar una transición fluida y minimizar las posibles interrupciones en el entorno de AWS.

1. **Cómo habilitar el modo de auditoría**

   Comience por habilitar la característica AMI permitidas en el modo de auditoría. Este estado permite ver qué AMI se verían afectadas por los criterios sin restringir realmente el acceso, lo que proporciona un período de evaluación sin riesgos.

1. **Establezca los criterios de AMI permitidas**

   Establezca cuidadosamente qué proveedores de AMI se alinean con las políticas de seguridad, los requisitos de cumplimiento y las necesidades operativas de la organización.
**nota**  
Cuando utilice servicios administrados de AWS como Amazon ECS, Amazon EKS o Lambda Managed Instances de AWS, le recomendamos que especifique el alias `amazon` para permitir las AMI creadas por AWS. Estos servicios dependen de las AMI publicadas por Amazon para ejecutar instancias.   
Tenga cuidado cuando establezca restricciones de `CreationDateCondition` para cualquier AMI. Establecer condiciones de fecha demasiado restrictivas (por ejemplo, las AMI deben tener menos de 5 días de antigüedad) puede provocar errores en la ejecución de las instancias si las AMI, ya sean de AWS o de otros proveedores, no se actualizan en el plazo especificado.  
Recomendamos combinar `ImageNames` con `ImageProviders` para mejorar el control y la especificidad. Es posible que el uso de `ImageNames` por sí solo no identifique exclusivamente una AMI.

1. **Compruebe el impacto en los procesos empresariales esperados**

   Puede usar la consola o la CLI para identificar cualquier instancia que se haya lanzado con AMI que no cumplan los criterios especificados. Esta información puede fundamentar su decisión para determinar si actualizar las configuraciones de lanzamiento para usar AMI compatibles (por ejemplo, especificar una AMI diferente en una plantilla de lanzamiento) o ajustar los criterios para permitir estas AMI.

   Consola: utilice la regla de AWS Config [ec2-instance-launched-with-allowed-ami](https://docs.aws.amazon.com/config/latest/developerguide/ec2-instance-launched-with-allowed-ami.html) para comprobar si las instancias en ejecución o detenidas se lanzaron con AMI que cumplen los criterios de las AMI permitidas. La regla es **NON\$1COMPLIANT** si una AMI no cumple los criterios de las AMI permitidas y **COMPLIANT** si los cumple. La regla solo funciona cuando la configuración de las AMI permitidas está establecida en **habilitada** o en **modo de auditoría**.

   CLI: ejecute el comando [describe-instance-image-metadata](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html) y filtre la respuesta para identificar cualquier instancia que se haya lanzado con AMI que no cumplan los criterios especificados.

   Para obtener instrucciones sobre la consola y la CLI, consulte [Búsqueda de instancias lanzadas desde AMI no permitidas](manage-settings-allowed-amis.md#identify-instances-with-allowed-AMIs).

1. **Cómo habilitar AMI permitidas**

   Una vez que haya confirmado que los criterios no afectarán negativamente a los procesos empresariales esperados, habilite AMI permitidas.

1. **Supervise los lanzamientos de instancias**

   Continue con la supervisión de los lanzamientos de instancias desde AMI en las aplicaciones y los servicios administrados por AWS que utilice, como Amazon EMR, Amazon ECR, Amazon EKS y AWS Elastic Beanstalk. Compruebe si hay algún problema inesperado y realice los ajustes necesarios en los criterios de la característica AMI permitidas.

1. **Prueba piloto de AMI nuevas**

   Para probar las AMI de terceros que no cumplan con la configuración actual de las AMI permitidas, AWS sugiere los siguientes métodos:
   + Utilice una Cuenta de AWS distinta: cree una cuenta que no tenga acceso a los recursos fundamentales para la empresa. Asegúrese de que la configuración de las AMI permitidas no esté habilitada en esta cuenta o de que las AMI que desee probar estén permitidas de forma explícita para poder probarlas. 
   + Realice la prueba en otra Región de AWS: utilice una región en la que estén disponibles las AMI de terceros, pero en la que aún no haya habilitado la configuración de las AMI permitidas. 

   Estos métodos ayudan a garantizar la seguridad de los recursos fundamentales para la empresa mientras se prueban las nuevas AMI.

## Permisos de IAM necesarios
<a name="iam-permissions-for-allowed-amis"></a>

Para utilizar la característica AMI permitidas, necesitará los siguientes permisos de IAM:
+ `GetAllowedImagesSettings`
+ `EnableAllowedImagesSettings`
+ `DisableAllowedImagesSettings`
+ `ReplaceImageCriteriaInAllowedImagesSettings`

# Administración de la configuración de las AMI permitidas
<a name="manage-settings-allowed-amis"></a>

Puede administrar la configuración de las AMI permitidas. Estos ajustes son por región y por cuenta.

**Topics**
+ [Habilite AMI permitidas](#enable-allowed-amis-criteria)
+ [Definición de los criterios de AMI permitidas](#update-allowed-amis-criteria)
+ [Cómo desactivar AMI permitidas](#disable-allowed-amis-criteria)
+ [Obtención de los criterios de AMI permitidas](#identify-allowed-amis-state-and-criteria)
+ [Búsqueda de las AMI permitidas](#identify-amis-that-meet-allowed-amis-criteria)
+ [Búsqueda de instancias lanzadas desde AMI no permitidas](#identify-instances-with-allowed-AMIs)

## Habilite AMI permitidas
<a name="enable-allowed-amis-criteria"></a>

Puede habilitar las AMI permitidas y especificar los criterios de AMI permitidas. Le recomendamos que comience en el modo de auditoría, que muestra qué AMI se verían afectadas por los criterios sin restringir realmente el acceso.

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

**Para habilitar AMI permitidas**

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 **Panel**.

1. En la tarjeta **Atributos de la cuenta**, en **Configuración**, elija **AMI permitidas**.

1. En la pestaña **AMI permitidas**, elija **Administrar**.

1. En **Configuración de AMI permitidas**, seleccione **Modo de auditoría** o **Habilitado**. Le recomendamos que comience en el modo de auditoría, pruebe los criterios y, luego, vuelva a este paso para habilitar las AMI permitidas.

1. (Opcional) En **Criterios de AMI**, especifique los criterios en formato JSON.

1. Elija **Actualizar**.

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

**Para habilitar AMI permitidas**  
Utilice el comando [enable-allowed-images-settings](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-allowed-images-settings.html).

```
aws ec2 enable-allowed-images-settings --allowed-images-settings-state enabled
```

Para habilitar el modo de auditoría en su lugar, especifique `audit-mode` en lugar de `enabled`.

```
aws ec2 enable-allowed-images-settings --allowed-images-settings-state audit-mode
```

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

**Para habilitar AMI permitidas**  
Utilice el cmdlet [Enable-EC2AllowedImagesSetting](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2AllowedImagesSetting.html).

```
Enable-EC2AllowedImagesSetting -AllowedImagesSettingsState enabled
```

Para habilitar el modo de auditoría en su lugar, especifique `audit-mode` en lugar de `enabled`.

```
Enable-EC2AllowedImagesSetting -AllowedImagesSettingsState audit-mode
```

------

## Definición de los criterios de AMI permitidas
<a name="update-allowed-amis-criteria"></a>

Después de habilitar las AMI permitidas, puede establecer o reemplazar los criterios de las AMI permitidas.

Para conocer la configuración correcta y los valores válidos, consulte [Configuración de AMI permitidas](ec2-allowed-amis.md#allowed-amis-json-configuration) y .[Parámetros de AMI permitidas](ec2-allowed-amis.md#allowed-amis-criteria)

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

**Definición de los criterios de las AMI permitidas**

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 **Panel**.

1. En la tarjeta **Atributos de la cuenta**, en **Configuración**, elija **AMI permitidas**.

1. En la pestaña **AMI permitidas**, elija **Administrar**.

1. En **Criterios de AMI**, especifique los criterios en formato JSON.

1. Elija **Actualizar**.

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

**Definición de los criterios de las AMI permitidas**  
Utilice el comando [replace-image-criteria-in-allowed-images-settings](https://docs.aws.amazon.com/cli/latest/reference/ec2/replace-image-criteria-in-allowed-images-settings.html) y especifique el archivo JSON que contiene los criterios de las AMI permitidas.

```
aws ec2 replace-image-criteria-in-allowed-images-settings --cli-input-json file://file_name.json
```

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

**Definición de los criterios de las AMI permitidas**  
Utilice el cmdlet [Set-EC2ImageCriteriaInAllowedImagesSetting](https://docs.aws.amazon.com/powershell/latest/reference/items/Set-EC2ImageCriteriaInAllowedImagesSetting.html) y especifique el archivo JSON que contiene los criterios de las AMI permitidas.

```
$imageCriteria = Get-Content -Path .\file_name.json | ConvertFrom-Json
Set-EC2ImageCriteriaInAllowedImagesSetting -ImageCriterion $imageCriteria
```

------

## Cómo desactivar AMI permitidas
<a name="disable-allowed-amis-criteria"></a>

Puede deshabilitar las AMI permitidas de la siguiente manera.

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

**Para desactivar AMI permitidas**

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 **Panel**.

1. En la tarjeta **Atributos de la cuenta**, en **Configuración**, elija **AMI permitidas**.

1. En la pestaña **AMI permitidas**, elija **Administrar**.

1. En la **Configuración de AMI permitidas**, seleccione **Desactivada**.

1. Elija **Actualizar**.

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

**Para desactivar AMI permitidas**  
Utilice el comando [disable-allowed-images-settings](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-allowed-images-settings.html).

```
aws ec2 disable-allowed-images-settings
```

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

**Para desactivar AMI permitidas**  
Utilice el cmdlet [Disable-EC2AllowedImagesSetting](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2AllowedImagesSetting.html).

```
Disable-EC2AllowedImagesSetting
```

------

## Obtención de los criterios de AMI permitidas
<a name="identify-allowed-amis-state-and-criteria"></a>

Puede obtener el estado actual de la configuración de las AMI permitidas y los criterios de las AMI permitidas.

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

**Obtención del estado y los criterios de las AMI permitidas**

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 **Panel**.

1. En la tarjeta **Atributos de la cuenta**, en **Configuración**, elija **AMI permitidas**.

1. En la pestaña **AMI permitidas**, la opción **Configuración de AMI permitidas** está establecida en **Habilitado**, **Deshabilitado** o **Modo de auditoría**.

1. Si el estado de las AMI permitidas es **Habilitado** o **Modo de auditoría**, **Criterios de AMI** muestra los criterios de la AMI en formato JSON.

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

**Obtención del estado y los criterios de las AMI permitidas**  
Utilice el comando [get-allowed-images-settings](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-allowed-images-settings.html).

```
aws ec2 get-allowed-images-settings
```

En el siguiente resultado de ejemplo, el estado es `audit-mode` y los criterios de imágenes están establecidos en la cuenta.

```
{
    "State": "audit-mode",
    "ImageCriteria": [
        {
            "MarketplaceProductCodes": [
                "abcdefg1234567890"
            ]
        },
        {
            "ImageProviders": [
                "123456789012",
                "123456789013"
            ],
            "CreationDateCondition": {
                "MaximumDaysSinceCreated": 300
            }
        },
        {
            "ImageProviders": [
                "123456789014"
            ],
            "ImageNames": [
                "golden-ami-*"
            ]
        },
        {
            "ImageProviders": [
                "amazon"
            ],
            "DeprecationTimeCondition": {
                "MaximumDaysSinceDeprecated": 0
            }
        }
    ],
    "ManagedBy": "account"
}
```

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

**Obtención del estado y los criterios de las AMI permitidas**  
Utilice el cmdlet [Get-EC2AllowedImagesSetting](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2AllowedImagesSetting.html).

```
Get-EC2AllowedImagesSetting | Select-Object `
    State, `
    ManagedBy, `
    @{Name='ImageProviders'; Expression={($_.ImageCriteria.ImageProviders)}}, `
    @{Name='MarketplaceProductCodes'; Expression={($_.ImageCriteria.MarketplaceProductCodes)}}, `
    @{Name='ImageNames'; Expression={($_.ImageCriteria.ImageNames)}}, `
    @{Name='MaximumDaysSinceCreated'; Expression={($_.ImageCriteria.CreationDateCondition.MaximumDaysSinceCreated)}}, `
    @{Name='MaximumDaysSinceDeprecated'; Expression={($_.ImageCriteria.DeprecationTimeCondition.MaximumDaysSinceDeprecated)}}
```

En el siguiente resultado de ejemplo, el estado es `audit-mode` y los criterios de imágenes están establecidos en la cuenta.

```
State      : audit-mode
ManagedBy  : account
ImageProviders            : {123456789012, 123456789013, 123456789014, amazon}
MarketplaceProductCodes   : {abcdefg1234567890}
ImageNames                : {golden-ami-*}
MaximumDaysSinceCreated  : 300
MaximumDaysSinceDeprecated: 0
```

------

## Búsqueda de las AMI permitidas
<a name="identify-amis-that-meet-allowed-amis-criteria"></a>

Puede buscar las AMI permitidas y las no permitidas según los criterios de AMI permitidas actuales.

**nota**  
Las AMI permitidas deben estar en modo de auditoría.

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

**Comprobación de si una AMI cumple los criterios de AMI permitidas**

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 **AMIs**.

1. Seleccione la AMI.

1. En la pestaña **Detalles** (si ha seleccionado la casilla de verificación) o en el área de resumen (si ha seleccionado el ID de AMI), busque el campo **Imagen permitida**.
   + **Sí**: la AMI cumple los criterios de AMI permitidas. Esta AMI estará disponible para los usuarios de la cuenta después de que habilite las AMI permitidas.
   + **No**: la AMI no cumple los criterios de AMI permitidas.

1. En el panel de navegación, elija **Catálogo de AMI**.

   Cuando una AMI está marcada con **No permitida**, significa que no cumple los criterios de AMI permitidas. Esta AMI no estará visible ni disponible para los usuarios de la cuenta cuando AMI permitidas esté habilitada.

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

**Comprobación de si una AMI cumple los criterios de AMI permitidas**  
Utilice el comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) .

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query Images[].ImageAllowed \
    --output text
```

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

```
True
```

**Búsqueda de las AMI que cumplen los criterios de AMI permitidas**  
Utilice el comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) .

```
aws ec2 describe-images \
    --filters "Name=image-allowed,Values=true" \
    --max-items 10 \
    --query Images[].ImageId
```

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

```
ami-000eaaa8be2fd162a
ami-000f82db25e50de8e
ami-000fc21eb34c7a9a6
ami-0010b876f1287d7be
ami-0010b929226fe8eba
ami-0010957836340aead
ami-00112c992a47ba871
ami-00111759e194abcc1
ami-001112565ffcafa5e
ami-0011e45aaee9fba88
```

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

**Comprobación de si una AMI cumple los criterios de AMI permitidas**  
Utilice el cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).ImageAllowed
```

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

```
True
```

**Búsqueda de las AMI que cumplen los criterios de AMI permitidas**  
Utilice el cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
Get-EC2Image `
    -Filter @{Name="image-allows";Values="true"} `
    -MaxResult 10 | `
    Select ImageId
```

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

```
ami-000eaaa8be2fd162a
ami-000f82db25e50de8e
ami-000fc21eb34c7a9a6
ami-0010b876f1287d7be
ami-0010b929226fe8eba
ami-0010957836340aead
ami-00112c992a47ba871
ami-00111759e194abcc1
ami-001112565ffcafa5e
ami-0011e45aaee9fba88
```

------

## Búsqueda de instancias lanzadas desde AMI no permitidas
<a name="identify-instances-with-allowed-AMIs"></a>

Puede identificar las instancias que se lanzaron con una AMI que no cumple los criterios de AMI permitidas.

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

**Comprobación de si una instancia se lanzó con una AMI que no es permitida**

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 **Imagen permitida**.
   + **Sí**: la AMI cumple los criterios de AMI permitidas.
   + **No**: la AMI no cumple los criterios de AMI permitidas.

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

**Búsqueda de instancias lanzadas desde AMI no permitidas**  
Utilice el comando [describe-instance-image-metadata](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html) con el filtro `image-allowed`.

```
aws ec2 describe-instance-image-metadata \
    --filters "Name=image-allowed,Values=false" \
    --query "InstanceImageMetadata[*].[InstanceId,ImageMetadata.ImageId]" \
    --output table
```

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

```
--------------------------------------------------
|          DescribeInstanceImageMetadata         |
+----------------------+-------------------------+
|  i-08fd74f3f1595fdbd |  ami-09245d5773578a1d6  |
|  i-0b1bf24fd4f297ab9 |  ami-07cccf2bd80ed467f  |
|  i-026a2eb590b4f7234 |  ami-0c0ec0a3a3a4c34c0  |
|  i-006a6a4e8870c828f |  ami-0a70b9d193ae8a799  |
|  i-0781e91cfeca3179d |  ami-00c257e12d6828491  |
|  i-02b631e2a6ae7c2d9 |  ami-0bfddf4206f1fa7b9  |
+----------------------+-------------------------+
```

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

**Búsqueda de instancias lanzadas desde AMI no permitidas**  
Utilice el cmdlet [Get-EC2InstanceImageMetadata](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceImageMetadata.html).

```
Get-EC2InstanceImageMetadata `
    -Filter @{Name="image-allowed";Values="false"} | `
    Select InstanceId, @{Name='ImageId'; Expression={($_.ImageMetadata.ImageId)}}
```

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

```
InstanceId          ImageId
----------          -------
i-08fd74f3f1595fdbd ami-09245d5773578a1d6
i-0b1bf24fd4f297ab9 ami-07cccf2bd80ed467f
i-026a2eb590b4f7234 ami-0c0ec0a3a3a4c34c0
i-006a6a4e8870c828f ami-0a70b9d193ae8a799
i-0781e91cfeca3179d ami-00c257e12d6828491
i-02b631e2a6ae7c2d9 ami-0bfddf4206f1fa7b9
```

------
#### [ AWS Config ]

Puede agregar la regla **ec2-instance-launched-with-allowed-ami** de AWS Config, configurarla según sus requisitos y, a continuación, usarla para evaluar las instancias.

Para obtener más información, consulte [Añadir reglas AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_add-rules.html) y [ec2-instance-launched-with-allowed-ami](https://docs.aws.amazon.com/config/latest/developerguide/ec2-instance-launched-with-allowed-ami.html) en la *Guía para desarrolladores de AWS Config*.

------

# Publicación de la AMI para utilizarla en Amazon EC2
<a name="sharingamis-intro"></a>

Puede hacer que su AMI esté disponible públicamente y compartirla con todas las Cuentas de AWS.

Si desea impedir que sus AMI se compartan públicamente, habilite el *bloqueo del acceso público de las AMI*. Esto bloquea cualquier intento de hacer pública una AMI, lo que ayuda a prevenir el acceso no autorizado y el posible uso indebido de los datos de la AMI. Tenga en cuenta que la habilitación del bloqueo del acceso público no afecta a las AMI que ya están disponibles públicamente y que permanecerán en ese estado. Para obtener más información, consulte [Descripción del bloqueo del acceso público de las AMI](block-public-access-to-amis.md).

Para permitir que solo cuentas específicas utilicen su AMI para iniciar instancias, consulte [Compartir una AMI con cuentas de AWS específicas](sharingamis-explicit.md).

**Topics**
+ [Consideraciones](#considerations-for-sharing-public-AMIs)
+ [Compartir una AMI con todas las cuentas de AWS (compartir públicamente)](#share-an-ami-publicly)

## Consideraciones
<a name="considerations-for-sharing-public-AMIs"></a>

Tenga en cuenta lo siguiente antes de hacer pública una AMI.
+ **Propiedad**: para hacer pública una AMI, su Cuenta de AWS debe ser la propietaria de esta.
+ **Región**: las AMI son un recurso regional. Cuando comparte una AMI, solo está disponible en la región desde donde la compartió. Para hacer que una AMI esté disponible en una región distinta, copie la AMI en dicha región y, a continuación, compártala. Para obtener más información, consulte [Copia de una AMI de Amazon EC2](CopyingAMIs.md).
+ **bloqueo del acceso público**: para compartir públicamente una AMI, debe deshabilitar el [bloqueo del acceso público de las AMI](block-public-access-to-amis.md) en cada región en la que la AMI se compartirá públicamente. Una vez que haya compartido la AMI públicamente, puede volver a habilitar el bloqueo del acceso público de las AMI para evitar que se sigan compartiendo públicamente.
+ **Algunas AMI no se pueden hacer públicas**: si su AMI tiene alguno de los siguientes componentes, no puede hacerla pública (pero puede [compartir la AMI con Cuentas de AWS específicas](sharingamis-explicit.md)):
  + Volúmenes cifrados
  + Instantáneas de volúmenes cifrados
  + Códigos de producto
+ **Evite exponer información confidencial**: para evitar exponer información confidencial al compartir una AMI, lea las consideraciones de seguridad disponibles en [Recomendaciones para crear AMI compartidas de Linux](building-shared-amis.md) y realice las acciones recomendadas.
+ **Uso**: cuando comparte una AMI, los usuarios solo pueden iniciar instancias desde la AMI. No pueden eliminarla, compartirla ni modificarla. Sin embargo, después de iniciar una instancia mediante la AMI, pueden crear una AMI a partir de esa instancia.
+ **Obsolescencia automática**: de forma predeterminada, la fecha de obsolescencia de todas las AMI públicas se establece en dos años a partir de la fecha de creación de la AMI. Puede establecer una fecha de obsolescencia anterior a los dos años. Para anular la fecha de obsolescencia o para aplazarla, debe hacer que la AMI sea privada. Para ello, [compártala solo con Cuentas de AWS específicas](sharingamis-explicit.md).
+ **Eliminar las AMI obsoletas**: cuando una AMI pública alcanza su fecha de caducidad, si no se han inicializado instancias nuevas desde la AMI durante seis meses o más, AWS elimina con el tiempo la propiedad de uso compartido público para que las AMI obsoletas no aparezcan en las listas de AMI públicas.
+ **Facturación**: no se factura cuando otras Cuentas de AWS utilizan la AMI para iniciar instancias. Las cuentas que inician instancias mediante la AMI serán facturadas por las instancias iniciadas.

## Compartir una AMI con todas las cuentas de AWS (compartir públicamente)
<a name="share-an-ami-publicly"></a>

Después de hacer pública una AMI, estará disponible en **AMI de la comunidad** de la consola, a las que puede acceder desde el **Catálogo de AMI** en el navegador izquierdo de la consola de EC2 o cuando lance una instancia con la consola. Tenga en cuenta que pueden transcurrir unos minutos antes de que la AMI aparezca en **AMI de comunidad** una vez que se ha hecho pública. 

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

**Para hacer una AMI pública**

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 **AMIs**.

1. Seleccione la AMI de la lista y, a continuación, elija **Acciones**, **Editar permisos de la AMI**.

1. En **Disponibilidad de AMI**, elija **Pública**.

1. Seleccione **Save changes (Guardar cambios)**.

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

Cada AMI tiene una propiedad `launchPermission` que controla qué Cuentas de AWS, además de la del propietario, pueden utilizar dicha AMI para iniciar instancias. Al modificar la propiedad `launchPermission` de una AMI, puede hacerla pública (lo cual concede permisos de inicialización a todas las Cuentas de AWS) o compartirla solo con aquellas Cuentas de AWS que especifique.

Puede añadir o eliminar ID de cuentas en la lista de cuentas que tienen permisos de inicialización para una AMI. Para hacer la AMI pública, especifique el grupo `all`. Puede especificar permisos de inicialización públicos y explícitos.

**Para hacer una AMI pública**

1. Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) del modo siguiente para agregar el grupo `all` a la lista `launchPermission` de la AMI especificada.

   ```
   aws ec2 modify-image-attribute \
       --image-id ami-0abcdef1234567890 \
       --launch-permission "Add=[{Group=all}]"
   ```

1. Para verificar los permisos de inicialización de la AMI, utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html).

   ```
   aws ec2 describe-image-attribute \
       --image-id ami-0abcdef1234567890 \
       --attribute launchPermission
   ```

1. (Opcional) Para hacer la AMI privada de nuevo, elimine el grupo `all` de sus permisos de inicialización. Tenga en cuenta que el propietario de la AMI siempre tiene permisos de inicialización, por lo que este comando no le afecta.

   ```
   aws ec2 modify-image-attribute \
       --image-id ami-0abcdef1234567890 \
       --launch-permission "Remove=[{Group=all}]"
   ```

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

Cada AMI tiene una propiedad `launchPermission` que controla qué Cuentas de AWS, además de la del propietario, pueden utilizar dicha AMI para iniciar instancias. Al modificar la propiedad `launchPermission` de una AMI, puede hacerla pública (lo cual concede permisos de inicialización a todas las Cuentas de AWS) o compartirla solo con aquellas Cuentas de AWS que especifique.

Puede añadir o eliminar ID de cuentas en la lista de cuentas que tienen permisos de inicialización para una AMI. Para hacer la AMI pública, especifique el grupo `all`. Puede especificar permisos de inicialización públicos y explícitos.

**Para hacer una AMI pública**

1. Utilice el comando [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) del modo siguiente para agregar el grupo `all` a la lista `launchPermission` de la AMI especificada.

   ```
   Edit-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission `
       -OperationType add `
       -UserGroup all
   ```

1. Para verificar los permisos de inicialización de la AMI, utilice el comando [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html).

   ```
   Get-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission
   ```

1. (Opcional) Para hacer la AMI privada de nuevo, elimine el grupo `all` de sus permisos de inicialización. Tenga en cuenta que el propietario de la AMI siempre tiene permisos de lanzamiento, por lo que este comando no le afecta.

   ```
   Edit-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission `
       -OperationType remove `
       -UserGroup all
   ```

------

# Descripción del bloqueo del acceso público de las AMI
<a name="block-public-access-to-amis"></a>

Para impedir que las AMI se compartan públicamente, habilite el *bloqueo del acceso público de las AMI* a nivel de cuenta.

Cuando el bloqueo del acceso público se habilita, cualquier intento de hacer pública una AMI se bloquea de manera automática. Sin embargo, si ya tiene AMI públicas, permanecerán disponibles públicamente.

Si quiere compartir públicamente las AMI, deberá deshabilitar el bloqueo del acceso público. Cuando haya terminado de compartir, se recomienda volver a habilitar el bloqueo del acceso público para evitar que sus AMI se compartan públicamente sin su consentimiento.

**nota**  
Este ajuste se configura a nivel de cuenta, ya sea directamente en la cuenta o mediante una política declarativa. Se debe configurar en cada Región de AWS en la que desea impedir que las AMI se compartan públicamente. El uso de una política declarativa permite aplicar la configuración en varias regiones simultáneamente, así como en varias cuentas simultáneamente. Cuando se utiliza una política declarativa, no se puede modificar la configuración directamente en una cuenta. En este tema se describe cómo configurar el ajuste directamente dentro de una cuenta. Para obtener información sobre el uso de políticas declarativas, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) en la *Guía del usuario de AWS Organizations.*

Puede restringir los permisos de IAM a un usuario administrador para que solo esa persona pueda habilitar o deshabilitar el bloqueo del acceso público de las AMI.

**Topics**
+ [Configuración predeterminada](#block-public-access-to-amis-default-settings)
+ [Administración de la configuración del bloqueo del acceso público de las AMI](manage-block-public-access-for-amis.md)

## Configuración predeterminada
<a name="block-public-access-to-amis-default-settings"></a>

La configuración **bloquear el acceso público a las AMI** está habilitada o deshabilitada de forma predeterminada en función de si su cuenta es nueva o existente y de si tiene AMI públicas. En la tabla siguiente se muestra la configuración predeterminada:


| Cuenta de AWS | Configuración bloquear el acceso público a las AMI | 
| --- | --- | 
| Cuentas nuevas | Habilitado | 
|  Cuentas existentes sin AMI públicas ¹  | Habilitado | 
|  Cuentas existentes con una o varias AMI públicas  | Deshabilitado | 

¹ Si su cuenta tenía una o varias AMI públicas el 15 de julio de 2023 o después de esa fecha, la configuración **bloquear el acceso público a las AMI** está deshabilitada de forma predeterminada en su cuenta, aunque posteriormente haya hecho que todas las AMI sean privadas.

# Administración de la configuración del bloqueo del acceso público de las AMI
<a name="manage-block-public-access-for-amis"></a>

Puede administrar la configuración del bloqueo del acceso público de las AMI para controlar si se pueden compartir públicamente. Puede activar, desactivar o ver el estado actual del bloqueo del acceso público de las AMI mediante la consola de Amazon EC2 o la AWS CLI.

## Ver el estado del bloqueo del acceso público de las AMI
<a name="get-block-public-access-state-for-amis"></a>

Para comprobar si el uso compartido público de las AMI está bloqueado en su cuenta, puede ver el estado del bloqueo del acceso público de las AMI. Debe ver el estado en cada Región de AWS en la que desee comprobar si el uso compartido público de sus AMI está bloqueado.

**Permisos necesarios**  
Para obtener la configuración del bloqueo del acceso público de las AMI, debe contar con el permiso de IAM `GetImageBlockPublicAccessState`.

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

**Para ver el estado del bloqueo del acceso público de las AMI en la región especificada**

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

1. En la barra de navegación (en la parte superior de la pantalla), seleccione la región en la que desea ver el estado del bloqueo del acceso público de las AMI.

1. En el panel de navegación, elija **Panel**.

1. En la tarjeta **Atributos de cuenta**, en **Configuración**, elija **Protección y seguridad de datos**.

1. En **bloqueo del acceso público de las AMI**, active el campo **Acceso público**. El valor será **Nuevo uso compartido público bloqueado** o **Nuevo uso compartido público permitido**.

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

**Ver el estado del bloqueo del acceso público de las AMI**  
Utilice el comando [ get-image-block-public-access-state](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-image-block-public-access-state.html). El valor es `block-new-sharing` o `unblocked`.

**Ejemplo: Para una región específica**

```
aws ec2 get-image-block-public-access-state --region us-east-1
```

El campo `ManagedBy` indica la entidad que configuró el ajuste. En este ejemplo, `account` indica que el ajuste se configuró directamente en la cuenta. Un valor de `declarative-policy` significaría que el ajuste se configuró mediante una política declarativa. Para obtener más información, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) en la *Guía del usuario de AWS Organizations*.

```
{
    "ImageBlockPublicAccessState": "block-new-sharing",
    "ManagedBy": "account"
}
```

**Ejemplo: Para todas las regiones de su cuenta**

```
echo -e "Region   \t Public Access State" ; \
echo -e "-------------- \t ----------------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-image-block-public-access-state \
            --region $region \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

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

```
Region           Public Access State
--------------   ----------------------
ap-south-1       block-new-sharing
eu-north-1       unblocked
eu-west-3        block-new-sharing
...
```

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

**Ver el estado del bloqueo del acceso público de las AMI**  
Utilice el cmdlet [Get-EC2ImageBlockPublicAccessState](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageBlockPublicAccessState.html). El valor es `block-new-sharing` o `unblocked`.

**Ejemplo: Para una región específica**

```
Get-EC2ImageBlockPublicAccessState -Region us-east-1
```

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

```
block-new-sharing
```

**Ejemplo: Para todas las regiones de su cuenta**

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
        [PSCustomObject]@{
            Region   = $_
            PublicAccessState = (Get-EC2ImageBlockPublicAccessState -Region $_)
        }
} | `
Format-Table -AutoSize
```

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

```
Region         PublicAccessState
------         -----------------
ap-south-1     block-new-sharing
eu-north-1     block-new-sharing
eu-west-3      block-new-sharing
...
```

------

## Habilitar el bloqueo del acceso público de las AMI
<a name="enable-block-public-access-for-amis"></a>

Para impedir que sus AMI se compartan públicamente, habilite el bloqueo del acceso público de las AMI a nivel de cuenta. Debe habilitar el bloqueo del acceso público de las AMI en cada Región de AWS en la que desea impedir que se compartan públicamente sus AMI. Si ya tiene AMI públicas, permanecerán disponibles públicamente.

**Permisos necesarios**  
Para habilitar el bloqueo del acceso público de las AMI, debe contar con el permiso de IAM `EnableImageBlockPublicAccess`.

**Consideraciones**
+ Puede tardar hasta 10 minutos en configurar este ajuste. Durante este tiempo, si describe el estado del acceso público, la respuesta es `unblocked`. Cuando la configuración se haya completado, la respuesta es `block-new-sharing`.

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

**Para habilitar el bloqueo del acceso público de las AMI en la región especificada**

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

1. En la barra de navegación (en la parte superior de la pantalla), seleccione la región en la que desea habilitar el bloqueo del acceso público de las AMI.

1. En el panel de navegación, elija **Panel**.

1. En la tarjeta **Atributos de cuenta**, en **Configuración**, elija **Protección y seguridad de datos**.

1. En **bloqueo del acceso público de las AMI**, elija **Administrar**.

1. Seleccione la casilla de verificación **bloquear nuevo uso compartido público** y luego, elija **Actualizar**.

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

**Habilitar el bloqueo del acceso público de las AMI**  
Utilice el comando [enable-image-block-public-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-block-public-access.html).

**Ejemplo: Para una región específica**

```
aws ec2 enable-image-block-public-access \
--region us-east-1 \
--image-block-public-access-state block-new-sharing
```

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

```
{ 
    "ImageBlockPublicAccessState": "block-new-sharing"
}
```

**Ejemplo: Para todas las regiones de su cuenta**

```
echo -e "Region   \t Public Access State" ; \
echo -e "-------------- \t ----------------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 enable-image-block-public-access \
            --region $region \
            --image-block-public-access-state block-new-sharing \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

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

```
Region           Public Access State
--------------   ----------------------
ap-south-1       block-new-sharing
eu-north-1       block-new-sharing
eu-west-3        block-new-sharing
...
```

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

**Habilitar el bloqueo del acceso público de las AMI**  
Utilice el comando [Enable-EC2ImageBlockPublicAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageBlockPublicAccess.html).

**Ejemplo: Para una región específica**

```
Enable-EC2ImageBlockPublicAccess `
    -Region us-east-1 `
    -ImageBlockPublicAccessState block-new-sharing
```

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

```
Value
-----
block-new-sharing
```

**Ejemplo: Para todas las regiones de su cuenta**

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region            = $_
        PublicAccessState = (
        Enable-EC2ImageBlockPublicAccess `
         -Region $_ `
         -ImageBlockPublicAccessState block-new-sharing)
    }
} | `
Format-Table -AutoSize
```

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

```
Region         PublicAccessState
------         -----------------
ap-south-1     block-new-sharing
eu-north-1     block-new-sharing
eu-west-3      block-new-sharing
...
```

------

## Deshabilitar el bloqueo del acceso público de las AMI
<a name="disable-block-public-access-for-amis"></a>

Para permitir que los usuarios de su cuenta compartan públicamente sus AMI, deshabilite el bloqueo del acceso público a nivel de cuenta. Debe deshabilitar el bloqueo del acceso público de las AMI en cada Región de AWS en la que desea permitir que se compartan públicamente sus AMI.

**Permisos necesarios**  
Para inhabilitar el bloqueo del acceso público de las AMI, debe contar con el permiso de IAM `DisableImageBlockPublicAccess`.

**Consideraciones**
+ Puede tardar hasta 10 minutos en configurar este ajuste. Durante este tiempo, si describe el estado del acceso público, la respuesta es `block-new-sharing`. Cuando la configuración se haya completado, la respuesta es `unblocked`.

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

**Para deshabilitar el bloqueo del acceso público de las AMI en la región especificada**

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

1. En la barra de navegación (en la parte superior de la pantalla), seleccione la región en la que desea deshabilitar el bloqueo del acceso público de las AMI.

1. En el panel de navegación, elija **Panel**.

1. En la tarjeta **Atributos de cuenta**, en **Configuración**, elija **Protección y seguridad de datos**.

1. En **bloqueo del acceso público de las AMI**, elija **Administrar**.

1. Desactive la casilla de verificación **bloquear nuevo uso compartido público** y luego, elija **Actualizar**.

1. Cuando se le pida confirmación, ingrese **confirm** y elija **Permitir uso compartido**.

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

**Deshabilitar el bloqueo del acceso público de las AMI**  
Utilice el comando [disable-image-block-public-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-block-public-access.html).

**Ejemplo: Para una región específica**

```
aws ec2 disable-image-block-public-access --region us-east-1
```

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

```
{
   "ImageBlockPublicAccessState": "unblocked"
}
```

**Ejemplo: Para todas las regiones de su cuenta**

```
echo -e "Region   \t Public Access State" ; \
echo -e "-------------- \t ----------------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 disable-image-block-public-access \
            --region $region \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

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

```
Region           Public Access State
--------------   ----------------------
ap-south-1       unblocked
eu-north-1       unblocked
eu-west-3        unblocked
...
```

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

**Deshabilitar el bloqueo del acceso público de las AMI**  
Utilice el cmdlet [Disable-EC2ImageBlockPublicAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageBlockPublicAccess.html).

**Ejemplo: Para una región específica**

```
Disable-EC2ImageBlockPublicAccess -Region us-east-1
```

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

```
Value
-----
unblocked
```

**Ejemplo: Para todas las regiones de su cuenta**

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region            = $_
        PublicAccessState = (Disable-EC2ImageBlockPublicAccess -Region $_)
    }
} | `
Format-Table -AutoSize
```

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

```
Region         PublicAccessState
------         -----------------
ap-south-1     unblocked
eu-north-1     unblocked
eu-west-3      unblocked
...
```

------

# Cómo compartir una AMI con organizaciones y unidades organizativas
<a name="share-amis-with-organizations-and-OUs"></a>

 [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services_list.html) es un servicio de administración de cuentas que le permite unificar varias Cuentas de AWS en una organización que crea y administra de forma centralizada. Puede compartir una AMI con una organización o una unidad organizativa (UO) de su creación, además de [compartirla con cuentas específicas](sharingamis-explicit.md).

Una organización es una entidad que se crea para consolidar y administrar las Cuentas de AWS de forma centralizada. Puede organizar las cuentas jerárquicamente en una estructura de árbol con un [nodo raíz](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#root) en la parte superior y [unidades organizativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) anidadas bajo la organización raíz. Cada cuenta puede añadirse directamente en el nodo raíz o colocarse en una de las UO de la jerarquía. Para obtener más información, consulte [Terminología y conceptos de AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) en la *Guía del usuario de AWS Organizations*.

Cuando comparte una AMI con una organización o una unidad organizativa, todas las cuentas secundarias obtienen acceso a la AMI. Por ejemplo, en el siguiente diagrama, la AMI se comparte con una unidad organizativa de nivel superior (indicada por la flecha en el número **1**). Todas las unidades organizativas y cuentas anidadas debajo de esa unidad organizativa de nivel superior (indicadas por la línea punteada en el número **2**) también tienen acceso a la AMI. Las cuentas de la organización y la unidad organizativa fuera de la línea punteada (indicadas por el número **3**) no tienen acceso a la AMI porque no dependen de la unidad organizativa con la que se comparte la AMI.

![\[La AMI se comparte con una unidad organizativa y todas las unidades organizativas y cuentas secundarias tienen acceso a la AMI.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ami-share-with-orgs-and-ous.png)


**Topics**
+ [Consideraciones](#considerations-org-ou)
+ [Obtención del ARN de una organización o unidad organizativa](get-org-ou-ARN.md)
+ [Permitir que las organizaciones y unidades organizativas utilicen una clave de KMS](allow-org-ou-to-use-key.md)
+ [Administración del uso compartido de AMI con una organización o unidad organizativa](share-amis-org-ou-manage.md)

## Consideraciones
<a name="considerations-org-ou"></a>

Tenga en cuenta lo siguiente al compartir AMI con organizaciones o unidades organizativas específicas.
+ **Propiedad**: para compartir una AMI, su Cuenta de AWS debe ser la propietaria de esta.
+ **Límites del uso compartido**: el propietario de la AMI puede compartir una AMI con cualquier organización o unidad organizativa, incluidas organizaciones y unidades organizativas de las que no son miembros.

  Para conocer el número máximo de entidades con las que se puede compartir una AMI dentro de una región, consulte [Amazon EC2 service quotas](https://docs.aws.amazon.com//general/latest/gr/ec2-service.html#limits_ec2).
+ **Etiquetas**: no puede compartir etiquetas definidas por el usuario (etiquetas que se adjuntan a una AMI). Al compartir una AMI, las etiquetas definidas por el usuario no están disponibles para ninguna Cuenta de AWS de organización o unidad organizativa con la que se comparte la AMI.
+ **Formato ARN**: al especificar una organización o UO en un comando, asegúrese de utilizar el formato ARN correcto. Si especifica solo el ID se producirá un error, por ejemplo, si solo especifica `o-123example` o `ou-1234-5example`.

  Formatos de ARN adecuados:
  + ARN de la organización: `arn:aws:organizations::111122223333:organization/organization-id`
  + ARN de la unidad organizativa: `arn:aws:organizations::111122223333:ou/organization-id/ou-id`

  Donde:
  + *`111122223333`* es un ejemplo del ID de cuenta de 12 dígitos de la cuenta de administración. Si no conoce el número de cuenta de administración, puede describir la organización o la unidad organizativa para obtener el ARN, que incluye el número de cuenta de administración. Para obtener más información, consulte [Obtención del ARN de una organización o unidad organizativa](get-org-ou-ARN.md).
  + *`organization-id`* es el ID de la organización, por ejemplo, `o-123example`.
  + *`ou-id`* es el ID de la unidad organizativa, por ejemplo, `ou-1234-5example`.

  Para obtener más información acerca del formato 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 del usuario de IAM*.
+ **Cifrado y claves**: puede compartir AMI que cuentan con el respaldo de instantáneas sin cifrar y cifradas.
  + Las instantáneas cifradas deben estar cifradas con una clave administrada por el cliente. No pueden compartir las AMI que están respaldadas por instantáneas cifradas con la clave predeterminada administrada por AWS.
  + Si comparte una AMI respaldada por instantáneas cifradas, debe permitir que las organizaciones o unidades organizativas utilicen las claves administradas por el cliente que se utilizaron para cifrar las instantáneas. Para obtener más información, consulte [Permitir que las organizaciones y unidades organizativas utilicen una clave de KMS](allow-org-ou-to-use-key.md).
+ **Región**: las AMI son un recurso regional. Cuando comparte una AMI, solo está disponible en la región desde donde la compartió. Para hacer que una AMI esté disponible en una región distinta, copie la AMI en dicha región y, a continuación, compártala. Para obtener más información, consulte [Copia de una AMI de Amazon EC2](CopyingAMIs.md).
+ **Uso**: cuando comparte una AMI, los usuarios solo pueden iniciar instancias desde la AMI. No pueden eliminarla, compartirla ni modificarla. Sin embargo, después de iniciar una instancia mediante la AMI, pueden crear una AMI a partir de esa instancia.
+ **Facturación**: no se factura cuando otras Cuentas de AWS utilizan la AMI para iniciar instancias. Las cuentas que inician instancias mediante la AMI serán facturadas por las instancias iniciadas.

# Obtención del ARN de una organización o unidad organizativa
<a name="get-org-ou-ARN"></a>

La organización y los ARN de la unidad organizativa contienen el número de cuenta de administración de 12 dígitos. Si no conoce el número de cuenta de administración, puede describir la organización y la unidad organizativa para obtener el ARN de cada una. En los siguientes ejemplos, `123456789012` es el ID de la cuenta de administración.

**Permisos necesarios**  
Para poder obtener los ARN, debe tener permiso para describir organizaciones y unidades organizativas. La siguiente política de ejemplo proporciona el permiso necesario.

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

****  

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

------

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

**Para obtener el ARN de una organización**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organization.html](https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organization.html). Agregue la opción `--query` para devolver solo el ARN de la organización.

```
aws organizations describe-organization --query 'Organization.Arn'
```

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

```
"arn:aws:organizations::123456789012:organization/o-1234567abc"
```

**Para obtener el ARN de una unidad organizativa**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organizational-unit.html](https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organizational-unit.html). Use el parámetro `--query` para devolver solo el ARN de la unidad organizativa.

```
aws organizations describe-organizational-unit \
    --organizational-unit-id ou-a123-b4567890 \
    --query 'OrganizationalUnit.Arn'
```

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

```
"arn:aws:organizations::123456789012:ou/o-1234567abc/ou-a123-b4567890"
```

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

**Para obtener el ARN de una organización**  
Use el cmdlet [Get-ORGOrganization](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ORGOrganization.html).

```
(Get-ORGOrganization).Arn
```

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

```
arn:aws:organizations::123456789012:organization/o-1234567abc
```

**Para obtener el ARN de una unidad organizativa**  
Use el cmdlet [Get-ORGOrganizationalUnit](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ORGOrganizationalUnit.html).

```
(Get-ORGOrganizationalUnit -OrganizationalUnitId "ou-a123-b4567890").Arn
```

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

```
arn:aws:organizations::123456789012:ou/o-1234567abc/ou-a123-b4567890
```

------

# Permitir que las organizaciones y unidades organizativas utilicen una clave de KMS
<a name="allow-org-ou-to-use-key"></a>

Si comparte una AMI respaldada por instantáneas cifradas, también debe permitir que las organizaciones o unidades organizativas (OU) utilicen las claves de KMS que se emplearon para cifrar las instantáneas.

**nota**  
Las instantáneas cifradas deben estar cifradas con una *clave administrada por el cliente*. No pueden compartir las AMI que están respaldadas por instantáneas cifradas con la clave predeterminada administrada por AWS.

Para controlar el acceso a la clave de KMS, en la [política de claves](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) puede usar las claves de condición [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) y [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths) para permitir que solo determinadas entidades principales tengan permiso para las acciones especificadas. Una entidad principal puede ser un usuario, un rol de IAM, un usuario federado o usuario raíz de Cuenta de AWS.

Las claves de condición se utilizan de la siguiente manera:
+ `aws:PrincipalOrgID`: permite que cualquier entidad principal que pertenezca a la organización esté representada por el ID especificado.
+ `aws:PrincipalOrgPaths`: permite que cualquier entidad principal que pertenezca a la unidad organizativa esté representada por las rutas especificadas.

Para conceder permiso a una organización (incluidas las unidades organizativas y las cuentas que pertenecen a esta) para utilizar una clave de KMS, agregue la siguiente instrucción a la política de claves.

```
{
    "Sid": "Allow access for organization root",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "kms:Describe*",
        "kms:List*",
        "kms:Get*",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:CreateGrant"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:PrincipalOrgID": "o-123example"
        }
    }
}
```

Para conceder a determinadas unidades organizativas (y a las cuentas que pertenecen a estas) permiso para utilizar una clave de KMS, puede utilizar una política similar a la del siguiente ejemplo.

```
{
        "Sid": "Allow access for specific OUs and their descendants",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "kms:Describe*",
            "kms:List*",
            "kms:Get*",
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:CreateGrant"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalOrgID": "o-123example"
            },
            "ForAnyValue:StringLike": {
                "aws:PrincipalOrgPaths": [
                    "o-123example/r-ab12/ou-ab12-33333333/*",
                    "o-123example/r-ab12/ou-ab12-22222222/*"
                ]
            }
        }
}
```

Para ver más ejemplos de declaraciones de condiciones, consulte [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) y [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths) en la *Guía del usuario de IAM*. 

Para obtener más información acerca del acceso entre cuentas, consulte [Cómo permitir a los usuarios de otras cuentas utilizar una clave de KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html) en la *Guía para desarrolladores de AWS Key Management Service*.

# Administración del uso compartido de AMI con una organización o unidad organizativa
<a name="share-amis-org-ou-manage"></a>

Puede administrar el uso compartido de AMI con organizaciones y unidades organizativas (OU) para controlar si pueden lanzar instancias de Amazon EC2.

## Ver las organizaciones y unidades organizativas con las que se comparte una AMI
<a name="decribe-ami-launch-permissions"></a>

Puede encontrar las organizaciones y unidades organizativas con las que compartió la AMI.

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

**Para verificar con qué organizaciones y unidades organizativas compartió la AMI**

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 **AMIs**.

1. Seleccione la AMI en la lista, elija la pestaña **Permisos** y desplácese hacia abajo hasta **Organizaciones/unidades organizativas compartidas**.

   Para encontrar las AMI compartidas con usted, consulte [Búsqueda de AMI compartidas para utilizarlas en las instancias de Amazon EC2](usingsharedamis-finding.md).

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

**Para verificar con qué organizaciones y unidades organizativas compartió la AMI**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) con el atributo `launchPermission`.

```
aws ec2 describe-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute launchPermission
```

A continuación, se muestra un ejemplo de respuesta.

```
{
    "ImageId": "ami-0abcdef1234567890",
    "LaunchPermissions": [
        {
            "OrganizationalUnitArn": "arn:aws:organizations::111122223333:ou/o-123example/ou-1234-5example"
        }
    ]
}
```

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

**Para verificar con qué organizaciones y unidades organizativas compartió la AMI**  
Utilice el cmdlet [Get-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html).

```
Get-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission
```

------

## Uso compartido de una AMI con una organización o unidad organizativa
<a name="share-amis-org-ou"></a>

Puede compartir una AMI con una organización o unidad organizativa.

**nota**  
No es necesario compartir las instantáneas de Amazon EBS a las que hace referencia una AMI para compartir dicha AMI. Solo es necesario compartir la AMI; para la inicialización, el sistema proporciona automáticamente a la instancia acceso a las instantáneas de EBS a las que se hace referencia. Sin embargo, es necesario compartir las claves de KMS que se utilizan para cifrar instantáneas a las que hace referencia la AMI. Para obtener más información, consulte [Permitir que las organizaciones y unidades organizativas utilicen una clave de KMS](allow-org-ou-to-use-key.md).

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

**Para compartir una AMI con una organización o una unidad organizativa**

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 **AMIs**.

1. Seleccione la AMI en la lista y, a continuación, elija **Acciones**, **Editar permisos de la AMI**.

1. En **Disponibilidad de AMI**, elija **Privada**.

1. Junto a **Organizaciones/unidades organizativas compartidas**, elija **Agregar ARN de organización/unidad organizativa**.

1. En **ARN de organización/unidad organizativa**, introduzca el ARN de la organización o de la unidad organizativa con el que desea compartir la AMI y, a continuación, elija **Compartir AMI**. Tenga en cuenta que debe especificar el ARN completo, no solo el ID.

   Para compartir esta AMI con varias organizaciones o unidades organizativas, repita este paso hasta que haya agregado todas las organizaciones o unidades organizativas necesarias.

1. Cuando haya terminado, elija **Guardar cambios**.

1. (Opcional) Para ver las organizaciones o unidades organizativas con las que ha compartido la AMI, seleccione la AMI en la lista, elija la pestaña **Permisos** y desplácese hacia abajo hasta **Organizaciones/unidades organizativas compartidas**. Para encontrar las AMI compartidas con usted, consulte [Búsqueda de AMI compartidas para utilizarlas en las instancias de Amazon EC2](usingsharedamis-finding.md).

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

**Para compartir una AMI con una organización**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) para conceder permisos de inicialización para la AMI especificada a la organización especificada.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Add=[{OrganizationArn=arn:aws:organizations::123456789012:organization/o-123example}]"
```

**Para compartir una AMI con una unidad organizativa**  
El comando [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) concede permisos de inicialización para la AMI especificada a la unidad organizativa determinada. Tenga en cuenta que debe especificar el ARN completo, no solo el ID.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Add=[{OrganizationalUnitArn=arn:aws:organizations::123456789012:ou/o-123example/ou-1234-5example}]"
```

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

Utilice el comando [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) (Herramientas para Windows PowerShell) para compartir una AMI tal y como se muestra en los siguientes ejemplos.

**Para compartir una AMI con una organización o una unidad organizativa**  
El siguiente comando concede permisos de inicialización para la AMI especificada a la organización determinada.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission `
    -OperationType add `
    -OrganizationArn "arn:aws:organizations::123456789012:organization/o-123example"
```

**Para dejar de compartir una AMI con una organización o unidad organizativa**  
El siguiente comando elimina permisos de inicialización para la AMI especificada de la organización determinada:

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission `
    -OperationType remove `
    -OrganizationArn "arn:aws:organizations::123456789012:organization/o-123example"
```

**Para dejar de compartir una AMI con todas las organizaciones, unidades organizativas y Cuentas de AWS**  
El siguiente comando elimina todos los permisos de inicialización públicos y explícitos de la AMI especificada. Tenga en cuenta que el propietario de la AMI siempre tiene permisos de inicialización, por lo que este comando no le afecta.

```
Reset-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission
```

------

## Finalización del uso compartido de una AMI con una organización o unidad organizativa
<a name="stop-sharing-amis-org-ou"></a>

Puede dejar de compartir una AMI con una organización o unidad organizativa.

**nota**  
No puede dejar de compartir una AMI con una cuenta específica si se encuentra en una organización o unidad organizativa con la que se comparte una AMI. Si intenta dejar de compartir la AMI mediante la eliminación de los permisos de inicialización de la cuenta, Amazon EC2 devuelve el mensaje de que la operación se realizó correctamente. Sin embargo, la AMI sigue compartiéndose con la cuenta.

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

**Para dejar de compartir una AMI con una organización o unidad organizativa**

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 **AMIs**.

1. Seleccione la AMI en la lista y, a continuación, elija **Actions** (Acciones), **Edit AMI permissions** (Editar permisos de la AMI).

1. En **Organizaciones/unidades organizativas compartidas**, seleccione las organizaciones o unidades organizativas con las que desea dejar de compartir la AMI y, a continuación, elija **Eliminar la selección**.

1. Cuando haya terminado, elija **Guardar cambios**.

1. (Opcional) Para confirmar que dejó de compartir la AMI con las organizaciones o unidades organizativas, seleccione la AMI en la lista, elija la pestaña **Permisos** y desplácese hacia abajo hasta **Organizaciones/unidades organizativas compartidas**.

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

**Para dejar de compartir una AMI con una organización o unidad organizativa**  
Utilice el comando [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html). En este ejemplo se eliminan los permisos de inicialización para la AMI especificada de la organización especificada.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Remove=[{OrganizationArn=arn:aws:organizations::123456789012:organization/o-123example}]"
```

**Para dejar de compartir una AMI con todas las organizaciones, unidades organizativas y Cuentas de AWS**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/reset-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/reset-image-attribute.html). En este ejemplo se eliminan todos los permisos de inicialización públicos y explícitos de la AMI especificada. Tenga en cuenta que el propietario de la AMI siempre tiene permisos de inicialización, por lo que este comando no le afecta.

```
aws ec2 reset-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute launchPermission
```

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

**Para dejar de compartir una AMI con una organización o unidad organizativa**  
Utilice el cmdlet [Edit-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html). En este ejemplo se eliminan los permisos de inicialización para la AMI especificada de la organización especificada.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission `
    -OperationType remove `
    -OrganizationArn "arn:aws:organizations::123456789012:organization/o-123example"
```

**Para dejar de compartir una AMI con todas las organizaciones, unidades organizativas y Cuentas de AWS**  
Utilice el cmdlet [Reset-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Reset-EC2ImageAttribute.html). En este ejemplo se eliminan todos los permisos de inicialización públicos y explícitos de la AMI especificada. Tenga en cuenta que el propietario de la AMI siempre tiene permisos de inicialización, por lo que este comando no le afecta.

```
Reset-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute LaunchPermission
```

------

# Compartir una AMI con cuentas de AWS específicas
<a name="sharingamis-explicit"></a>

Puede compartir una AMI con Cuentas de AWS específicas sin hacerla pública. Lo único que necesita es las ID de Cuenta de AWS.

Un identificador de Cuenta de AWS es un número de 12 dígitos, por ejemplo `012345678901`, que identifica de forma única a una Cuenta de AWS. Para obtener más información, consulte [Ver identificadores de la Cuenta de AWS](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html) en la *Guía de referencia de AWS Account Management*.



## Consideraciones
<a name="considerations-for-sharing-AMI-with-accounts"></a>

Tenga en cuenta lo siguiente al compartir AMI con Cuentas de AWS específicas.
+ **Propiedad**: para compartir una AMI, su Cuenta de AWS debe ser la propietaria de esta.
+ **Límites del uso compartido**: para conocer el número máximo de entidades con las que se puede compartir una AMI dentro de una región, consulte [Amazon EC2 service quotas](https://docs.aws.amazon.com//general/latest/gr/ec2-service.html#limits_ec2).
+ **Etiquetas**: no puede compartir etiquetas definidas por el usuario (etiquetas que se adjuntan a una AMI). Al compartir una AMI, las etiquetas definidas por el usuario no están disponibles para ninguna de las personas de las Cuenta de AWS que comparten la AMI.
+ **Instantáneas**: no es necesario compartir las instantáneas de Amazon EBS a las que hace referencia una AMI para compartir dicha AMI. Solo puede compartir la AMI en sí; el sistema proporciona a la instancia acceso a las instantáneas de EBS referenciadas para el lanzamiento. Sin embargo, debe compartir cualquier clave KMS utilizada para cifrar las instantáneas a las que hace referencia una AMI. Para obtener más información, consulte [Compartir una instantánea de Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modifying-snapshot-permissions.html) en la *Guía del usuario de Amazon EBS*.
+ **Cifrado y claves**: puede compartir AMI que cuentan con el respaldo de instantáneas sin cifrar y cifradas.
  + Las instantáneas cifradas deben estar cifradas con una clave de KMS. No pueden compartir las AMI que están respaldadas por instantáneas cifradas con la clave predeterminada administrada por AWS.
  + Si comparte una AMI respaldada por instantáneas cifradas, debe permitir que las Cuentas de AWS utilicen las claves administradas por el cliente que se utilizaron para cifrar las instantáneas. Para obtener más información, consulte [Permitir que las organizaciones y unidades organizativas utilicen una clave de KMS](allow-org-ou-to-use-key.md). Para configurar la política de claves que necesita para iniciar instancias de Auto Scaling cuando utiliza una clave administrada por el cliente para el cifrado, consulte [Política requerida AWS KMS key para usar con volúmenes cifrados](https://docs.aws.amazon.com/autoscaling/ec2/userguide/key-policy-requirements-EBS-encryption.html) en la *Guía del usuario de Amazon EC2 Auto Scaling*. 
+ **Región**: las AMI son un recurso regional. Cuando comparte una AMI, solo estará disponible en esa región. Para hacer que una AMI esté disponible en una región distinta, copie la AMI en dicha región y, a continuación, compártala. Para obtener más información, consulte [Copia de una AMI de Amazon EC2](CopyingAMIs.md).
+ **Uso**: cuando comparte una AMI, los usuarios solo pueden iniciar instancias desde la AMI. No pueden eliminarla, compartirla ni modificarla. Sin embargo, después de iniciar una instancia mediante la AMI, pueden crear una AMI a partir de esa instancia.
+ **Copiar AMI compartidas**: si los usuarios de otra cuenta desean copiar una AMI compartida, debe otorgar permisos de lectura para el almacenamiento que respalda la AMI. Para obtener más información, consulte [Copias entre cuentas](how-ami-copy-works.md#copy-ami-across-accounts).
+ **Facturación**: no se factura cuando otras Cuentas de AWS utilizan la AMI para iniciar instancias. Las cuentas que inician instancias mediante la AMI serán facturadas por las instancias iniciadas.

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

**Para conceder permisos de inicialización explícitos**

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 **AMIs**.

1. Seleccione la AMI en la lista y, a continuación, elija **Actions** (Acciones), **Edit AMI permissions** (Editar permisos de la AMI).

1. Seleccione **Privado**.

1. En **Cuentas compartidas**, elija **Agregar ID de cuenta**.

1. En **ID de la Cuenta de AWS**, ingrese el ID de la Cuenta de AWS con la que desea compartir la AMI y, a continuación, elija **Compartir AMI**.

   Para compartir esta AMI con varias cuentas, repita los pasos 5 y 6 hasta que haya agregado todos los ID de cuenta necesarios.

1. Cuando haya terminado, elija **Guardar cambios**.

1. (Opcional) Para ver los ID de la Cuenta de AWS con los que ha compartido la AMI, seleccione la AMI en la lista y elija la pestaña **Permisos**. Para encontrar las AMI compartidas con usted, consulte [Búsqueda de AMI compartidas para utilizarlas en las instancias de Amazon EC2](usingsharedamis-finding.md).

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

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) para compartir una AMI tal y como se muestra en los siguientes ejemplos.

**Para conceder permisos de inicialización explícitos**  
En el siguiente ejemplo se conceden los permisos de inicialización para la AMI especificada a la Cuenta de AWS especificada.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Add=[{UserId=123456789012}]"
```

**Para eliminar permisos de inicialización para una cuenta**  
En el siguiente ejemplo se eliminan los permisos de inicialización para la AMI especificada de la Cuenta de AWS especificada.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Remove=[{UserId=123456789012}]"
```

**Para eliminar todos los permisos de inicialización**  
En el siguiente ejemplo se eliminan todos los permisos de inicialización públicos y explícitos de la AMI especificada. Tenga en cuenta que el propietario de la AMI siempre tiene permisos de inicialización, por lo que este comando no le afecta.

```
aws ec2 reset-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute launchPermission
```

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

Utilice el comando [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) (Herramientas para Windows PowerShell) para compartir una AMI tal y como se muestra en los siguientes ejemplos.

**Para conceder permisos de inicialización explícitos**  
En el siguiente ejemplo se conceden los permisos de inicialización para la AMI especificada a la Cuenta de AWS especificada.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 ` 
    -Attribute launchPermission `
    -OperationType add `
    -UserId "123456789012"
```

**Para eliminar permisos de inicialización para una cuenta**  
En el siguiente ejemplo se eliminan los permisos de inicialización para la AMI especificada de la Cuenta de AWS especificada.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission -OperationType remove `
    -UserId "123456789012"
```

**Para eliminar todos los permisos de inicialización**  
En el siguiente ejemplo se eliminan todos los permisos de inicialización públicos y explícitos de la AMI especificada. Tenga en cuenta que el propietario de la AMI siempre tiene permisos de inicialización, por lo que este comando no le afecta.

```
Reset-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission
```

------

# Cancelar que se comparta una AMI con su Cuenta de AWS
<a name="cancel-sharing-an-AMI"></a>

Se puede [compartir una imagen de máquina de Amazon (AMI) con Cuentas de AWS específicas](sharingamis-explicit.md) si agrega las cuentas a los permisos de inicialización de la AMI. Si se ha compartido una AMI con su Cuenta de AWS y ya no desea que sea así, puede eliminar la cuenta de los permisos de inicialización de la AMI. Para hacerlo, ejecute el comando `cancel-image-launch-permission` de la AWS CLI. Al ejecutar este comando, la Cuenta de AWS se elimina de los permisos de inicialización de la AMI especificada. Para encontrar las AMI compartidas con su Cuenta de AWS, consulte [Búsqueda de AMI compartidas para utilizarlas en las instancias de Amazon EC2](usingsharedamis-finding.md).

Puede cancelar que se comparta una AMI con la cuenta, por ejemplo, para reducir la probabilidad de iniciar una instancia con una AMI obsoleta o en desuso que se compartió con usted. Cuando cancele que se comparta una AMI con la cuenta, ya no aparecerá en ninguna lista de AMI de la consola de EC2 ni en la salida de [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html).

**Topics**
+ [Limitaciones](#cancel-sharing-an-AMI-limitations)
+ [Cancelar que se comparta una AMI con su cuenta](#cancel-image-launch-permission)

## Limitaciones
<a name="cancel-sharing-an-AMI-limitations"></a>
+ Puede eliminar la cuenta de los permisos de lanzamiento de una AMI compartida solo con su Cuenta de AWS. No puede usar `cancel-image-launch-permission` para eliminar la cuenta de los permisos de lanzamiento de una [AMI compartida con una organización o unidad organizativa](share-amis-with-organizations-and-OUs.md) ni para eliminar el acceso a las AMI públicas.
+ No puede eliminar permanentemente su cuenta de los permisos de inicialización de una AMI. El propietario de una AMI puede volver a compartirla con su cuenta.
+ Las AMI son un recurso regional. Al ejecutar `cancel-image-launch-permission`, debe especificar la región en la que se encuentra la AMI. Para especificar una región predeterminada en el comando, utilice la [variable de entorno](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) AWS\$1DEFAULT\$1REGION.
+ Solo la AWS CLI y los SDK admiten que se elimine la cuenta de los permisos de inicialización de una AMI. Actualmente, la consola de EC2 no admite esta acción.

## Cancelar que se comparta una AMI con su cuenta
<a name="cancel-image-launch-permission"></a>

**nota**  
Después de cancelar que se comparta una AMI con la cuenta, no podrá deshacer la acción. Para recuperar el acceso a la AMI, el propietario de esta debe compartirla con su cuenta.

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

**Para cancelar el uso compartido de una AMI con su cuenta**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-image-launch-permission.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-image-launch-permission.html).

```
aws ec2 cancel-image-launch-permission \
    --image-id ami-0abcdef1234567890 \
    --region us-east-1
```

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

**Para cancelar el uso compartido de una AMI con su cuenta**  
Utilice el cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/index.html](https://docs.aws.amazon.com/powershell/latest/reference/index.html).

```
Stop-EC2ImageLaunchPermission `
    -ImageId ami-0abcdef1234567890 `
    -Region us-east-1
```

------

# Recomendaciones para crear AMI compartidas de Linux
<a name="building-shared-amis"></a>

Utilice las siguientes directrices para reducir la superficie de ataque y mejorar la fiabilidad de las AMI que cree.

**importante**  
Ninguna lista de directrices de seguridad es exhaustiva. Cree sus AMI compartidas con precaución y piense bien en qué casos podría estar exponiendo información confidencial.

**Topics**
+ [Deshabilitación de los inicios de sesión remotos mediante contraseña para el usuario raíz](#public-amis-disable-password-logins-for-root)
+ [Deshabilitar el acceso local de la raíz](#restrict-root-access)
+ [Eliminar los pares de claves del host SSH](#remove-ssh-host-key-pairs)
+ [Instalar credenciales de clave pública](#public-amis-install-credentials)
+ [Desactivación de la verificación de DNS de sshd (opcional)](#public-amis-disable-ssh-dns-lookups)
+ [Eliminación de datos confidenciales](#public-amis-protect-yourself)

Si crea la AMI para AWS Marketplace, consulte [Prácticas recomendadas para crear AMI](https://docs.aws.amazon.com/marketplace/latest/userguide/best-practices-for-building-your-amis.html) en la *Guía del vendedor de AWS Marketplace* en lo que respecta a directrices, políticas y prácticas recomendadas.

## Deshabilitación de los inicios de sesión remotos mediante contraseña para el usuario raíz
<a name="public-amis-disable-password-logins-for-root"></a>

El uso de una contraseña raíz fija para una AMI pública supone un riesgo para la seguridad que puede darse a conocer rápidamente. Incluso pedir a los usuarios que cambien la contraseña tras el primer inicio de sesión abre la puerta a un potencial abuso. 

Para solucionar este problema, deshabilite los inicios de sesión remotos mediante contraseña para el usuario raíz.

**Deshabilitar los inicios de sesión remotos mediante contraseña para el usuario raíz**

1. Abra el archivo `/etc/ssh/sshd_config` con un editor de texto y localice la siguiente línea:

   ```
   #PermitRootLogin yes
   ```

1. Cambie la línea a:

   ```
   PermitRootLogin without-password
   ```

   La ubicación de este archivo de configuración podría diferir para su distribución o si no está ejecutando OpenSSH. En ese caso, consulte la documentación pertinente. 

## Deshabilitar el acceso local de la raíz
<a name="restrict-root-access"></a>

Cuando trabaja con AMI compartidas, es una práctica recomendada deshabilitar los inicios de sesión directos de la raíz. Para ello, inicie sesión en la instancia en ejecución e introduzca el siguiente comando:

```
[ec2-user ~]$ sudo passwd -l root
```

**nota**  
Este comando no afecta al uso de `sudo`.

## Eliminar los pares de claves del host SSH
<a name="remove-ssh-host-key-pairs"></a>

 Si tiene previsto compartir una AMI derivada de una AMI pública, elimine los pares de claves del host de SSH existentes ubicados en `/etc/ssh`. Esto obliga a SSH a generar nuevos pares de claves de SSH únicos cuando alguien inicia una instancia usando la AMI, lo que mejora la seguridad y reduce la probabilidad de ataques "man-in-the-middle" (MITM). 

Elimine los siguientes archivos de claves presentes en el sistema.
+  ssh\$1host\$1dsa\$1key 
+  ssh\$1host\$1dsa\$1key.pub 
+  ssh\$1host\$1key 
+  ssh\$1host\$1key.pub 
+  ssh\$1host\$1rsa\$1key 
+  ssh\$1host\$1rsa\$1key.pub 
+ ssh\$1host\$1ecdsa\$1key
+ ssh\$1host\$1ecdsa\$1key.pub
+ ssh\$1host\$1ed25519\$1key
+ ssh\$1host\$1ed25519\$1key.pub

Puede eliminar de forma segura todos esos archivos con el comando siguiente.

```
[ec2-user ~]$ sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub
```

**aviso**  
Los servicios de eliminación segura, como **shred**, podrían no eliminar todas las copias de un archivo del medio de almacenamiento. Los sistemas de archivos de registro en diario (incluidos Amazon Linux default ext4), las instantáneas, las copias de seguridad, los RAID y el almacenamiento temporal en caché podrían crear copias ocultas de archivos. Para obtener más información, consulte la [documentación de shred](https://www.gnu.org/software/coreutils/manual/html_node/shred-invocation.html).

**importante**  
Si olvida eliminar los pares de claves del host de SSH existentes de la AMI pública, nuestro proceso de auditoría rutinario le notifica a usted y a todos los clientes que ejecuten instancias de la AMI acerca del posible riesgo para la seguridad. Tras un breve periodo de gracia, marcamos la AMI como privada. 

## Instalar credenciales de clave pública
<a name="public-amis-install-credentials"></a>

Tras configurar la AMI para evitar el inicio de sesión mediante contraseña, debe asegurarse de que los usuarios pueden iniciar sesión utilizando otro mecanismo. 

Amazon EC2 permite a los usuarios especificar un nombre de par de claves pública y privada para iniciar la instancia. Cuando se proporciona un nombre de par de claves válido durante la llamada a la API `RunInstances` (o a través de las herramientas de la API de la línea de comandos), la clave pública (la parte del par de claves que Amazon EC2 conserva en el servidor tras llamar a `CreateKeyPair` o a `ImportKeyPair`) se pone a disposición de la instancia a través de una consulta HTTP a los metadatos de dicha instancia. 

Para iniciar sesión mediante SSH, la AMI debe recuperar el valor de la clave al arrancar y adjuntarlo a `/root/.ssh/authorized_keys` (o el equivalente para cualquier otra cuenta de usuario de la AMI). Los usuarios pueden iniciar instancias de la AMI con un par de claves e iniciar sesión sin necesidad de una contraseña raíz. 

Muchas distribuciones, como Amazon Linux y Ubuntu, usan el paquete `cloud-init` para introducir credenciales de clave pública para un usuario configurado. Si su distribución no admite `cloud-init`, puede añadir el siguiente código a un script de arranque del sistema (como `/etc/rc.local`) para obtener la clave pública que especificó durante la inicialización para el usuario raíz.

**nota**  
En el ejemplo siguiente, la dirección IP http://169.254.169.254/ es una dirección local del vínculo y solo es válida desde la instancia.

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

```
if [ ! -d /root/.ssh ] ; then
        mkdir -p /root/.ssh
        chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
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 > /tmp/my-key
if [ $? -eq 0 ] ; then
        cat /tmp/my-key >> /root/.ssh/authorized_keys
        chmod 700 /root/.ssh/authorized_keys
        rm /tmp/my-key
fi
```

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

```
if [ ! -d /root/.ssh ] ; then
        mkdir -p /root/.ssh
        chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-key
if [ $? -eq 0 ] ; then
        cat /tmp/my-key >> /root/.ssh/authorized_keys
        chmod 700 /root/.ssh/authorized_keys
        rm /tmp/my-key
fi
```

------

 Esto se puede aplicar a cualquier usuario; no es necesario restringirlo al usuario `root`.

**nota**  
La reagrupación de una instancia basada en esta AMI incluye la clave con la que se lanzó. Para evitar que se incluya esta clave, debe borrar (o eliminar) el archivo `authorized_keys` o excluirlo de la reagrupación. 

## Desactivación de la verificación de DNS de sshd (opcional)
<a name="public-amis-disable-ssh-dns-lookups"></a>

Deshabilitar la verificación de DNS de sshd debilita ligeramente la seguridad sshd. No obstante, si la resolución de DNS falla, los inicios de sesión SSH siguen funcionando. Si no deshabilita la verificación de sshd, los errores de resolución de DNS impedirán cualquier inicio de sesión. 

**Para deshabilitar la verificación de DNS de sshd**

1. Abra el archivo `/etc/ssh/sshd_config` con un editor de texto y localice la siguiente línea:

   ```
   #UseDNS yes
   ```

1. Cambie la línea a: 

   ```
   UseDNS no
   ```

**nota**  
La ubicación de este archivo de configuración puede diferir para su distribución o si no está ejecutando OpenSSH. En ese caso, consulte la documentación pertinente. 

## Eliminación de datos confidenciales
<a name="public-amis-protect-yourself"></a>

Desaconsejamos el almacenamiento de información confidencial o software en cualquier AMI que comparta. Los usuarios que lancen una AMI compartida podrían reagruparla y registrarla como propia. Siga estas directrices para ayudarlo a evitar ciertos riesgos para la seguridad que suelen pasarse por alto. 
+ Le recomendamos que utilice la opción `--exclude directory` en `ec2-bundle-vol` para omitir cualquier directorio y subdirectorio que contenga información secreta que no desearía incluir en el paquete. En particular, excluya todos los pares de claves pública y privada SSH propiedad de los usuarios y los archivos SSH `authorized_keys` cuando realice la agrupación de la imagen. Las AMI públicas de Amazon los almacenan en `/root/.ssh` para el usuario raíz y en `/home/user_name/.ssh/` para usuarios normales. Para obtener más información, consulte [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol).
+ Elimine siempre el historial del shell antes de realizar la agrupación. Si intenta cargar más de una agrupación en la misma AMI, el historial del shell contiene la clave de acceso. El siguiente ejemplo debería ser el último comando que ejecute antes de realizar la agrupación desde la instancia.

  ```
  [ec2-user ~]$ shred -u ~/.*history
  ```
**aviso**  
Las limitaciones de **shred** descritas en la advertencia anterior también son aplicables aquí.   
Tenga en cuenta que bash escribe el historial de la sesión actual en el disco al salir. Si cierra sesión en la instancia después de eliminar `~/.bash_history` y, a continuación, vuelve a iniciar sesión, verá que `~/.bash_history` se ha vuelto a crear y que contiene todos los comandos que ejecutó durante la sesión anterior.  
Además de bash, otros programas también escriben el historial en el disco. Tenga precaución y elimine o excluya los dot-files y dot-directories que no sean necesarios.
+ La agrupación de una instancia en ejecución requiere la clave privada y el certificado X.509. Guarde estas y otras credenciales en un lugar que no forme parte de la agrupación (como, por ejemplo, el almacén de instancias).