

# Seguridad en CloudFormation
<a name="security"></a>

La seguridad en AWS es la principal prioridad. Como cliente de AWS, se beneficiará de una arquitectura de red y de centros de datos diseñados para satisfacer los requisitos de seguridad de las organizaciones más exigentes.

La seguridad es una responsabilidad compartida entre AWS y usted. El [modelo de responsabilidad compartida](https://aws.amazon.com/compliance/shared-responsibility-model/) la describe como seguridad *de* la nube y seguridad *en* la nube:
+ **Seguridad de la nube**: AWS es responsable de proteger la infraestructura que ejecuta los servicios de AWS en la nube de AWS. AWS también proporciona servicios que puede utilizar de forma segura. Los auditores externos prueban y verifican periódicamente la eficacia de nuestra seguridad como parte de los [AWSProgramas de conformidad de ](https://aws.amazon.com/compliance/programs/). Para obtener información sobre los programas de conformidad que se aplican a CloudFormation, consulte [AWS Services in Scope by Compliance Program](https://aws.amazon.com/compliance/services-in-scope/).
+ **Seguridad en la nube**: su responsabilidad se determina según el servicio de AWSque utiliza. También es responsable de otros factores, incluida la confidencialidad de los datos, los requisitos de la empresa y la legislación y la normativa aplicables.

Esta documentación le ayuda a comprender cómo aplicar el modelo de responsabilidad compartida a la hora de utilizar CloudFormation. Los siguientes temas le mostrarán cómo configurar CloudFormation para satisfacer sus objetivos de seguridad y de conformidad. También puede aprender a utilizar otros servicios de AWS que lo ayuden a monitorizar y proteger los recursos de CloudFormation.

**Topics**
+ [Protección de las pilas de CloudFormation para evitar la eliminación](using-cfn-protect-stacks.md)
+ [Impida actualizaciones en los recursos de la pila](protect-stack-resources.md)
+ [Protección de los datos en CloudFormation](security-data-protection.md)
+ [Control del acceso a CloudFormation con AWS Identity and Access Management](control-access-with-iam.md)
+ [Registro de llamadas a la API de CloudFormation con AWS CloudTrail](cfn-api-logging-cloudtrail.md)
+ [Seguridad de la infraestructura en () CloudFormation](infrastructure-security.md)
+ [Resiliencia en CloudFormation](disaster-recovery-resiliency.md)
+ [Validación de conformidad en CloudFormation](cloudformation-compliance.md)
+ [Configuración y análisis de vulnerabilidades en CloudFormation](vulnerability-analysis-and-management.md)
+ [Prácticas recomendadas de seguridad para CloudFormation](security-best-practices.md)
+ [Acceso a CloudFormation a través de un punto de conexión de la interfaz (AWS PrivateLink)](vpc-interface-endpoints.md)

# Protección de las pilas de CloudFormation para evitar la eliminación
<a name="using-cfn-protect-stacks"></a>

Es posible evitar que una pila se elimine de manera accidental; para ello, habilite la protección de terminación en la pila. Si un usuario intenta eliminar una pila con la protección de terminación habilitada, la eliminación fallará y la pila junto con su estado no cambiarán. Es posible habilitar la protección de terminación en una pila al crearla. La protección de terminación no está habilitada de manera predeterminada en las pilas. Puede configurar la protección de terminación en una pila con cualquier estado excepto `DELETE_IN_PROGRESS` o `DELETE_COMPLETE`.

Al habilitar o deshabilitar la protección de terminación en una pila, también se habilita o deshabilita en las pilas anidadas. No se puede habilitar o deshabilitar la protección de terminación directamente en una pila anidada. Si un usuario intenta eliminar directamente una pila anidada que pertenece a una pila la con protección de terminación habilitada, la operación fallará y la pila anidada no cambiará.

Sin embargo, si un usuario realiza una actualización de la pila que eliminaría la pila anidada, CloudFormation la elimina.

La protección de terminación no es igual a la deshabilitación de restauración. La protección de terminación solo es posible en los intentos de eliminar pilas, mientras que la deshabilitación de restauración es posible en la restauración automática cuando se produce algún error durante la creación de la pila.

**Habilitación de la protección de terminación al crear una pila**  
En la página **Specify stack options (Especificar opciones de pila)** del asistente **Create stack (Crear pila)**, en **Advanced options (Opciones avanzadas)**, amplíe la sección **Termination Protection (Protección de terminación)** y seleccione **Enable (Habilitar)**. Para obtener más información, consulte [Configurar las opciones la pila](cfn-console-create-stack.md#configure-stack-options).

**Habilitación o deshabilitación de la protección de terminación de una pila**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS.

1. Seleccione la pila que desee.
**nota**  
Si aparece el texto **NESTED** junto al nombre de la pila, es una pila anidada. Solo es posible cambiar la protección de terminación de la pila raíz a la que pertenece la pila anidada.

1. En el panel de detalles de la pila, seleccione **Stack actions (Acciones de la pila)** y, a continuación, haga clic en **Edit termination protection (Editar protección de terminación)**.

   CloudFormation muestra el cuadro de diálogo **Editar protección de terminación**.

1. Elija **Enable (Habilitar)** o **Disable (Deshabilitar)** y, a continuación, seleccione **Save (Guardar)**.

**Habilitación o deshabilitación de la protección de terminación de una pila anidada**

Si aparece el texto **NESTED** junto al nombre de la pila, es una pila anidada. Solo es posible cambiar la protección de terminación de la pila raíz a la que pertenece la pila anidada. Cambio de la protección de terminación de la pila raíz:

1. Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS.

1. Seleccione la pila anidada que desee.

1. En el panel **Stack info (Información de la pila)**, en la sección **Overview (Información general)**, seleccione el nombre de la pila mostrada como **Root stack (Pila raíz)**.

   CloudFormation muestra los detalles de la pila raíz.

1. Seleccione **Stack actions (Acciones de la pila)** y, a continuación, seleccione **Edit Termination Protection (Editar protección de terminación)**.

   CloudFormation muestra el cuadro de diálogo **Editar protección de terminación**.

1. Elija **Enable (Habilitar)** o **Disable (Deshabilitar)** y, a continuación, seleccione **Save (Guardar)**.

**Habilitación o deshabilitación de la protección de terminación con la línea de comandos**  
Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-termination-protection.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-termination-protection.html).

## Control de quién puede cambiar la protección de terminación de pilas
<a name="protect-stacks-perms"></a>

Para habilitar o deshabilitar la protección de terminación de pilas, un usuario requiere permiso para la acción `cloudformation:UpdateTerminationProtection`. Por ejemplo, la política que figura a continuación permite a los usuarios habilitar o deshabilitar la protección de terminación de pilas.

Para obtener más información acerca de cómo especificar permisos en CloudFormation, consulte [Control del acceso a CloudFormation con AWS Identity and Access Management](control-access-with-iam.md).

**Example Un ejemplo de política que concede permisos para cambiar la protección de terminación de pilas**    
****  

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

# Impida actualizaciones en los recursos de la pila
<a name="protect-stack-resources"></a>

Al crear una pila, todas las acciones de actualización están permitidas en todos los recursos. De forma predeterminada, cualquiera con permisos de actualización de pilas puede actualizar todos los recursos de la pila. Durante una actualización, algunos recursos podría necesitar una interrupción o ser sustituidos por completo, lo que se traduce en nuevos ID físicos o almacenamiento completamente nuevo. Puede impedir la actualización o eliminación involuntaria de recursos de pila durante la actualización de una pila mediante una política de pilas. Una política de pilas es un documento de JSON que describe las acciones de actualización que pueden realizarse en recursos designados.

Después de establecer una política de pilas, todos los recursos de la pila están protegidos de forma predeterminada. Para permitir actualizaciones en recursos concretos, usted especifica una declaración `Allow` explícita para esos recursos en su política de pilas. Solo es posible definir una política de pilas por pila, pero puede proteger varios recursos dentro de una sola política. Una política de pilas se aplica a todos los usuarios de CloudFormation que traten de actualizar la pila. No es posible asociar diferentes políticas de pilas a diferentes usuarios.

La política de pilas se aplica únicamente durante las actualizaciones de la pila. No ofrece controles de acceso como una política de AWS Identity and Access Management (IAM). Utilice una política de pilas solo como un mecanismo a prueba de errores para evitar actualizaciones accidentales de determinados recursos de pila. Para controlar el acceso a recursos o acciones de AWS, utilice IAM.

**Topics**
+ [Definición de una política de pilas](#stack-policy-intro-example)
+ [Definición de una política de pilas](#stack-policy-reference)
+ [Establecimiento de una política de pilas](#protect-stack-resources-protecting)
+ [Actualización de recursos protegidos](#protect-stack-resources-updating)
+ [Modificación de una política de pilas](#protect-stack-resources-modifying)
+ [Más políticas de pilas de ejemplo](#stack-policy-samples)

## Definición de una política de pilas
<a name="stack-policy-intro-example"></a>

El siguiente ejemplo de política de pilas impide actualizaciones al recurso `ProductionDatabase`:

```
{
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    },
    {
      "Effect" : "Deny",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "LogicalResourceId/ProductionDatabase"
    }
  ]
}
```

Cuando establece una política de pilas, todos los recursos de la pila están protegidos de forma predeterminada. Para permitir la actualización de todos los recursos, añadimos una declaración `Allow` que permite todas las acciones en todos los recursos. Aunque la declaración `Allow` especifica todos los recursos, la declaración `Deny` explícita invalida el permiso para el recurso con el ID lógico `ProductionDatabase`. Esta declaración `Deny` impide todas las acciones de actualización, como, por ejemplo, la sustitución o eliminación, en el recurso `ProductionDatabase`.

El elemento `Principal` es necesario, pero solo admite el comodín (`*`), lo que significa que la declaración se aplica a todas las [entidades principales](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#principal).

**nota**  
Durante una actualización de la pila, CloudFormation actualiza automáticamente los recursos que dependen de otros recursos actualizados. Por ejemplo, CloudFormation actualiza un recurso que haga referencia a un recurso actualizado. CloudFormation no realiza cambios físicos, como el ID de recursos, a recursos que se han actualizado automáticamente, pero si hay una política de pilas asociada a esos recursos, debe tener permiso para actualizarlos.

## Definición de una política de pilas
<a name="stack-policy-reference"></a>

Al crear una pila, no hay ninguna política de pilas establecida, por lo que todas las acciones de actualización están permitidas en todos los recursos. Para proteger los recursos de la pila de acciones de actualización, defina una política de pilas y, a continuación, establézcala en la pila. Una política de pilas es un documento JSON que define las acciones de actualización de la pila de CloudFormation que los usuarios de CloudFormation pueden realizar y los recursos a los que se aplican las acciones. Usted establece la política de pilas al crear una pila, especificando un archivo de texto que contiene la política de pilas o escribiéndola. Al establecer una política de pilas en la pila, por defecto se deniega cualquier actualización que no esté permitida de forma explícita.

Puede definir una política de pilas con cinco elementos: `Effect`, `Action`, `Principal`, `Resource` y `Condition`. El siguiente pseudocódigo muestra la sintaxis de la política de la pila.

```
{
  "Statement" : [
    {
      "Effect" : "Deny_or_Allow",
      "Action" : "update_actions",
      "Principal" : "*",
      "Resource" : "LogicalResourceId/resource_logical_ID",
      "Condition" : {
        "StringEquals_or_StringLike" : {
          "ResourceType" : [resource_type, ...]
        }
      }
    }
  ]
}
```

`Effect`  
Determina si las acciones que especifique se denegarán o permitirán en el recurso o recursos que especifique. Puede especificar solamente `Deny` o `Allow`, como por ejemplo:  

```
"Effect" : "Deny"
```
Si una política de pilas incluye declaraciones que se solapan (permitiendo y denegando actualizaciones en un recurso), una declaración `Deny` siempre anula una declaración `Allow`. Para garantizar que un recurso está protegido, utilice una declaración `Deny` para dicho recurso.

Action  
Especifica las acciones de actualización denegadas o permitidas:    
Update:Modify  
Especifica acciones de actualización durante las cuales los recursos podrían no experimentar interrupciones o algunas interrupciones mientras se aplican cambios. Todos los recursos mantienen sus ID físicos.  
Update:Replace  
Especifica acciones de actualización durante las cuales se vuelven a crear recursos. CloudFormation crea un nuevo recurso con las actualizaciones especificadas y, a continuación, elimina el recurso anterior. Dado que se ha vuelto a crear el recurso, el ID físico del recurso nuevo podría ser diferente.  
Update:Delete  
Especifica acciones de actualización durante las cuales se eliminan recursos. Las actualizaciones que eliminan recursos completamente de una plantilla de pila requieren esta acción.  
Update:\$1  
Especifica todas las acciones de actualización. El asterisco es un comodín que representa todas las acciones de actualización.
El siguiente ejemplo muestra cómo especificar tan solo las acciones de sustitución y eliminación:  

```
"Action" : ["Update:Replace", "Update:Delete"]
```
Para permitir todas las acciones de actualización excepto una, utilice `NotAction`. Por ejemplo, para permitir todas las acciones de actualización excepto `Update:Delete`, utilice `NotAction`, tal y como se muestra en este ejemplo:  

```
{
  "Statement" : [
    {
      "Effect" : "Allow",
      "NotAction" : "Update:Delete",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}
```

Principal  
El elemento `Principal` especifica la entidad a la que se aplica la política. El elemento es necesario, pero solo admite el comodín (`*`), lo que significa que la política se aplica a todas las [entidades principales](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#principal).

Recurso  
Especifica el ID lógico de los recursos a los que se aplica a la política. Para especificar tipos de recursos, utilice el elemento `Condition`.  
Para especificar un único recurso, utilice su ID lógico. Por ejemplo:  

```
"Resource" : ["LogicalResourceId/myEC2instance"]
```
Puede utilizar un comodín con ID lógicos. Por ejemplo, si utiliza un prefijo de ID lógico común para todos los recursos relacionados, puede especificar todos ellos con un comodín:  

```
"Resource" : ["LogicalResourceId/CriticalResource*"]
```
También puede utilizar un elemento `Not` con recursos. Por ejemplo, para permitir actualizaciones de todos los recursos a excepción de uno, utilice un elemento `NotResource` para proteger dicho recurso:  

```
{
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "NotResource" : "LogicalResourceId/ProductionDatabase"
    }
  ]
}
```
Al establecer una política de pilas, se deniega cualquier actualización que no esté permitida de forma explícita. Al permitir actualizaciones de todos los recursos, excepto para el recurso `ProductionDatabase`, deniega las actualizaciones del recurso `ProductionDatabase`.

Condiciones  
Especifica el tipo de recurso al que se aplica la política. Para especificar el ID lógico de recursos concretos, utilice el elemento `Resource`.  
Puede especificar un tipo de recurso, como todas las instancias de base de datos de RDS y EC2, tal y como se muestra en el siguiente ejemplo:  

```
{
  "Statement" : [
  {
    "Effect" : "Deny",
    "Principal" : "*",
    "Action" : "Update:*",
    "Resource" : "*",
    "Condition" : {
      "StringEquals" : {
        "ResourceType" : ["AWS::EC2::Instance", "AWS::RDS::DBInstance"]
      }
    }
  },
  {
    "Effect" : "Allow",
    "Principal" : "*",
    "Action" : "Update:*",
    "Resource" : "*"
  }
  ]
}
```
La declaración `Allow` concede permisos de actualización para todos los recursos y la declaración `Deny` deniega actualizaciones a instancias de bases de datos de RDS y EC2. La declaración `Deny` siempre anula acciones de permiso.  
Puede utilizar un comodín con tipos de recursos. Por ejemplo, puede denegar permisos de actualización para todos los recursos de Amazon EC2 (como, por ejemplo, instancias, grupos de seguridad y subredes) utilizando un comodín, tal y como se muestra en el siguiente ejemplo:  

```
"Condition" : {
  "StringLike" : {
    "ResourceType" : ["AWS::EC2::*"]
  }
}
```
Debe utilizar la condición `StringLike` cuando utiliza comodines.

## Establecimiento de una política de pilas
<a name="protect-stack-resources-protecting"></a>

Puede utilizar la consola o la AWS CLI para aplicar una política de pilas al crear una pila. También puede utilizar la AWS CLI para aplicar una política de pilas a una pila existente. Después de aplicar una política de pilas, no puede eliminarla de la pila, pero sí puede utilizar la AWS CLI para modificarla.

Las políticas de pilas se aplican a todos los usuarios de CloudFormation que traten de actualizar la pila. No es posible asociar diferentes políticas de pilas a diferentes usuarios.

Para obtener información sobre la escritura de políticas de pilas, consulte [Definición de una política de pilas](#stack-policy-reference).

**Para definir una política de pilas al crear una pila (consola)**

1. Abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. En la barra de navegación de la parte superior de la pantalla, elija la Región de AWS en la que creó la pila.

1. En la página **CloudFormation Stacks (Pilas de CloudFormation)**, elija **Create Stack (Crear pila)**.

1. En el asistente para crear pilas, en la página **Configure stack options (Configurar opciones de pila)**, expanda la sección **Advanced (Avanzado)** y, a continuación, elija **Stack policy (Política de pila)**.

1. Especifique la política de pila:
   + Para escribir una política directamente en la consola, elija **Enter stack policy (Introducir política de pilas)** y, a continuación, escriba la política de pilas directamente en el campo de texto.
   + Para utilizar una política definida en un archivo aparte, elija **Upload a file (Cargar un archivo)** y, a continuación, **Choose file (Elegir archivo)** para seleccionar el archivo que contiene la política de pilas.

**Para definir una política de pilas al crear una pila (AWS CLI)**
+ Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) con la opción `--stack-policy-body` para escribir una política modificada o la opción `--stack-policy-url` para especificar un archivo que contenga la política. 

**Para establecer una política de pilas en una pila existente (AWS CLI solamente)**
+ Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-stack-policy.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-stack-policy.html) con la opción `--stack-policy-body` para escribir una política modificada o la opción `--stack-policy-url` para especificar un archivo que contenga la política.
**nota**  
Para añadir una política a una pila existente, debe tener permiso para la acción [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetStackPolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetStackPolicy.html) de CloudFormation.

## Actualización de recursos protegidos
<a name="protect-stack-resources-updating"></a>

Para actualizar recursos protegidos, cree una política temporal que anule la política de pilas y permita actualizaciones en esos recursos. Especifique la política de invalidación al actualizar la pila. La política de invalidación no cambia de manera permanente la política de pilas.

Para actualizar recursos protegidos, debe disponer de permiso para utilizar la acción [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetStackPolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetStackPolicy.html) de CloudFormation. Para obtener más información sobre el establecimiento de permisos de CloudFormation, consulte [Control del acceso a CloudFormation con AWS Identity and Access Management](control-access-with-iam.md).

**nota**  
Durante una actualización de la pila, CloudFormation actualiza automáticamente los recursos que dependen de otros recursos actualizados. Por ejemplo, CloudFormation actualiza un recurso que haga referencia a un recurso actualizado. CloudFormation no realiza cambios físicos, como el ID de recursos, a recursos que se han actualizado automáticamente, pero si hay una política de pilas asociada a esos recursos, debe tener permiso para actualizarlos.

**Para actualizar un recurso protegido (consola)**

1. Abra la consola de CloudFormation en [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Seleccione la pila que desea actualizar, elija **Actions (Acciones)** y, a continuación, elija **Update Stack (Actualizar pila)**.

1. Si *no* ha modificado la plantilla de pilas, seleccione **Use current template (Usar plantilla actual)** y, a continuación, haga clic en **Next (Siguiente)**. Si ha modificado la plantilla, seleccione **Replace current template (Sustituir plantilla actual)** y especifique la ubicación de la plantilla actualizada en la sección **Specify template (Especificar plantilla)**:
   + Para una plantilla almacenada localmente en su equipo, seleccione **Upload a template file (Cargar un archivo de plantilla)**. Elija **Choose File (Elegir archivo)** para navegar hasta el archivo y seleccionarlo; a continuación, haga clic en **Next (Siguiente)**.
   + Para una plantilla almacenada en un bucket de Amazon S3, seleccione **Amazon S3 URL** (URL de Amazon S3). Escriba o pegue la URL para la plantilla y, a continuación, haga clic en **Next (Siguiente)**.

     Si tiene una plantilla en un bucket compatible con el control de versiones, puede especificar una versión concreta de la plantilla al adjuntar `?versionId=version-id` a la URL. Para obtener más información, consulte [Trabajo con objetos en un bucket con control de versiones habilitado](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-objects-versioned-bucket.html) en la *Guía del usuario de la consola de Amazon Simple Storage Service*.

1. Si la plantilla contiene parámetros, en la página **Specify stack details (Especificar detalles de pila)** escriba o modifique los valores de los parámetros y, a continuación, elija **Next (Siguiente)**.

   CloudFormation rellenará cada parámetro con el valor que actualmente está establecido en la pila excepto los parámetros declarados con el atributo `NoEcho`. Puede utilizar los valores actuales para los parámetros eligiendo **Use existing value (Usar valor existente)**.

   Para obtener más información sobre el uso de `NoEcho` para enmascarar información confidencial y el uso de los parámetros dinámicos para la administración de secretos, consulte la práctica recomendada de [No integre credenciales en sus plantillas](security-best-practices.md#creds).

1. Especifique una política de pila de sustitución.

   1. En la página **Configure stack options (Configurar opciones de pila)**, en la sección **Advanced options (Opciones avanzadas)**, seleccione **Stack policy (Política de pila)**.

   1. Seleccione **Upload a file (Cargar un archivo)**.

   1. Haga clic en **Choose file (Seleccionar un archivo)** y desplácese hasta el archivo que contiene la política de pila de sustitución o escriba una política.

   1. Elija **Siguiente**.

   La política de invalidación debe especificar una declaración `Allow` para los recursos protegidos que desea actualizar. Por ejemplo, para actualizar todos los recursos protegidos, especifique una política de invalidación temporal que permita todas las actualizaciones:

   ```
   {
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : "Update:*",
         "Principal": "*",
         "Resource" : "*"
       }
     ]
   }
   ```
**nota**  
CloudFormation aplica la política de invalidación solo durante esta actualización. La política de invalidación no cambia de manera permanente la política de pilas. Para modificar una política de pilas, consulte [Modificación de una política de pilas](#protect-stack-resources-modifying).

1. Revise la información de la pila y los cambios que ha enviado.

   Compruebe que ha enviado la información correcta, como la URL de la plantilla o los valores de los parámetros correctos. Si la plantilla contiene recursos de IAM, elija **I acknowledge that this template may create IAM resources (Confirmo que esta plantilla pueda crear recursos de IAM)** para especificar que desea utilizar recursos de IAM en la plantilla. Para obtener más información, consulte [Reconocimiento de recursos de IAM en plantillas de CloudFormation](control-access-with-iam.md#using-iam-capabilities).

   En la sección **Vista previa de los cambios**, compruebe que CloudFormation realice todos los cambios que espera. Por ejemplo, compruebe que CloudFormation añade, elimina y modifica los recursos que usted pretendía añadir, eliminar o modificar. CloudFormation genera esta vista previa mediante la creación de un conjunto de cambios para la pila. Para obtener más información, consulte [Actualización de pilas de CloudFormation con conjuntos de cambios](using-cfn-updating-stacks-changesets.md).

1. Cuando esté satisfecho con los cambios, haga clic en **Update (Actualizar)**.
**nota**  
En este momento, también tiene la opción de ver el conjunto de cambios para revisar las actualizaciones propuestas más detenidamente. Para hacerlo, haga clic en **View change set** (Ver el conjunto de cambios) en lugar de **Update** (Actualizar). CloudFormation muestra el conjunto de cambios generados en función de sus actualizaciones. Cuando esté listo para actualizar la pila, haga clic en **Execute (Ejecutar)**.

   CloudFormation muestra la página **Stack details (Detalles de pila)** de la pila. La pila ahora tiene un estado `UPDATE_IN_PROGRESS`. Una vez que CloudFormation haya terminado correctamente de actualizar la pila, establece el estado de la pila en `UPDATE_COMPLETE`.

   Si se produce un error en la actualización de la pila, CloudFormation restaura automáticamente los cambios y establece el estado de la pila en `UPDATE_ROLLBACK_COMPLETE`.

**Para actualizar un recurso protegido (AWS CLI)**
+ Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html) con la opción `--stack-policy-during-update-body` para escribir una política modificada o la opción `--stack-policy-during-update-url` para especificar un archivo que contenga la política.
**nota**  
CloudFormation aplica la política de invalidación solo durante esta actualización. La política de invalidación no cambia de manera permanente la política de pilas. Para modificar una política de pilas, consulte [Modificación de una política de pilas](#protect-stack-resources-modifying).

## Modificación de una política de pilas
<a name="protect-stack-resources-modifying"></a>

Para proteger recursos adicionales o para eliminar la protección de recursos, modifique la política de pilas. Por ejemplo, cuando añada a su pila una base de datos que desea proteger, añada una declaración `Deny` para esa base de datos a la política de pilas. Para modificar la política, debe disponer de permiso para utilizar la acción [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetStackPolicy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetStackPolicy.html).

Utilice la AWS CLI para modificar las políticas de pilas.

**Para modificar una política de pilas (AWS CLI)**
+ Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-stack-policy.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/set-stack-policy.html) con la opción `--stack-policy-body` para escribir una política modificada o la opción `--stack-policy-url` para especificar un archivo que contenga la política.

No puede eliminar una política de pilas. Para eliminar toda la protección de todos los recursos, usted modifica la política para permitir explícitamente todas las acciones en todos los recursos. La siguiente política permite todas las actualizaciones en todos los recursos:

```
{
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}
```

## Más políticas de pilas de ejemplo
<a name="stack-policy-samples"></a>

Las siguientes políticas de ejemplo muestran cómo evitar actualizaciones en todos los recursos de la pila y en recursos concretos, y cómo prevenir determinados tipos de actualizaciones.

### Impida actualizaciones en todos los recursos de la pila
<a name="w2aac43c15c21b5"></a>

Para impedir las actualizaciones de todos los recursos de la pila, la siguiente política especifica una declaración `Deny` para todas las acciones de actualización en todos los recursos.

```
{
  "Statement" : [
    {
      "Effect" : "Deny",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}
```

### Impida actualizaciones en un solo recurso
<a name="w2aac43c15c21b7"></a>

La siguiente política deniega todas las acciones de actualización en la base de datos con el ID lógico `MyDatabase`. Permite todas las acciones de actualización en los recursos de pila restantes con una declaración `Allow`. La declaración `Allow` no se aplica al recurso `MyDatabase` porque la declaración `Deny` siempre invalida las acciones de permiso.

```
{
  "Statement" : [
    {
      "Effect" : "Deny",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "LogicalResourceId/MyDatabase"
    },
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}
```

Puede conseguir el mismo resultado que el ejemplo anterior mediante una denegación predeterminada. Al establecer una política de pilas, CloudFormation deniega cualquier actualización que no esté permitida de forma explícita. La siguiente política permite las actualizaciones de todos los recursos, excepto para el recurso `ProductionDatabase`, que se deniega de forma predeterminada.

```
{
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "NotResource" : "LogicalResourceId/ProductionDatabase"
    }
  ]
}
```

**importante**  
Existe riesgo en la utilización de una denegación predeterminada. Si dispone de una declaración `Allow` en otro punto de la política (como, por ejemplo, una declaración `Allow` que utiliza un comodín), podría conceder sin saberlo permiso de actualización a recursos que no tenía la intención de hacerlo. Dado que una denegación explícita invalida cualquier acción de permiso, puede garantizar la protección de un recurso mediante una declaración `Deny`.

### Impida las actualizaciones de todas las instancias de un tipo de recurso
<a name="w2aac43c15c21b9"></a>

La siguiente política deniega todas las acciones de actualización en el tipo de recurso de instancia de base de datos de RDS. Permite todas las acciones de actualización en los recursos de pila restantes con una declaración `Allow`. La declaración `Allow` no se aplica a los recursos de instancia de base de datos de RDS porque una declaración `Deny` siempre invalida las acciones de permiso.

```
{
  "Statement" : [
    {
      "Effect" : "Deny",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*",
      "Condition" : {
        "StringEquals" : {
          "ResourceType" : ["AWS::RDS::DBInstance"]
        }
      }
    },
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}
```

### Evite las actualizaciones de sustitución de una instancia
<a name="w2aac43c15c21c11"></a>

La siguiente política deniega las actualizaciones que provocarían una sustitución de la instancia por el ID lógico `MyInstance`. Permite todas las acciones de actualización en los recursos de pila restantes con una declaración `Allow`. La declaración `Allow` no se aplica al recurso `MyInstance` porque la declaración `Deny` siempre invalida las acciones de permiso.

```
{
  "Statement" : [
    {
      "Effect" : "Deny",
      "Action" : "Update:Replace",
      "Principal": "*",
      "Resource" : "LogicalResourceId/MyInstance"
    },
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}
```

### Evite las actualizaciones de pilas anidadas
<a name="w2aac43c15c21c13"></a>

La siguiente política deniega todas las acciones de actualización en el tipo de recurso de pila de CloudFormation (pilas anidadas). Permite todas las acciones de actualización en los recursos de pila restantes con una declaración `Allow`. La declaración `Allow` no se aplica a los recursos de pila de CloudFormation porque la declaración `Deny` siempre invalida las acciones de permiso.

```
{
  "Statement" : [
    {
      "Effect" : "Deny",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*",
      "Condition" : {
        "StringEquals" : {
          "ResourceType" : ["AWS::CloudFormation::Stack"]
        }
      }
    },
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}
```

# Protección de los datos en CloudFormation
<a name="security-data-protection"></a>

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

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

Se recomienda encarecidamente no introducir nunca información confidencial o sensible, como por ejemplo, direcciones de correo electrónico de clientes, en etiquetas o campos de formato libre, tales como el campo **Nombre**. Esto incluye las situaciones en las que debe trabajar con la CloudFormation u otros Servicios de AWS a través de la consola, la API, la AWS CLI o los SDK de AWS. Cualquier dato que ingrese en etiquetas o campos de texto de formato libre utilizados para nombres se puede emplear para los registros de facturación o diagnóstico. Si proporciona una URL a un servidor externo, recomendamos encarecidamente que no incluya la información de las credenciales en la URL para validar la solicitud para ese servidor.

## Cifrado en reposo
<a name="security-data-protection-encryption-at-rest"></a>

En consonancia con el modelo de responsabilidad compartida de AWS, CloudFormation almacena los datos cifrados en reposo. Los clientes son responsables de establecer políticas de cifrado y almacenamiento para los datos almacenados en las cuentas. Por ejemplo, se recomienda habilitar el cifrado en reposo para plantillas y otros datos almacenados en buckets de S3 o temas de SNS. Los clientes definen de manera similar la configuración de cifrado para cualquier sistema de almacenamiento de datos aprovisionado por CloudFormation.

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

CloudFormation utiliza canales cifrados para las comunicaciones de servicios en el modelo de responsabilidad compartida.

## Privacidad del tráfico entre redes
<a name="security-data-protection-internetwork-traffic-privacy"></a>

Las comunicaciones de servicio de CloudFormation se cifran de forma segura de forma predeterminada entre regiones o zonas de disponibilidad.

# Control del acceso a CloudFormation con AWS Identity and Access Management
<a name="control-access-with-iam"></a>

Con AWS Identity and Access Management (IAM), puede crear usuarios de IAM para controlar quién tiene acceso a recursos específicos en su Cuenta de AWS. Cuando utiliza IAM, puede controlar lo que los usuarios pueden hacer con CloudFormation; por ejemplo, si pueden ver las plantillas de pila, crear pilas o eliminar pilas.

Además de acciones específicas de CloudFormation, puede administrar qué servicios y recursos de AWS están disponibles para cada usuario. De esa manera, puede controlar a qué recursos pueden obtener acceso los usuarios cuando utilizan CloudFormation. Por ejemplo, puede especificar qué usuarios pueden crear instancias Amazon EC2, terminar instancias de base de datos o actualizar VPC. Estos mismos permisos se aplican siempre que utilizan CloudFormation para realizar esas acciones.

Utilice la información de las siguientes secciones para controlar quién puede acceder a CloudFormation. También analizaremos cómo autorizar la creación de recursos de IAM en plantillas, conceder a las aplicaciones que se ejecutan en instancias EC2 los permisos que necesitan y utilizar credenciales de seguridad temporales para mejorar la seguridad en su entorno de AWS.

## Definición de políticas de IAM basadas en identidad para CloudFormation
<a name="iam-id-based-policies"></a>

Para dar acceso a CloudFormation, debe crear y asignar políticas de IAM que den a sus identidades de IAM (como usuarios o roles) permiso para llamar a las acciones de API que necesitan.

Con las políticas basadas en identidad de IAM, puede especificar las acciones y recursos permitidos o denegados. CloudFormation admite acciones, claves de condiciones y recursos específicos. 

Si es la primera vez que utiliza IAM, comience por familiarizarse con los elementos de una política JSON de IAM. Para obtener más información, consulte [Referencia de los elementos de la política de JSON de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) en la *Guía del usuario de IAM*. Para aprender a crear políticas de IAM, complete el tutorial [Crear y asociar su primera política administrada por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) en la documentación de IAM.

**Topics**
+ [Acciones de política para CloudFormation](#using-iam-actions)
+ [Acciones específicas de la consola de CloudFormation](#console-specific-actions)
+ [Recursos de políticas para CloudFormation](#resource-level-permissions)
+ [Claves de condición de políticas para CloudFormation](#using-iam-conditions)

### Acciones de política para CloudFormation
<a name="using-iam-actions"></a>

En el elemento `Action` de la instrucción de la política de IAM, puede especificar cualquier acción de API que CloudFormation ofrezca. Debe anteponer el nombre de la acción con la cadena `cloudformation:` en minúsculas. Por ejemplo, `cloudformation:CreateStack`, `cloudformation:CreateChangeSet` y `cloudformation:UpdateStack`.

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

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

También puede utilizar caracteres comodín para especificar varias acciones. Por ejemplo, puede especificar todas las acciones cuyos nombres comiencen con la palabra `Get` del siguiente modo:

```
"Action": "cloudformation:Get*"
```

Para ver una lista completa de las acciones asociadas al prefijo de servicio `cloudformation`, consulte [Actions, resources, and condition keys for CloudFormation](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html) y [Actions, resources, and condition keys for API de control de nube de AWS](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudcontrolapi.html) en la *Referencia de autorización de servicios*.

#### Ejemplos
<a name="using-iam-actions-examples"></a>

A continuación se muestra un ejemplo de una política de permisos que concede permisos para ver las pilas de CloudFormation.

**Example 1: Una política de ejemplo que concede permisos para ver la pila**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[{
        "Effect":"Allow",
        "Action":[
            "cloudformation:DescribeStacks",
            "cloudformation:DescribeStackEvents",
            "cloudformation:DescribeStackResource",
            "cloudformation:DescribeStackResources"
        ],
        "Resource":"*"
    }]
}
```

Los usuarios que crean o eliminan pilas necesitan permisos adicionales en función de sus plantillas de pilas. Por ejemplo, si su plantilla describe una cola de Amazon SQS, los usuarios deben tener permisos para las acciones de CloudFormation y Amazon SQS, tal como se muestra en la siguiente política de ejemplo.

**Example 2: Una política de ejemplo que concede acciones de creación y visualización de pila y todas las acciones Amazon SQS**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[{
        "Effect":"Allow",
        "Action":[
            "sqs:*",
            "cloudformation:CreateStack",
            "cloudformation:DescribeStacks",
            "cloudformation:DescribeStackEvents",
            "cloudformation:DescribeStackResources",
            "cloudformation:GetTemplate",
            "cloudformation:ValidateTemplate"  
        ],
        "Resource":"*"
    }]
}
```

### Acciones específicas de la consola de CloudFormation
<a name="console-specific-actions"></a>

Los usuarios de la consola de CloudFormation requieren permisos adicionales ademas de los necesarios para AWS Command Line Interface o las API de CloudFormation. Estos permisos adicionales admiten características específicas de la consola, como la carga de plantillas a buckets de Amazon S3 y listas desplegables para tipos de parámetros específicos de AWS.

Para todas las acciones enumeradas a continuación, conceda permisos a todos los recursos; no los limite a pilas o buckets específicos.

La siguiente acción se utiliza únicamente por la consola de CloudFormation y no se documenta en la referencia de la API. La acción permite a los usuarios cargar plantillas para buckets de Amazon S3.
+ `cloudformation:CreateUploadBucket`

Cuando los usuarios cargan plantillas, también necesitan los siguientes permisos de Amazon S3:
+ `s3:PutObject`
+ `s3:ListBucket`
+ `s3:GetObject`
+ `s3:CreateBucket`

Para ver los valores en las listas desplegables de parámetros en las plantillas con tipos de parámetros específicos de AWS, los usuarios necesitan permisos para realizar las llamadas a la API correspondientes. Por ejemplo, se requieren los siguientes permisos cuando se utilizan estos tipos de parámetros en la plantilla:
+  `ec2:DescribeKeyPairs`: necesario para el tipo de parámetro `AWS::EC2::KeyPair::KeyName`.
+ `ec2:DescribeSecurityGroups`: necesario para el tipo de parámetro `AWS::EC2::SecurityGroup::Id`.
+ `ec2:DescribeSubnets`: necesario para el tipo de parámetro `AWS::EC2::Subnet::Id`.
+ `ec2:DescribeVpcs`: necesario para el tipo de parámetro `AWS::EC2::VPC::Id`.

Para obtener información acerca de los parámetros específicos de AWS, consulte [Definición de recursos existentes en tiempo de ejecución con tipos de parámetros proporcionados por CloudFormation](cloudformation-supplied-parameter-types.md).

### Recursos de políticas para CloudFormation
<a name="resource-level-permissions"></a>

En una instrucción de política de IAM, el elemento `Resource` especifica el objeto o los objetos que abarca la instrucción. Para CloudFormation, cada declaración de política de IAM se aplica a los recursos que especifique mediante su Nombre de recurso de Amazon (ARN). El formato específico de ARN depende del recurso. 

Para ver una lista completa de los tipos de recursos de CloudFormation y sus ARN, consulte [Resource types defined by CloudFormation](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html#awscloudformation-resources-for-iam-policies) en la *Referencia de autorización de servicios*. Para saber qué acciones puede especificar con el ARN de cada recurso, consulte [Actions defined by CloudFormation](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html#awscloudformation-actions-as-permissions).

Puede especificar acciones para una pila específica, tal como se muestra en el siguiente ejemplo de política. Cuando proporcione un ARN, reemplace el `placeholder text` por la información específica del recurso. 

**Example 1: Una política de ejemplo que deniegue las acciones de eliminación y actualización de pila para la pila especificada.**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "cloudformation:DeleteStack",
                "cloudformation:UpdateStack"
            ],
            "Resource": "arn:aws:cloudformation:us-east-1:111122223333:stack/MyProductionStack/*"
        }
    ]
}
```

La política anterior utiliza un comodín al final del nombre de la pila a fin de denegar la pila de eliminación y la pila de actualización en el ID de pila completo (como, por ejemplo, `arn:aws:cloudformation:region:account-id:stack/MyProductionStack/abc9dbf0-43c2-11e3-a6e8-50fa526be49c`) y en el nombre de la pila (como, por ejemplo, `MyProductionStack`).

Para permitir que las transformaciones `AWS::Serverless` creen un cambio, incluya el permiso en el nivel de recursos `arn:aws:cloudformation:region:aws:transform/Serverless-2016-10-31`, tal y como se muestra en la política siguiente.

**Example 2: Una política de ejemplo que permite la acción de creación de conjunto de cambios para la transformación especificada.**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet"
            ],
            "Resource": "arn:aws:cloudformation:us-east-1:aws:transform/Serverless-2016-10-31"
        }
    ]
}
```

### Claves de condición de políticas para CloudFormation
<a name="using-iam-conditions"></a>

En una declaración de política de IAM, puede especificar opcionalmente condiciones que determinan cuándo una política está en efecto. Por ejemplo, puede definir una política que permite a los usuarios de crear una pila solo cuando se especifica una URL de plantilla determinada. Puede definir las condiciones específicas de CloudFormation y las condiciones generales de AWS como, por ejemplo, `DateLessThan`, que especifica en qué momento una política deja de estar en vigor. Para obtener más información y una lista de las condiciones generales de AWS, consulte Condition (Condición) en la [referencia de los elementos de las políticas de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Condition) en la *Guía del usuario de IAM*.

**nota**  
No utilice la condición general `aws:SourceIp` de AWS. CloudFormation aprovisiona recursos utilizando su propia dirección IP, no la dirección IP de la solicitud de origen. Por ejemplo, al crear una pila, CloudFormation lleva a cabo solicitudes desde su dirección IP para lanzar una instancia de Amazon EC2 o para crear un bucket de Amazon S3, en lugar de hacerlo desde la dirección IP de la llamada a `CreateStack` o el comando **create-stack**.

En la siguiente lista se describen las condiciones específicas de CloudFormation. Las condiciones se aplican únicamente cuando los usuarios crean o actualizan pilas:

`cloudformation:ChangeSetName`  
Nombre de conjunto de cambios de CloudFormation que desea asociar con una política. Utilice esta condición para controlar qué conjuntos de cambios pueden ejecutar o eliminar los usuarios de .

`cloudformation:ImportResourceTypes`  
Los tipos de recursos de plantilla que quiere asociar a una política como, por ejemplo, `AWS::EC2::Instance`. Utilice esta condición para controlar con qué tipos de recursos pueden trabajar los usuarios de al importar recursos a una pila. Esta condición se compara con los tipos de recursos que los usuarios declaran en el parámetro `ResourcesToImport`, que es compatible actualmente solo para solicitudes de la AWS CLI y la API. Al utilizar este parámetro, debe especificar todos los tipos de recursos que desea que los usuarios controlen durante las operaciones de importación. Para obtener más información sobre el parámetro `ResourcesToImport`, consulte la acción [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateChangeSet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateChangeSet.html) en la *Referencia de la API de AWS CloudFormation*.  
Para obtener una lista de posibles `ResourcesToImport`, consulte [Tipo de recurso compatible](resource-import-supported-resources.md).  
Utilice la convención de nomenclatura de recursos de tres partes para especificar con qué tipos de recursos pueden trabajar los usuarios, desde todos los recursos de una organización hasta un tipo de recurso individual.    
`organization::*`  
Especifique todos los tipos de recursos para una organización determinada.  
`organization::service_name::*`  
Especifique todos los tipos de recursos para el servicio especificado dentro de una organización determinada.  
`organization::service_name::resource_type`  
Especifique un tipo de recurso específico.
Por ejemplo:    
`AWS::*`  
Especifique todos los tipos de recursos de AWS admitidos.  
`AWS::service_name::*`  
Especifique todos los recursos admitidos de un servicio de AWS específico.  
`AWS::service_name::resource_type`  
Especifique un tipo de recurso de AWS específico, como, por ejemplo, `AWS::EC2::Instance` (todas las instancias de EC2).

`cloudformation:ResourceTypes`  
Los tipos de recursos de plantilla como, por ejemplo `AWS::EC2::Instance`, que desea asociar con una política. Utilice esta condición para controlar con qué tipo de recursos pueden trabajar los usuarios de al crear o actualizar una pila. Esta condición se compara con los tipos de recursos que los usuarios declaran en el parámetro `ResourceTypes`, que es compatible actualmente solo para solicitudes de la AWS CLI y la API. Cuando se utiliza este parámetro, los usuarios deben especificar todos los tipos de recursos presentes en su plantilla. Para obtener más información sobre el parámetro `ResourceTypes`, consulte la acción [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html) en la *Referencia de la API de AWS CloudFormation*.  
Para obtener una lista de los tipos de recursos, consulte la [Guía de referencia de plantillas de CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/introduction.html).  
Utilice la convención de nomenclatura de recursos de tres partes para especificar con qué tipos de recursos pueden trabajar los usuarios, desde todos los recursos de una organización hasta un tipo de recurso individual.    
`organization::*`  
Especifique todos los tipos de recursos para una organización determinada.  
`organization::service_name::*`  
Especifique todos los tipos de recursos para el servicio especificado dentro de una organización determinada.  
`organization::service_name::resource_type`  
Especifique un tipo de recurso específico.
Por ejemplo:    
`AWS::*`  
Especifique todos los tipos de recursos de AWS admitidos.  
`AWS::service_name::*`  
Especifique todos los recursos admitidos de un servicio de AWS específico.  
`AWS::service_name::resource_type`  
Especifique un tipo de recurso de AWS específico, como, por ejemplo, `AWS::EC2::Instance` (todas las instancias de EC2).  
`Alexa::ASK::*`  
Especifique todos los tipos de recursos en Alexa Skill Kit.  
`Alexa::ASK::Skill`  
Especifique el tipo de recursos individual de [Alexa::ASK::Skill](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/alexa-resource-ask-skill.html).  
`Custom::*`  
Especifique todos los recursos personalizados.  
Para obtener más información, consulte [Crear una lógica de aprovisionamiento personalizada con recursos personalizados](template-custom-resources.md).  
`Custom::resource_type`  
Especifique un tipo de recurso personalizado específico.  
Para obtener más información, consulte [Crear una lógica de aprovisionamiento personalizada con recursos personalizados](template-custom-resources.md).

`cloudformation:RoleARN`  
El Nombre de recurso de Amazon (ARN) de un rol de servicio de IAM que desea asociar con una política. Utilice esta condición para controlar qué rol de servicio pueden utilizar los usuarios de al trabajar con pilas o conjuntos de cambios.

`cloudformation:StackPolicyUrl`  
Una URL de política de pila de Amazon S3 que desea asociar con una política. Utilice esta condición para controlar qué políticas de pila pueden asociar los usuarios de con una pila durante una acción de creación o actualización de la pila. Para obtener más información sobre las políticas de pila, consulte [Impida actualizaciones en los recursos de la pila](protect-stack-resources.md).  
Para garantizar que los usuarios solo pueden crear o actualizar pilas con las políticas de pila que ha subido, establezca el bucket de S3 en modo de lectura para dichos usuarios.

`cloudformation:TemplateUrl`  
Una URL de plantilla de Amazon S3 que desea asociar con una política. Utilice esta condición para controlar qué plantillas pueden usar los usuarios de al crear o actualizar pilas.  
Para garantizar que los usuarios de solo pueden crear o actualizar pilas con las plantillas que ha subido, establezca el bucket de S3 en modo de lectura para dichos usuarios.
Las siguientes condiciones específicas para CloudFormation se aplican a los parámetros API del mismo nombre:  
+ `cloudformation:ChangeSetName`
+ `cloudformation:RoleARN`
+ `cloudformation:StackPolicyUrl`
+ `cloudformation:TemplateUrl`
Por ejemplo, `cloudformation:TemplateUrl` sólo se aplica al `TemplateUrl` parámetro para `CreateStack``UpdateStack`, y `CreateChangeSet` las API.

Para ver ejemplos de políticas de IAM que utilizan claves de condición para controlar el acceso, consulte [Ejemplos de políticas basadas en identidad de IAM para CloudFormation](security_iam_id-based-policy-examples.md).

## Reconocimiento de recursos de IAM en plantillas de CloudFormation
<a name="using-iam-capabilities"></a>

Antes de crear una pila, CloudFormation valida la plantilla. Durante la validación, CloudFormation comprueba la plantilla en busca de recursos de IAM que podría crear. Los recursos de IAM, como un usuario con acceso completo, pueden obtener acceso y modificar cualquier recurso en su cuenta de Cuenta de AWS. Por lo tanto, le sugerimos que revise los permisos asociados a cada recurso de IAM antes de continuar para no crear involuntariamente recursos con permisos escalados. Para garantizar que lo ha hecho, debe confirmar que la plantilla contiene dichos recursos, lo que concede a CloudFormation las capacidades especificadas antes de crear la pila.

Puede confirmar las capacidades de plantillas de CloudFormation a través de la consola de CloudFormation, la AWS Command Line Interface (AWS CLI) o la API:
+ En la consola de CloudFormation, en la página **Configurar opciones de pila** de los asistentes para crear o actualizar una pila, elija **Confirmo que esta plantilla pueda crear recursos de IAM**.
+ En la AWS CLI, cuando utilice los comandos [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) y [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html), especifique el valor `CAPABILITY_IAM` o `CAPABILITY_NAMED_IAM` para la opción `--capabilities`. Si la plantilla incluye recursos de IAM, puede especificar cualquiera de las dos capacidades. Si la plantilla incluye nombres personalizados para recursos de IAM, debe especificar `CAPABILITY_NAMED_IAM`.
+ En la API, cuando utiliza las acciones [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html) y [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_UpdateStack.html) especifique `Capabilities.member.1=CAPABILITY_IAM` o `Capabilities.member.1=CAPABILITY_NAMED_IAM`. Si la plantilla incluye recursos de IAM, puede especificar cualquiera de las dos capacidades. Si la plantilla incluye nombres personalizados para recursos de IAM, debe especificar `CAPABILITY_NAMED_IAM`.

**importante**  
Si la plantilla contiene recursos de IAM con nombre personalizado, no cree varias pilas reutilizando la misma plantilla. Los recursos de IAM deben ser únicos globalmente en su cuenta. Si utiliza la misma plantilla para crear varias pilas en diferentes regiones, las pilas podrían compartir los mismos recursos de IAM, en lugar de que cada una tenga uno único. Los recursos compartidos entre pilas pueden tener consecuencias imprevistas de las que podría no recuperarse. Por ejemplo, si elimina o actualiza recursos de IAM compartidos en una pila, modificará involuntariamente los recursos de otras pilas.

## Administración de credenciales para aplicaciones que se ejecutan en instancias de Amazon EC2
<a name="using-iam-manage-creds"></a>

Si tiene una aplicación que se ejecuta en una instancia de Amazon EC2 y necesita llevar a cabo solicitudes a recursos de AWS, como buckets de Amazon S3 o una tabla de DynamoDB, la aplicación necesita credenciales de seguridad de AWS. Sin embargo, distribuir e incrustar credenciales de seguridad a largo plazo en cada instancia lanzada es un reto y un posible riesgo para la seguridad. En lugar de utilizar credenciales a largo plazo, como credenciales de usuario de IAM, le recomendamos que cree un rol de IAM que esté asociado a una instancia Amazon EC2 cuando se lance la instancia. Una aplicación puede obtener credenciales de seguridad temporales para la instancia Amazon EC2. No tiene que incrustar credenciales a largo plazo en la instancia. Además, para facilitar la administración de credenciales, puede especificar tan solo un rol individual para múltiples instancias Amazon EC2, no tiene que crear credenciales exclusivas para cada instancia.

Para obtener un fragmento de código de plantilla que muestre cómo lanzar una instancia con un rol, consulte [Ejemplos de plantillas de rol de IAM](quickref-iam.md#scenarios-iamroles).

**nota**  
Las aplicaciones en las instancias que utilizan credenciales de seguridad temporales pueden llamar a cualquier acción de CloudFormation. No obstante, debido a que CloudFormation interactúa con muchos otros servicios de AWS, debe verificar que todos los servicios que desea utilizar admiten las credenciales de seguridad temporales. Para obtener una lista de los servicios que aceptan credenciales de seguridad temporales, consulte [los serviciosAWS que funcionan con IAM ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) en la*Guía del usuario de IAM*.

## Concesión de acceso temporal (acceso federado)
<a name="using-iam-grant-access"></a>

En algunos casos, es posible que desee conceder a los usuarios sin credenciales de AWS acceso temporal a su Cuenta de AWS. En lugar de crear y eliminar credenciales a largo plazo siempre que desee conceder acceso temporal, utilice AWS Security Token Service (AWS STS). Por ejemplo, puede utilizar roles de IAM. Desde un rol de IAM, puede crear mediante programación y, a continuación, distribuir muchas credenciales de seguridad temporales (que incluyen una clave de acceso, una clave de acceso secreta y un token de seguridad). Estas credenciales tienen una vida útil limitada, por lo que no pueden utilizarse para obtener acceso a su Cuenta de AWS cuando vencen. También puede crear varios roles de IAM con el fin de conceder a usuarios individuales diferentes niveles de permisos. Los roles de IAM resultan útiles para situaciones como identidades federadas y el inicio de sesión único.

Una identidad federada es una identidad diferenciada que puede utilizar en varios sistemas. Para los usuarios de nivel Enterprise con un sistema de identidad on-premises establecido (como, por ejemplo, LDAP o Active Directory), puede tratar todas las autenticaciones con el sistema de identidad on-premises. Cuando se ha autenticado a un usuario, proporciona credenciales de seguridad temporales del usuario o del rol de IAM apropiado. Por ejemplo, puede crear un rol de administradores y un rol de desarrolladores, en los que los administradores tengan acceso completo a la cuenta de AWS y los desarrolladores tengan permiso para trabajar únicamente con pilas de CloudFormation. Una vez que un administrador está autenticado, el administrador está autorizado para obtener credenciales de seguridad temporales del rol de administradores. Sin embargo, para los desarrolladores, pueden obtener credenciales de seguridad temporales solo del rol de desarrolladores.

También puede conceder a los usuarios federados acceso a la Consola de administración de AWS. Después de que los usuarios se autentican con su sistema de identidad on-premises, puede construir mediante programación una URL temporal que proporcione acceso directo a la Consola de administración de AWS. Cuando los usuarios utilizan la URL temporal, no es necesario que inicien sesión en AWS, dado que ya se han autenticado (inicio de sesión único). Además, dado que la URL se construye a partir de las credenciales de seguridad temporales de los usuarios, los permisos que están disponibles con esas credenciales determinan qué permisos tienen los usuarios en la Consola de administración de AWS.

Puede utilizar diferentes API de AWS STS para generar credenciales de seguridad temporales. Para obtener más información sobre qué API usar, consulte [Comparación de credenciales AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_sts-comparison.html) en la *Guía del usuario de IAM*.

**importante**  
No puede trabajar con IAM cuando utiliza credenciales de seguridad temporales que se han generado a partir de la API `GetFederationToken`. En lugar de ello, si tiene que trabajar con IAM, utilice credenciales de seguridad temporales de un rol.

CloudFormation interactúa con muchos otros servicios de AWS. Al utilizar credenciales de seguridad temporales con CloudFormation, verifique que todos los servicios que desea utilizar son compatibles con las credenciales de seguridad temporales. Para obtener una lista de los servicios que aceptan credenciales de seguridad temporales, consulte [los serviciosAWS que funcionan con IAM ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) en la*Guía del usuario de IAM*.

Para obtener más información, consulte los siguientes recursos relacionados en la *Guía del usuario de IAM*:
+ [Escenarios habituales en las credenciales temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html#sts-introduction)
+ [Permitir el acceso del agente de identidades personalizadas a la consola de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html)

# Ejemplos de políticas basadas en identidad de IAM para CloudFormation
<a name="security_iam_id-based-policy-examples"></a>

De forma predeterminada, los usuarios y roles de IAM no tienen permiso para crear ni modificar los recursos de CloudFormation. Tampoco puede realizar tareas mediante la Consola de administración de AWS, la AWS Command Line Interface (AWS CLI) o la API de AWS. Un administrador de IAM puede crear políticas de IAM para conceder permisos a los usuarios para realizar acciones en los recursos que necesitan. A continuación, el administrador puede añadir las políticas de IAM a roles y los usuarios pueden asumirlos. Para obtener más información, consulte [Definición de políticas de IAM basadas en identidad para CloudFormation](control-access-with-iam.md#iam-id-based-policies).

Los siguientes ejemplos muestran instrucciones de política que puede utilizar para permitir o denegar permisos para usar una o más acciones de CloudFormation. 

**Topics**
+ [Requerir una URL de plantilla específica](#w2aac43c23c17b9)
+ [Denegar todas las operaciones de importación de CloudFormation](#w2aac43c23c17c11)
+ [Permitir operaciones de importación para tipos de recursos específicos](#w2aac43c23c17c13)
+ [Denegar recursos de IAM en plantillas de pila](#w2aac43c23c17c15)
+ [Permitir la creación de pilas con tipos de recursos específicos](#w2aac43c23c17c17)
+ [Controlar el acceso basado en acciones de API que modifican recursos](#w2aac43c23c17c19)
+ [Restringir las operaciones de conjuntos de pilas según la región y los tipos de recursos](#resource-level-permissions-service-managed-stack-set)
+ [Permitir todas las operaciones del generador de IaC](#iam-policy-example-for-iac-generator)

## Requerir una URL de plantilla específica
<a name="w2aac43c23c17b9"></a>

La siguiente política otorga permisos para usar únicamente la URL de la plantilla `https://s3.amazonaws.com/amzn-s3-demo-bucket/test.template` para crear o actualizar una pila.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:UpdateStack"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudformation:TemplateUrl": [
                        "https://s3.amazonaws.com/amzn-s3-demo-bucket/test.template"
                    ]
                }
            }
        }
    ]
}
```

------

## Denegar todas las operaciones de importación de CloudFormation
<a name="w2aac43c23c17c11"></a>

La siguiente política otorga permisos para completar todas las operaciones de CloudFormation, excepto las operaciones de importación.

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

****  

```
{ 
  "Version":"2012-10-17",		 	 	  
  "Statement": [ 
    { 
      "Sid": "AllowAllStackOperations",
      "Effect": "Allow", 
      "Action": "cloudformation:*", 
      "Resource": "*" 
    }, 
    { 
      "Sid": "DenyImport", 
      "Effect": "Deny", 
      "Action": "cloudformation:*", 
      "Resource": "*",
      "Condition": { 
        "ForAnyValue:StringLike": {
          "cloudformation:ImportResourceTypes": [ 
            "*" 
          ] 
        } 
      } 
    } 
  ] 
}
```

------

## Permitir operaciones de importación para tipos de recursos específicos
<a name="w2aac43c23c17c13"></a>

La siguiente política otorga permisos para todas las operaciones de pila, así como las operaciones de importación solo en recursos especificados (en este ejemplo, `AWS::S3::Bucket`).

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

****  

```
{ 
  "Version":"2012-10-17",		 	 	  
  "Statement": [ 
    { 
      "Sid": "AllowImport",
      "Effect": "Allow", 
      "Action": "cloudformation:*", 
      "Resource": "*",
      "Condition": { 
        "ForAllValues:StringEqualsIgnoreCase": {
          "cloudformation:ImportResourceTypes": [ 
            "AWS::S3::Bucket" 
          ] 
        } 
      } 
    } 
  ] 
}
```

------

## Denegar recursos de IAM en plantillas de pila
<a name="w2aac43c23c17c15"></a>

La siguiente política otorga permisos a los usuarios crear pilas pero deniega las solicitudes si la plantilla de la pila incluye cualquier recurso del servicio de IAM. La política también requiere que los usuarios especifiquen el parámetro `ResourceTypes`, que solo está disponible para las solicitudes de la API y la AWS CLI. Esta política utiliza declaraciones de denegación explícita de modo que si cualquier otra política otorga permisos adicionales, esta política siempre permanecerá en vigor (una declaración de denegación explícita siempre anula una declaración de permiso explícita).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect" : "Allow",
      "Action" : [ "cloudformation:CreateStack" ],
      "Resource" : "*"
    },
    {
      "Effect" : "Deny",
      "Action" : [ "cloudformation:CreateStack" ],
      "Resource" : "*",
      "Condition" : {
        "ForAnyValue:StringLikeIfExists" : {
          "cloudformation:ResourceTypes" : [ "AWS::IAM::*" ]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action" : [ "cloudformation:CreateStack" ],
      "Resource": "*",
      "Condition": {
        "Null": {
          "cloudformation:ResourceTypes": "true"
        }
      }
    }
  ]
}
```

------

## Permitir la creación de pilas con tipos de recursos específicos
<a name="w2aac43c23c17c17"></a>

La siguiente política es parecida al ejemplo anterior. La política otorga permisos a los usuarios crear una pila salvo si la plantilla de la pila incluye cualquier recurso del servicio de IAM. También requiere que los usuarios especifiquen el parámetro `ResourceTypes`, que solo está disponible para las solicitudes de la API y la AWS CLI. Esta política es más sencilla, pero no utiliza declaraciones de denegación explícita. Otras políticas, que conceden permisos adicionales, podrían anular esta política.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":[
    {
      "Effect" : "Allow",
      "Action" : [ "cloudformation:CreateStack" ],
      "Resource" : "*",
      "Condition" : {
        "ForAllValues:StringNotLikeIfExists" : {
          "cloudformation:ResourceTypes" : [ "AWS::IAM::*" ]
        },
        "Null":{
          "cloudformation:ResourceTypes": "false"
        }
      }
    }
  ]
}
```

------

## Controlar el acceso basado en acciones de API que modifican recursos
<a name="w2aac43c23c17c19"></a>

La siguiente política otorga permisos a los usuarios filtrar el acceso por el nombre de una acción de la API de mutación de recursos. Se usa para controlar qué API pueden usar los usuarios de IAM para agregar o eliminar etiquetas en una pila o un conjunto de pilas. La operación que se utiliza para agregar o eliminar etiquetas debe agregarse como valor para la clave de condición. La siguiente política concede los permisos `TagResource` y `UntagResource` a la operación de mutación `CreateStack`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Sid": "CreateActionConditionPolicyForTagUntagResources",
        "Effect": "Allow",
        "Action": [
            "cloudformation:TagResource",
            "cloudformation:UntagResource"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "cloudformation:CreateAction": [
                    "CreateStack"
                ]
            }
        }
    }]
}
```

------

## Restringir las operaciones de conjuntos de pilas según la región y los tipos de recursos
<a name="resource-level-permissions-service-managed-stack-set"></a>

La siguiente política otorga permisos de conjuntos de pilas administrados por servicio Un usuario con esta política solo puede llevar a cabo operaciones en conjuntos de pilas con plantillas que contengan tipos de recursos de Amazon S3 (`AWS::S3::*`) o el tipo de recurso `AWS::SES::ConfigurationSet`. Si ha iniciado sesión en la cuenta de administración de la organización con ID `123456789012`, el usuario solo puede llevar a cabo operaciones en conjuntos de pila que tengan como destino la unidad organizativa con ID `ou-1fsfsrsdsfrewr`, y solo puede llevar a cabo operaciones en el conjunto de pilas con ID `stack-set-id` que se dirija a la Cuenta de AWS con ID `987654321012`.

Las operaciones de conjunto de pila fallan si la plantilla de conjunto de pilas contiene tipos de recursos distintos de los especificados en la política, o si los destinos de implementación son unidades organizativas o ID de cuenta distintos de los especificados en la política para las cuentas de administración y los conjuntos de pilas correspondientes.

Estas restricciones de políticas solo se aplican cuando las operaciones de conjunto de pilas se dirigen a las Regiones de AWS `us-east-1`, `us-west-2` o `eu-west-2`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:*"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:*:stackset/*",
                "arn:aws:cloudformation:*:*:type/resource/AWS-S3-*",
                "arn:aws:cloudformation:us-west-2:111122223333:type/resource/AWS-SES-ConfigurationSet",
                "arn:aws:cloudformation:*:111122223333:stackset-target/*/ou-1fsfsrsdsfrewr",
                "arn:aws:cloudformation:*:111122223333:stackset-target/stack-set-id/444455556666"
            ],
            "Condition": {
                "ForAllValues:StringEqualsIgnoreCase": {
                    "cloudformation:TargetRegion": [
                        "us-east-1",
                        "us-west-2",
                        "eu-west-1"
                    ]
                }
            }
        }
    ]
}
```

------

## Permitir todas las operaciones del generador de IaC
<a name="iam-policy-example-for-iac-generator"></a>

La siguiente política permite el acceso a acciones de CloudFormation relacionadas con el escaneo de recursos del generador de IaC y la gestión de plantillas. La primera declaración otorga permisos para describir, listar e iniciar los escaneos de recursos. También permite el acceso a los permisos adicionales necesarios (`cloudformation:GetResource`, `cloudformation:ListResources` y `cloudformation:ListTypes`) que permiten al generador de IaC recuperar información sobre los recursos y los tipos de recursos disponibles. La segunda declaración otorga permisos completos para crear, eliminar, describir, listar y actualizar las plantillas generadas.

También debe conceder permisos de lectura para los servicios AWS de destino a cualquier persona que vaya a escanear recursos con el generador de IaC. Para obtener más información, consulte [Permisos de IAM necesarios para escanear recursos](generate-IaC.md#iac-generator-permissions).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
        {
            "Sid":"ResourceScanningOperations",
            "Effect":"Allow",
            "Action":[
                "cloudformation:DescribeResourceScan",
                "cloudformation:GetResource",
                "cloudformation:ListResources",
                "cloudformation:ListResourceScanRelatedResources",
                "cloudformation:ListResourceScanResources",
                "cloudformation:ListResourceScans",
                "cloudformation:ListTypes",
                "cloudformation:StartResourceScan"
            ],
            "Resource":"*"
        },
        {
            "Sid":"TemplateGeneration",
            "Effect":"Allow",
            "Action":[
                "cloudformation:CreateGeneratedTemplate",
                "cloudformation:DeleteGeneratedTemplate",
                "cloudformation:DescribeGeneratedTemplate",
                "cloudformation:GetResource",
                "cloudformation:GetGeneratedTemplate",
                "cloudformation:ListGeneratedTemplates",
                "cloudformation:UpdateGeneratedTemplate"
            ],
            "Resource":"*"
        }
    ]
}
```

------

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

Una política administrada de AWS es una política independiente que AWS crea y administra. Las políticas administradas de AWS se diseñan para ofrecer permisos para muchos casos de uso comunes, por lo que puede empezar a asignar permisos a los usuarios, grupos y roles.

Considere que es posible que las políticas administradas por AWS no concedan permisos de privilegio mínimo para los casos de uso concretos, ya que están disponibles para que las utilicen todos los clientes de AWS. Se recomienda definir [políticas administradas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) específicas para sus casos de uso a fin de reducir aún más los permisos.

No puede cambiar los permisos definidos en las políticas administradas AWS. Si AWS actualiza los permisos definidos en un política administrada de AWS, la actualización afecta a todas las identidades principales (usuarios, grupos y roles) a las que está adjunta la política. Lo más probable es que AWS actualice una política administrada de AWS cuando se lance un nuevo servicio AWS o las operaciones de la API nuevas estén disponibles para los servicios existentes.

Para obtener más información, consulte [Políticas administradas de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) en la *Guía del usuario de IAM*.

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

Puede asociar `AWSCloudFormationFullAccess` a los usuarios, grupos y roles.

Esta política concede permisos que permiten acceso completo a todas las acciones y los recursos de CloudFormation.

**Detalles de los permisos**

Esta política incluye los siguientes permisos.
+ `cloudformation`: permite a las entidades principales realizar todas las acciones de CloudFormation en todos los recursos.

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

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

Puede asociar `AWSCloudFormationReadOnlyAccess` a los usuarios, grupos y roles.

Esta política concede permisos que permiten acceso de solo lectura a los recursos y las acciones de CloudFormation.

**Detalles de los permisos**

Esta política incluye los siguientes permisos.
+ `cloudformation`: permite a las entidades principales realizar acciones de solo lectura de CloudFormation, como describir pilas, enumerar recursos y ver plantillas, pero no permite crear, actualizar ni eliminar pilas.

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

## CloudFormation actualiza sus políticas administradas de AWS
<a name="security-iam-awsmanpol-updates"></a>

Consultar los detalles sobre las actualizaciones de las políticas administradas por AWS para CloudFormation desde que este servicio comenzó a realizar el seguimiento de estos cambios. Para obtener alertas automáticas sobre cambios en esta página, suscríbase a la fuente RSS en la página de historial de documentos de CloudFormation.


| Cambio | Descripción | Fecha | 
| --- | --- | --- | 
|  [AWSCloudFormationReadOnlyAccess](#security-iam-awsmanpol-AWSCloudFormationReadOnlyAccess): actualización a una política existente  |  CloudFormation agregó permisos nuevos para permitir acciones de `cloudformation:BatchDescribe*` para operaciones de descripción por lotes.  | 30 de enero de 2026 | 
|  [AWSCloudFormationReadOnlyAccess](#security-iam-awsmanpol-AWSCloudFormationReadOnlyAccess): actualización a una política existente  |  CloudFormation agregó nuevos permisos para permitir acciones de `cloudformation:Detect*` para las capacidades de detección de desviaciones de pilas.  | 13 de noviembre de 2019 | 
|  [AWSCloudFormationReadOnlyAccess](#security-iam-awsmanpol-AWSCloudFormationReadOnlyAccess): actualización a una política existente  |  CloudFormation agregó nuevos permisos para permitir las acciones de `cloudformation:EstimateTemplateCost`, `cloudformation:Get*` y `cloudformation:ValidateTemplate`.  | 2 de noviembre de 2017 | 
|  [AWSCloudFormationFullAccess](#security-iam-awsmanpol-AWSCloudFormationFullAccess): nueva política  |  CloudFormation agregó una nueva política administrada de AWS que proporciona acceso total a las acciones y los recursos de CloudFormation.  | 26 de julio de 2019 | 
|  [AWSCloudFormationReadOnlyAccess](#security-iam-awsmanpol-AWSCloudFormationReadOnlyAccess): actualización a una política existente  |  CloudFormation agregó nuevos permisos par permitir las acciones de `cloudformation:DetectStackDrift` y `cloudformation:DetectStackResourceDrift` para detectar la desviación de pilas.  | 6 de febrero de 2019 | 
|  [AWSCloudFormationReadOnlyAccess](#security-iam-awsmanpol-AWSCloudFormationReadOnlyAccess): nueva política  |  CloudFormation agregó una nueva política administrada de AWS que proporciona acceso de solo lectura a las acciones y los recursos de CloudFormation.  | 6 de febrero de 2015 | 
|  CloudFormation inició el seguimiento de los cambios.  |  CloudFormation inició el seguimiento de los cambios de sus políticas administradas de AWS.  | 6 de febrero de 2015 | 

# Rol de servicio CloudFormation
<a name="using-iam-servicerole"></a>

Un *rol de servicio* es un AWS Identity and Access Management rol de (IAM) que permite a CloudFormation hacer solicitudes a recursos de una pila en su nombre. Puede especificar un rol de IAM que permita a CloudFormation crear, actualizar o eliminar los recursos de su pila. De forma predeterminada, CloudFormation utiliza una sesión temporal que se genera a partir de sus credenciales de usuario para las operaciones de pila. Si especifica un rol de servicio, CloudFormation utiliza las credenciales de ese rol.

Utilice un rol de servicio para especificar explícitamente las acciones que CloudFormation puede realizar, que es posible que no siempre sean las mismas que realiza usted u otros usuarios. Por ejemplo, puede tener privilegios administrativos, pero puede limitar el acceso a CloudFormation solo para acciones de Amazon EC2.

Puede crear el rol de servicio y su política de permisos con el servicio de IAM. Para obtener más información acerca de cómo crear un rol de servicio, consulte [Crear un rol para delegar permisos a un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) en la *Guía del usuario de IAM*. Especifique CloudFormation (`cloudformation.amazonaws.com`) como el servicio que puede asumir el rol.

Para asociar un rol de servicio a una pila, especifique el rol al crear la pila. Para obtener más información, consulte [Configurar las opciones la pila](cfn-console-create-stack.md#configure-stack-options). También puede cambiar el rol de servicio al actualizar la pila en la consola o [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStack.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_DeleteStack.html) la pila a través de la API. Antes de especificar un rol de servicio, asegúrese de que tiene permiso para pasarlo (`iam:PassRole`). El permiso `iam:PassRole` especifica los roles que puede utilizar. Para obtener más información, consulte [Conceder permisos a un usuario para transferir un rol a un servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html) en la *Guía del usuario de IAM*.

**importante**  
Cuando especifica un rol de servicio, CloudFormation siempre lo utiliza para todas las operaciones que se realizan en esa pila. No es posible eliminar un rol de servicio asociado a una pila después de crear la pila. Otros usuarios que tengan permisos para realizar operaciones en esta pila podrán usar este rol, sin importar si esos usuarios tienen o no el permiso `iam:PassRole`. Si el rol incluye permisos que el usuario no debería tener, puede escalar involuntariamente los permisos de un usuario. Asegúrese de que el rol concede privilegios mínimos. Para obtener más información, consulte [Aplicar permisos de privilegio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) en la *Guía del usuario de IAM*.

# Prevención de la sustitución confusa entre servicios
<a name="cross-service-confused-deputy-prevention"></a>

El problema de la sustitución confusa es un problema de seguridad en el que una entidad que no tiene permiso para realizar una acción puede obligar a una entidad con más privilegios a realizar la acción. En AWS, la suplantación entre servicios puede dar lugar al problema de la sustitución confusa. La suplantación entre servicios puede producirse cuando un servicio (el *servicio que lleva a cabo las llamadas*) llama a otro servicio (el *servicio al que se llama*). El servicio que lleva a cabo las llamadas se puede manipular para utilizar sus permisos a fin de actuar en función de los recursos de otro cliente de una manera en la que no debe tener permiso para acceder. Para evitarlo, AWS proporciona herramientas que le ayudan a proteger sus datos para todos los servicios con entidades principales de servicio a las que se les ha dado acceso a los recursos de su cuenta.

Se recomienda utilizar las claves de contexto de condición global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) y [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) en las políticas de recursos para limitar los permisos que CloudFormation le concede a otro servicio a un recurso específico, como una extensión de CloudFormation. Utiliza `aws:SourceArn` si desea que solo se asocie un recurso al acceso entre servicios. Utiliza `aws:SourceAccount` si quiere permitir que cualquier recurso de esa cuenta se asocie al uso entre servicios.

Asegúrese de que el valor de `aws:SourceArn` sea un ARN del recurso que almacena CloudFormation.

La forma más eficaz de protegerse contra el problema de la sustitución confusa es utilizar la clave de contexto de condición global de `aws:SourceArn` con el ARN completo del recurso. Si no conoce el ARN completo del recurso o si especifica varios recursos, utiliza la clave de condición de contexto global `aws:SourceArn` con comodines (`*`) para las partes desconocidas del ARN. Por ejemplo, `arn:aws:cloudformation:*:123456789012:*`.

Si el valor de `aws:SourceArn` no contiene el ID de cuenta, debe utilizar ambas claves de contexto de condición global para limitar los permisos.

El siguiente ejemplo muestra cómo se pueden utilizar las claves contextuales de condición global `aws:SourceArn` y `aws:SourceAccount` en CloudFormation para evitar el problema del suplente confundido.

## Ejemplo de política de confianza que usa las claves de condición `aws:SourceArn` y `aws:SourceAccount`
<a name="cross-service-confused-deputy-prevention-example"></a>

Para los servicios de registro, CloudFormation hace llamadas a AWS Security Token Service (AWS STS) para asumir un rol de servicio en su cuenta. Este rol está configurado para `ExecutionRoleArn` en la operación [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_RegisterType.html) y el conjunto `LogRoleArn` en la operación [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_LoggingConfig.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_LoggingConfig.html). Para obtener más información, consulte [Configure un rol de ejecución con permisos de IAM y una política de confianza para el acceso a las extensiones públicas](registry-public.md#registry-public-enable-execution-role).

Este ejemplo de política de confianza de rol utiliza declaraciones de condición para limitar la capacidad de `AssumeRole` en el rol de servicio a solo las acciones que afectan al grupo de extensión de CloudFormation en la cuenta especificada. Las condiciones `aws:SourceArn` y `aws:SourceAccount` se evalúan de forma independiente. Cualquier solicitud para usar el rol de servicio debe cumplir ambas condiciones.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "resources.cloudformation.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:cloudformation:us-east-1:123456789012:type/resource/Organization-Service-Resource"
        }
      }
    }
  ]
}
```

------

## Información adicional
<a name="cross-service-confused-deputy-prevention-additional-information"></a>

Para ver ejemplos de políticas que utilizan las claves de contexto de condición global `aws:SourceArn` y `aws:SourceAccount` para un rol de servicio utilizado por StackSets, consulte [Configuración de claves globales para mitigar problemas de adjuntos confusos](stacksets-prereqs-self-managed.md#confused-deputy-mitigation).

Para obtener más información, consulte [Actualización de una política de confianza de rol](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-role-trust-policy.html) en la *Guía del usuario de IAM*.

# Solicitudes de sesiones de acceso directo (FAS) y evaluación de permisos
<a name="fas-requests-and-permission-evaluation"></a>

Al crear, actualizar y eliminar pilas de CloudFormation, los usuarios pueden especificar opcionalmente el ARN de un rol de IAM. Si no se proporciona ningún rol, CloudFormation utiliza su mecanismo de servicio predeterminado para interactuar con otros servicios de AWS. En esta situación, la persona que llama debe tener los permisos necesarios para los recursos que se administran. Como alternativa, cuando un usuario proporcione su propio rol de IAM, CloudFormation lo asumirá para interactuar con los servicios en su nombre.

Independientemente de si el usuario proporciona o no un rol de IAM, CloudFormation genera un nuevo token de FAS restringido para cada operación de recursos. Por lo tanto, las [claves de condición relacionadas con FAS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html#access_fas_policy_conditions), entre las que se incluye `aws:ViaAWSService`, se rellenan en ambas situaciones.

El uso de FAS afecta a la forma en que se evalúan las políticas de IAM durante las operaciones de CloudFormation. Al crear una pila con una plantilla que incluye los recursos que se ven afectados por las claves de condición relacionadas con FAS, es posible que se denieguen los permisos.

**Política de IAM de ejemplo**  
Observe la política de IAM siguiente. `Statement2` impedirá constantemente la creación de un recurso `AWS::KMS::Key` en CloudFormation. La restricción se aplicará de forma sistemática, independientemente de si se proporciona o no un rol de IAM durante la operación de la pila. Esto se debe a que la clave de condición `aws:ViaAWSService` siempre se establece en `true` a consecuencia del uso de FAS. 

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": [
                "kms:CreateKey"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Statement2",
            "Effect": "Deny",
            "Action": [
                "kms:CreateKey"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "Bool": {
                    "aws:ViaAWSService": "true"
                }
            }
        }
    ]
}
```

------

**Plantilla de pila de ejemplo**  
Por ejemplo, cuando un usuario crea una pila con la siguiente plantilla de ejemplo, `aws:ViaAWSService` se establece en `true` y la política de FAS anula los permisos del rol. La creación de la pila se verá afectada por el parámetro `Statement2` de la política de IAM, que deniega la acción `CreateKey`. Esto provoca un error de permiso denegado. 

```
Resources:
  myPrimaryKey:
    Type: AWS::KMS::Key
    Properties:
      Description: An example multi-Region primary key
      KeyPolicy:
        Version: '2012-10-17'
        Id: key-default-1
        Statement:
          - Sid: Enable IAM User Permissions
            Effect: Allow
            Principal:
              AWS: !Join
                - ''
                - - 'arn:aws:iam::'
                  - !Ref AWS::AccountId
                  - ':root'
            Action: kms:*
            Resource: '*'
```

Para obtener más información sobre FAS, consulte [Sesiones de acceso directo](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html) en la *Guía del usuario de IAM*.

**nota**  
La mayoría de los recursos siguen este comportamiento. Sin embargo, si la creación, actualización o eliminación de un recurso se completa correctamente o con errores de forma inesperada y su política de IAM incluye claves de condición relacionadas con FAS, es probable que el recurso en cuestión pertenezca a un pequeño subconjunto de recursos que no siguen este patrón estándar.

# Registro de llamadas a la API de CloudFormation con AWS CloudTrail
<a name="cfn-api-logging-cloudtrail"></a>

CloudFormation se integra con AWS CloudTrail, un servicio que proporciona un registro de las acciones que lleva a cabo un usuario, un rol o un servicio de AWS en CloudFormation. CloudTrail obtiene todas las llamadas a la API para CloudFormation como eventos, incluidas las llamadas procedentes de la consola de CloudFormation y de las llamadas de código a las API de CloudFormation. Si crea un registro de seguimiento, puede habilitar la entrega continua de eventos de CloudTrail a un bucket de Amazon S3, incluidos los eventos de CloudFormation. Si no configura un registro de seguimiento, puede ver los eventos más recientes de la consola de CloudTrail en el **historial de eventos**. Mediante la información que recopila por CloudTrail, se puede determinar la solicitud que se envió a CloudFormation, la dirección IP desde la que se realizó la solicitud, quién la realizó, cuándo se realizó y detalles adicionales.

Para obtener más información sobre CloudTrail, consulte la [Guía del usuario de AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

**Topics**
+ [Información de CloudFormation en CloudTrail](#cloudformation_info_in_cloudtrail)
+ [Descripción de las entradas de los archivos de registro de CloudFormation](#understanding_cloudformation_entries)

## Información de CloudFormation en CloudTrail
<a name="cloudformation_info_in_cloudtrail"></a>

CloudTrail se habilita en su cuenta de AWS cuando la crea. Cuando se produce una actividad en CloudFormation, esta se registra en un evento de CloudTrail junto con los eventos de los demás servicios de AWS en **Event history** (Historial de eventos). Se puede ver, buscar y descargar los últimos eventos de la cuenta de AWS. Para obtener más información, consulte [Ver eventos con el historial de eventos de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html).

Para mantener un registro continuo de eventos en la cuenta de AWS, incluidos los eventos de CloudFormation, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos de registro a un bucket de Amazon S3. De manera predeterminada, cuando crea un registro de seguimiento en la consola, el registro de seguimiento se aplica a todas las regiones. El registro de seguimiento registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket de Amazon S3 especificado. También es posible configurar otros servicios de AWS para analizar en profundidad y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para obtener más información, consulte:
+ [Introducción a la creación de registros de seguimiento](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [Servicios e integraciones compatibles con CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Configuración de notificaciones de Amazon SNS para CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/configure-sns-notifications-for-cloudtrail.html)
+ [‬Recibir archivos de registro de CloudTrail desde varias regiones](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) y [Recibir archivos de registro de CloudTrail desde varias cuentas](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

CloudTrail registra todas las acciones de CloudFormation, que están documentadas en la [https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Operations.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_Operations.html). Por ejemplo, las llamadas a las secciones `CreateStack`, `DeleteStack` y `ListStacks` generan entradas en los archivos de registro de CloudTrail.

Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de identidad del usuario lo ayuda a determinar lo siguiente:
+ Si la solicitud se realizó con las credenciales raíz o del usuario de IAM.
+ Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
+ Si la solicitud la realizó otro servicio de AWS.

Para más información, consulte [Elemento userIdentity de CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Descripción de las entradas de los archivos de registro de CloudFormation
<a name="understanding_cloudformation_entries"></a>

Un registro de seguimiento es una configuración que permite la entrega de eventos como archivos de registros en un bucket de Amazon S3 que especifique. Los archivos de registro de CloudTrail pueden contener una o varias entradas de registro. Un evento representa una única solicitud de cualquier origen e incluye información sobre la operación solicitada, la fecha y la hora de la operación, los parámetros de la solicitud, etcétera. Los archivos de registro de CloudTrail no rastrean el orden en la pila de las llamadas públicas a la API, por lo que estas no aparecen en ningún orden específico.

En el ejemplo que sigue se muestra una entrada de registro de CloudTrail que ilustra la operación `CreateStack`. Una usuaria de IAM llamada Alice llevó a cabo la operación.

**nota**  
Solo se registran los nombres de claves de los parámetros de entrada. Los valores de los parámetros no se registran.

```
{
  "eventVersion": "1.01",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDAABCDEFGHIJKLNMOPQ",
    "arn": "arn:aws:iam::012345678910:user/Alice",
    "accountId": "012345678910",
    "accessKeyId": "AKIDEXAMPLE",
    "userName": "Alice"
  },
  "eventTime": "2014-03-24T21:02:43Z",
  "eventSource": "cloudformation.amazonaws.com",
  "eventName": "CreateStack",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "127.0.0.1",
  "userAgent": "aws-cli/1.2.11 Python/2.7.4 Linux/2.6.18-164.el5",
  "requestParameters": {
    "templateURL": "templateURL",
    "tags": [
      {
        "key": "test",
        "value": "tag"
      }
    ],
    "stackName": "my-test-stack",
    "disableRollback": true,
    "parameters": [
      {
        "parameterKey": "password"
      },
      {
        "parameterKey": "securitygroup"
      }
    ]
  },
  "responseElements": {
    "stackId": "arn:aws:cloudformation:us-east-1:012345678910:stack/my-test-stack/a38e6a60-b397-11e3-b0fc-08002755629e"
  },
  "requestID": "9f960720-b397-11e3-bb75-a5b75389b02d",
  "eventID": "9bf6cfb8-83e1-4589-9a70-b971e727099b"
}
```

En el siguiente ejemplo, se muestra que Alice llamó a la operación `UpdateStack` en la pila `my-test-stack`:

```
{
  "eventVersion": "1.01",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDAABCDEFGHIJKLNMOPQ",
    "arn": "arn:aws:iam::012345678910:user/Alice",
    "accountId": "012345678910",
    "accessKeyId": "AKIDEXAMPLE",
    "userName": "Alice"
  },
  "eventTime": "2014-03-24T21:04:29Z",
  "eventSource": "cloudformation.amazonaws.com",
  "eventName": "UpdateStack",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "127.0.0.1",
  "userAgent": "aws-cli/1.2.11 Python/2.7.4 Linux/2.6.18-164.el5",
  "requestParameters": {
    "templateURL": "templateURL",
    "parameters": [
      {
        "parameterKey": "password"
      },
      {
        "parameterKey": "securitygroup"
      }
    ],
    "stackName": "my-test-stack"
  },
  "responseElements": {
    "stackId": "arn:aws:cloudformation:us-east-1:012345678910:stack/my-test-stack/a38e6a60-b397-11e3-b0fc-08002755629e"
  },
  "requestID": "def0bf5a-b397-11e3-bb75-a5b75389b02d",
  "eventID": "637707ce-e4a3-4af1-8edc-16e37e851b17"
}
```

En el siguiente ejemplo, se muestra que Alice llamó a la operación `ListStacks`.

```
{
  "eventVersion": "1.01",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDAABCDEFGHIJKLNMOPQ",
    "arn": "arn:aws:iam::012345678910:user/Alice",
    "accountId": "012345678910",
    "accessKeyId": "AKIDEXAMPLE",
    "userName": "Alice"
  },
  "eventTime": "2014-03-24T21:03:16Z",
  "eventSource": "cloudformation.amazonaws.com",
  "eventName": "ListStacks",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "127.0.0.1",
  "userAgent": "aws-cli/1.2.11 Python/2.7.4 Linux/2.6.18-164.el5",
  "requestParameters": null,
  "responseElements": null,
  "requestID": "b7d351d7-b397-11e3-bb75-a5b75389b02d",
  "eventID": "918206d0-7281-4629-b778-b91eb0d83ce5"
}
```

En el siguiente ejemplo, se muestra que Alice llamó a la operación `DescribeStacks` en la pila `my-test-stack`.

```
{
  "eventVersion": "1.01",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDAABCDEFGHIJKLNMOPQ",
    "arn": "arn:aws:iam::012345678910:user/Alice",
    "accountId": "012345678910",
    "accessKeyId": "AKIDEXAMPLE",
    "userName": "Alice"
  },
  "eventTime": "2014-03-24T21:06:15Z",
  "eventSource": "cloudformation.amazonaws.com",
  "eventName": "DescribeStacks",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "127.0.0.1",
  "userAgent": "aws-cli/1.2.11 Python/2.7.4 Linux/2.6.18-164.el5",
  "requestParameters": {
    "stackName": "my-test-stack"
  },
  "responseElements": null,
  "requestID": "224f2586-b398-11e3-bb75-a5b75389b02d",
  "eventID": "9e5b2fc9-1ba8-409b-9c13-587c2ea940e2"
}
```

En el siguiente ejemplo, se muestra que Alice llamó a la operación `DeleteStack` en la pila `my-test-stack`.

```
{
  "eventVersion": "1.01",
  "userIdentity": {
    "type": "IAMUser",
    "principalId": "AIDAABCDEFGHIJKLNMOPQ",
    "arn": "arn:aws:iam::012345678910:user/Alice",
    "accountId": "012345678910",
    "accessKeyId": "AKIDEXAMPLE",
    "userName": "Alice"
  },
  "eventTime": "2014-03-24T21:07:15Z",
  "eventSource": "cloudformation.amazonaws.com",
  "eventName": "DeleteStack",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "127.0.0.1",
  "userAgent": "aws-cli/1.2.11 Python/2.7.4 Linux/2.6.18-164.el5",
  "requestParameters": {
    "stackName": "my-test-stack"
  },
  "responseElements": null,
  "requestID": "42dae739-b398-11e3-bb75-a5b75389b02d",
  "eventID": "4965eb38-5705-4942-bb7f-20ebe79aa9aa"
}
```

# Seguridad de la infraestructura en () CloudFormation
<a name="infrastructure-security"></a>

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

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

Puede llamar a estas operaciones de la API desde cualquier ubicación de red, pero CloudFormation admite políticas de acceso basadas en recursos, que pueden incluir restricciones en función de la dirección IP de origen. También puede utilizar políticas de CloudFormation para controlar el acceso desde puntos de enlace específicos de Amazon Virtual Private Cloud (Amazon VPC) o VPC específicas. Este proceso aísla con eficacia el acceso de red a un recurso de CloudFormation determinado únicamente desde la VPC específica de la red de AWS.

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

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

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

# Validación de conformidad en CloudFormation
<a name="cloudformation-compliance"></a>

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

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

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

# Configuración y análisis de vulnerabilidades en CloudFormation
<a name="vulnerability-analysis-and-management"></a>

La configuración y los controles de TI son una responsabilidad compartida entre AWS y usted, nuestro cliente. Para obtener más información, consulte el AWSModelo de responsabilidad compartida de [https://aws.amazon.com/compliance/shared-responsibility-model/](https://aws.amazon.com/compliance/shared-responsibility-model/).

# Prácticas recomendadas de seguridad para CloudFormation
<a name="security-best-practices"></a>

CloudFormation proporciona un número de características de seguridad que debe tener en cuenta a la hora de desarrollar e implementar sus propias políticas de seguridad. Las siguientes prácticas recomendadas son directrices generales y no constituyen una solución de seguridad completa. Puesto que es posible que estas prácticas recomendadas no sean adecuadas o suficientes para el entorno, considérelas como consideraciones útiles en lugar de como normas.

**Topics**
+ [Utilice IAM para controlar el acceso](#use-iam-to-control-access)
+ [No integre credenciales en sus plantillas](#creds)
+ [Uso de AWS CloudTrail para registrar llamadas a CloudFormation](#cloudtrail)

## Utilice IAM para controlar el acceso
<a name="use-iam-to-control-access"></a>

IAM es un servicio de AWS que puede utilizar para administrar los usuarios y sus permisos en AWS. Puede utilizar IAM con CloudFormation para especificar qué acciones de CloudFormation pueden realizar los usuarios, como ver plantillas de pila, crear pilas o eliminar pilas. Además, cualquiera que administre pilas de CloudFormation necesitará permisos para acceder a los recursos de dichas pilas. Por ejemplo, si los usuarios desean usar CloudFormation para lanzar, actualizar o terminar instancias Amazon EC2, deben tener permiso para llamar a las acciones de Amazon EC2 pertinentes.

En la mayoría de los casos, los usuarios requieren acceso completo para administrar todos los recursos de una plantilla. CloudFormation realiza llamadas para crear, modificar y eliminar esos recursos en su nombre. Para separar los permisos entre el usuario y el servicio de CloudFormation, utilice un rol de servicio. CloudFormation utiliza la política del rol de servicio para realizar llamadas en lugar de la política del usuario. Para obtener más información, consulte [Rol de servicio CloudFormation](using-iam-servicerole.md).

## No integre credenciales en sus plantillas
<a name="creds"></a>

En lugar de incrustar información confidencial en sus plantillas de CloudFormation, le recomendamos que utilice *referencias dinámicas* en su plantilla de pila.

Las referencias dinámicas son una forma eficaz y coherente de hacer referencia a valores externos almacenados y administrados en otros servicios, como AWS Systems Manager Parameter Store o AWS Secrets Manager. Cuando se utiliza una referencia dinámica, CloudFormation recupera el valor de la referencia especificada cuando es necesario durante las operaciones de pila y de conjunto de cambios, y pasa el valor al recurso correspondiente. Sin embargo, CloudFormation no almacena nunca el valor de referencia real. Para obtener más información, consulte [Obtención de valores almacenados en otros servicios con referencias dinámicas](dynamic-references.md).

[AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) ayuda a cifrar, almacenar y recuperar de forma segura las credenciales de sus bases de datos y otros servicios. [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) proporciona un almacenamiento seguro y jerárquico para administrar los datos de configuración. 

Para obtener más información sobre cómo definir parámetros de plantillas, consulte [Sintaxis de Parameters de la plantilla de CloudFormation](parameters-section-structure.md).

## Uso de AWS CloudTrail para registrar llamadas a CloudFormation
<a name="cloudtrail"></a>

AWS CloudTrail realiza un seguimiento a cualquier persona que realice llamadas a la API de CloudFormation en su Cuenta de AWS. Las llamadas a la API se registran cuando se utiliza la API de CloudFormation, la consola de CloudFormation, una consola de backend o comandos de la AWS CLI de CloudFormation. Active el registro y especifique un bucket de Amazon S3 para almacenar los registros. De ese modo, si lo necesita, puede auditar quién ha hecho cada llamada a CloudFormation en su cuenta. Para obtener más información, consulte [Registro de llamadas a la API de CloudFormation con AWS CloudTrail](cfn-api-logging-cloudtrail.md).

# Acceso a CloudFormation a través de un punto de conexión de la interfaz (AWS PrivateLink)
<a name="vpc-interface-endpoints"></a>

Puede usar un AWS PrivateLink para crear una conexión privada entre la VPC y CloudFormation. Puede acceder a CloudFormation como si estuviera en su VPC, sin el uso de una puerta de enlace de Internet, un dispositivo NAT, una conexión VPN o una conexión Direct Connect. Las instancias de la VPC no necesitan direcciones IP públicas para acceder a CloudFormation.

Esta conexión privada se establece mediante la creación de un *punto de conexión de interfaz* alimentado por AWS PrivateLink. Creamos una interfaz de red de punto de conexión en cada subred habilitada para el punto de conexión de interfaz. Se trata de interfaces de red administradas por el solicitante que sirven como punto de entrada para el tráfico destinado a CloudFormation. 

CloudFormation admite la realización de llamadas a todas las acciones de la API a través del punto de conexión de interfaz.

## Consideraciones para los puntos de conexión de VPC de CloudFormation
<a name="vpc-endpoint-considerations"></a>

Antes de configurar un punto de conexión de interfaz, asegúrese de cumplir con los requisitos previos detallados en el tema [Acceso a un servicio de AWS a través de un punto de conexión de VPC de interfaz](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html) en la *Guía de AWS PrivateLink*.

A continuación se aplican las siguientes consideraciones y requisitos previos adicionales al configurar un punto de conexión de interfaz para CloudFormation:
+ Si tiene recursos dentro de su VPC que deben responder a una solicitud de recurso personalizado o a una condición de espera, asegúrese de que tengan acceso a los buckets necesarios de Amazon S3 específicos de CloudFormation. CloudFormation dispone de buckets de S3 en cada Región para monitorizar las respuestas a una solicitud de [recurso personalizado](template-custom-resources.md) o una [condición de espera](using-cfn-waitcondition.md). Si una plantilla incluye recursos personalizados o condiciones de espera en una VPC, la política de conexión de la VPC debe permitir a los usuarios enviar respuestas a los siguientes buckets:
  + En el caso de recursos personalizados, permita el tráfico al bucket `cloudformation-custom-resource-response-region`. Cuando se utilizan recursos personalizados, los nombres de la Región de AWS no contienen guiones. Por ejemplo, `uswest2`.
  + Para condiciones de espera, permita el tráfico al bucket `cloudformation-waitcondition-region`. Cuando se utilizan condiciones de espera, los nombres de la Región de AWS sí contienen guiones. Por ejemplo, `us-west-2`.

  Si la política de puntos de enlace bloquea el tráfico a estos buckets, CloudFormation no recibirá respuestas y la operación de la pila fallará. Por ejemplo, si dispone de un recurso en una VPC en la región `us-west-2` que deben responder a una condición de espera, el recurso debe ser capaz de enviar una respuesta al bucket `cloudformation-waitcondition-us-west-2`.

  Para obtener una lista de las Regiones de AWS donde CloudFormation está actualmente disponible, consulte la página de [cuotas y puntos de conexión de CloudFormation](https://docs.aws.amazon.com/general/latest/gr/cfn.html) en la *Referencia general de Amazon Web Services*.
+ Los puntos de conexión de VPC actualmente no admiten las solicitudes entre regiones. Asegúrese de crear su punto de conexión en la misma región en que planea llamar a la API destinadas a CloudFormation.
+ Los puntos de conexión de VPC solo admiten DNS proporcionadas por Amazon a través de Route 53. Si desea utilizar su propio DNS, puede utilizar el enrutamiento de DNS condicional. Para obtener más información, consulte [Conjuntos de opciones de DHCP en Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) en la Guía del usuario de Amazon VPC.
+ El grupo de seguridad asociado al punto de conexión de VPC debe permitir las conexiones entrantes en el puerto 443 desde la subred privada de la VPC.

## Creación de un punto de conexión de VPC de interfaz para CloudFormation
<a name="vpc-endpoint-create"></a>

Puede crear un punto de conexión de VPC para CloudFormation mediante la consola de Amazon VPC o la AWS Command Line Interface (AWS CLI). Para obtener más información, consulte [Create a VPC endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws) (Creación de un punto de conexión de VPC) en la *Guía de AWS PrivateLink*.

Cree un punto de conexión para CloudFormation utilizando el siguiente nombre de servicio:
+ **com.amazonaws.*region*.cloudformation**: crea un punto de conexión para las operaciones de la API de CloudFormation.

Si habilita DNS privado para el punto de conexión de interfaz, puede realizar solicitudes a la API para CloudFormation usando su nombre de DNS predeterminado para la región. Por ejemplo, `cloudformation.us-east-1.amazonaws.com`.

En las Regiones de AWS en donde se admiten puntos de conexión específicos de FIPS, también puede crear un punto de conexión de interfaz para CloudFormation con el siguiente nombre de servicio:
+ **com.amazonaws.*region*.cloudformation-fips**: crea un punto de conexión para la API de CloudFormation que cumple con los [Estándares Federales de Procesamiento de la Información (FIPS) 140-2](https://aws.amazon.com/compliance/fips/).

Para obtener una lista completa de puntos de conexión de CloudFormation, consulte los [puntos de conexión y las cuotas de CloudFormation](https://docs.aws.amazon.com/general/latest/gr/cfn.html) en la *Referencia general de Amazon Web Services*.

## Creación de una política de punto de conexión de VPC para CloudFormation
<a name="vpc-endpoint-policy"></a>

Una política de puntos de conexión es un recurso de IAM que puede adjuntar al punto de conexión de su interfaz. La política de puntos de conexión predeterminada permite acceso completo a CloudFormation a través del punto de conexión de interfaz. Para controlar el acceso permitido a CloudFormation desde la VPC, adjunte una política de puntos de conexión personalizada al punto de conexión de interfaz.

Una política de punto de conexión especifica la siguiente información:
+ Las entidades principales que pueden llevar a cabo acciones (Cuentas de AWS, usuarios de IAM y roles de IAM).
+ Las acciones que se pueden realizar.
+ El recurso en el que se pueden realizar las acciones.

Para obtener más información, consulte [Uso de políticas de punto de conexión para controlar el acceso a puntos de conexión de VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html) en la *Guía de AWS PrivateLink*.

**Ejemplo: política de punto de conexión de VPC para acciones de CloudFormation**  
A continuación, se muestra un ejemplo de una política de puntos de conexión de CloudFormation. Cuando se asocia con un punto de conexión, esta política concede acceso a las acciones de CloudFormation mostradas para todas las entidades principales en todos los recursos. En el siguiente ejemplo, se deniega a todos los usuarios el permiso para crear pilas a través del punto de conexión de VPC y se permite el acceso completo a todas las demás acciones del servicio de CloudFormation.

```
{
  "Statement": [
    {
      "Action": "cloudformation:*", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Resource": "*"
    },
    {
      "Action": "cloudformation:CreateStack", 
      "Effect": "Deny", 
      "Principal": "*", 
      "Resource": "*"
    }
  ]
}
```