

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

# Otorgue permisos de IAM para Hooks CloudFormation
<a name="grant-iam-permissions-for-hooks"></a>

De forma predeterminada, un usuario nuevo Cuenta de AWS no tiene permiso para administrar Hooks mediante la Consola de administración de AWS, AWS Command Line Interface (AWS CLI) o la AWS API. Para conceder permisos a los usuarios, un administrador de IAM puede crear políticas de IAM. A continuación, el administrador puede añadir las políticas de IAM a roles y los usuarios pueden asumirlos.

Usa los ejemplos de políticas de este tema para crear tus propias políticas de IAM personalizadas y conceder a los usuarios permisos para trabajar con Hooks. 

*Para obtener información sobre cómo crear una política de IAM basada en la identidad con estos ejemplos de documentos de política de JSON, consulte [Definir permisos de IAM personalizados con políticas gestionadas por el cliente](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) en la Guía del usuario de IAM.*

En este tema se describen los permisos necesarios para hacer lo siguiente:
+ **Administrar Hooks**: crea, modifica y deshabilita Hooks en tu cuenta.
+ **Publica Hooks públicamente**: registra, prueba y publica tus Hooks personalizados para que estén disponibles públicamente en el CloudFormation registro.
+ **Ver los resultados de las invocaciones**: accede y consulta los resultados de las invocaciones de Hook en tu cuenta.
+ **Consulta los detalles de un resultado de invocación**: accede a información detallada y a una guía de corrección para un resultado de invocación de Hook específico en tu cuenta.

*A medida que vaya creando sus políticas de IAM, encontrará documentación sobre todas las acciones, recursos y claves de condición asociados al prefijo de `cloudformation` servicio en la CloudFormation sección [Acciones, recursos y claves de condición](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html) de la Referencia de autorización de servicio.*

**Topics**
+ [Permita que un usuario administre Hooks](#iam-permissions-to-manage-hooks)
+ [Permita que un usuario publique Hooks personalizados públicamente](#iam-permissions-for-public-hook-publishing)
+ [Permita que un usuario vea los resultados de la invocación de Hook](#iam-permissions-to-request-invocation-results)
+ [Permite que un usuario vea los resultados detallados de la invocación de Hook](#get-detailed-hook-invocation-results)
+ [AWS KMS política clave y permisos para cifrar los resultados de CloudFormation Hooks en reposo](hooks-kms-key-policy.md)

## Permita que un usuario administre Hooks
<a name="iam-permissions-to-manage-hooks"></a>

Si necesitas permitir a los usuarios gestionar las extensiones, incluidos los Hooks, sin poder hacerlas públicas en el CloudFormation registro, puedes utilizar el siguiente ejemplo de política de IAM.

**importante**  
Las llamadas a la `SetTypeConfiguration` API `ActivateType` y las llamadas a la API funcionan juntas para crear Hooks en tu cuenta. Cuando concedes permiso a un usuario para llamar a la `SetTypeConfiguration` API, automáticamente le concedes la posibilidad de modificar y deshabilitar los Hooks existentes. No puedes usar permisos a nivel de recursos para restringir el acceso a esta llamada a la API. Por lo tanto, asegúrate de conceder este permiso solo a los usuarios autorizados de tu cuenta.

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

****  

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

------

Los usuarios que administran Hooks pueden necesitar algunos permisos relacionados, por ejemplo: 
+ Para ver los controles proactivos del catálogo de controles de la CloudFormation consola, el usuario debe tener el `controlcatalog:ListControls` permiso establecido en una política de IAM. 
+ Para registrar Hooks personalizados como extensiones privadas en el CloudFormation registro, el usuario debe tener el `cloudformation:RegisterType` permiso establecido en una política de IAM.

## Permita que un usuario publique Hooks personalizados públicamente
<a name="iam-permissions-for-public-hook-publishing"></a>

El siguiente ejemplo de política de IAM se centra específicamente en las capacidades de publicación. Usa esta política si quieres permitir a los usuarios hacer que las extensiones, incluidos los Hooks, estén disponibles públicamente en el CloudFormation registro.

**importante**  
La publicación pública de Hooks los pone a disposición de otros usuarios Cuentas de AWS. Asegúrese de que solo los usuarios autorizados tengan estos permisos y de que las extensiones publicadas cumplan con los estándares de calidad y seguridad de su organización.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:DescribePublisher",
                "cloudformation:DescribeTypeRegistration",
                "cloudformation:ListTypes",
                "cloudformation:ListTypeVersions",
                "cloudformation:PublishType",
                "cloudformation:RegisterPublisher",
                "cloudformation:RegisterType",
                "cloudformation:TestType"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Permita que un usuario vea los resultados de la invocación de Hook
<a name="iam-permissions-to-request-invocation-results"></a>

Los permisos de IAM necesarios para ver los resultados de la invocación de Hook cambian según el tipo de información que se solicite.

### Muestra los resultados de la invocación de Hook
<a name="list-hook-invocation-results"></a>

Para enumerar los resultados de la invocación de Hook, los usuarios necesitan diferentes permisos en función de la solicitud de API que se realice.
+ Para conceder permisos para solicitar todos los resultados de Hook, los resultados de un Hook específico o los resultados de un Hook y un estado de invocación específicos, debes conceder acceso a la `cloudformation:ListAllHookResults` acción.
+ Para conceder permisos para solicitar resultados especificando un objetivo de Hook, debes conceder acceso a la `cloudformation:ListHookResults` acción. Este permiso permite a la persona que llama a la API especificar los `TargetId` parámetros `TargetType` y al realizar la llamada`ListHookResults`.

A continuación, se muestra un ejemplo de una política de permisos básica para enumerar los resultados de la invocación de Hook. Las identidades de IAM (usuarios o roles) con esta política tienen permiso para solicitar todos los resultados de la invocación mediante todas las combinaciones de parámetros disponibles.

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

****  

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

------

#### Controle qué conjuntos de cambios se pueden especificar
<a name="control-which-change-sets"></a>

El siguiente ejemplo de política de IAM concede permisos a la `cloudformation:ListHookResults` acción para solicitar resultados especificando el objetivo del Hook. Sin embargo, también deniega la acción si el objetivo es un conjunto de cambios denominado`example-changeset`.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:ListHookResults"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "cloudformation:ListHookResults"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudformation:ChangeSetName": "example-changeset"
                }
            }
        }
    ]
}
```

------

#### Controla qué ganchos se pueden especificar
<a name="control-which-hooks"></a>

El siguiente ejemplo de política de IAM otorga permisos a la `cloudformation:ListAllHookResults` acción para solicitar los resultados de la invocación solo cuando se proporciona el ARN del Hook en la solicitud. Niega la acción para un ARN de Hook específico.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:ListAllHookResults"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "cloudformation:ListAllHookResults"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "cloudformation:TypeArn": "true"
                }
            }
        },
        {
            "Effect": "Deny",
            "Action": [
                "cloudformation:ListAllHookResults"
            ],
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "cloudformation:TypeArn": "arn:aws:cloudformation:us-east-1:123456789012:type/hook/MyCompany-MyHook"
                }
            }
        }
    ]
}
```

------

## Permite que un usuario vea los resultados detallados de la invocación de Hook
<a name="get-detailed-hook-invocation-results"></a>

Para conceder permisos para ver los resultados detallados de una invocación de Hook específica, debes conceder acceso a la `cloudformation:GetHookResult` acción. Este permiso permite a los usuarios obtener información detallada y una guía de corrección para un resultado de invocación de Hook específico. Para obtener más información, consulta [GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html) en la *AWS CloudFormation Referencia de la API de *.

El siguiente ejemplo de política de IAM concede permisos a la acción. `cloudformation:GetHookResult`

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

****  

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

------

**nota**  
Puedes configurar Hooks para cifrar los resultados de invocación detallados almacenados en la nube con tus propias claves. AWS KMS Para obtener información sobre cómo configurar la política de claves y los permisos de IAM que necesita cuando utiliza una clave gestionada por el cliente para el cifrado, consulte. [AWS KMS política clave y permisos para cifrar los resultados de CloudFormation Hooks en reposo](hooks-kms-key-policy.md) 

# AWS KMS política clave y permisos para cifrar los resultados de CloudFormation Hooks en reposo
<a name="hooks-kms-key-policy"></a>

En este tema se describe cómo configurar la política de AWS KMS claves y los permisos que necesitas cuando especificas una clave gestionada por el cliente para cifrar los datos de las anotaciones de Hooks que están disponibles en la API. [GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html) 

**nota**  
CloudFormation Hooks no necesita autorización adicional para usar la predeterminada Clave propiedad de AWS para cifrar los datos de las anotaciones de tu cuenta.

**Topics**
+ [Descripción general de](#hooks-kms-overview)
+ [Utilizar el contexto de cifrado para controlar el acceso a la clave administrada por el cliente](#hooks-encryption-context-security)
+ [Política de claves de KMS administradas por el cliente](#hooks-policy-example-cmk-access)
+ [Permisos de KMS para la `SetTypeConfiguration` API](#hooks-policy-example-settypeconfiguration-permissions)
+ [Permisos de KMS para la API `GetHookResult`](#hooks-policy-example-gethookresult-permissions)

## Descripción general de
<a name="hooks-kms-overview"></a>

 AWS KMS keys Puedes usar lo siguiente para cifrar los datos de las anotaciones de Hook:
+ [Clave propiedad de AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)— De forma predeterminada, CloudFormation utiliza un Clave propiedad de AWS para cifrar los datos. No puede ver, administrar Claves propiedad de AWS, usar ni auditar su uso. Sin embargo, no es necesario realizar una configuración explícita para proteger la clave que se utiliza para cifrar los datos. Claves propiedad de AWS se proporcionan de forma gratuita (sin cuotas mensuales ni de uso). A menos que tengas que auditar o controlar la clave de cifrado que protege los datos de tus anotaciones, an Clave propiedad de AWS es una buena opción.
+ [Clave administrada por el cliente](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk): CloudFormation admite el uso de una clave simétrica administrada por el cliente que usted crea, posee y administra para agregar una segunda capa de cifrado sobre la existente. Clave propiedad de AWS AWS KMS se aplican cargos. Para obtener más información, consulte [Creación de claves](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) en la *Guía para desarrolladores de AWS Key Management Service *. Para administrar tu clave, usa AWS Key Management Service (AWS KMS) en la [AWS KMS consola](https://console.aws.amazon.com/kms) AWS CLI, la o la AWS KMS API. Para obtener más información, consulte la [Guía para desarrolladores de AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/).

Puedes configurar las claves administradas por el cliente al crear y actualizar Hooks. Cuando proporciones tu clave gestionada por el cliente, CloudFormation utiliza esta clave para cifrar los datos de las anotaciones antes de almacenarlos. Cuando posteriormente se accede a los datos de las anotaciones durante la operación de la `GetHookResult` API, los descifra CloudFormation automáticamente. Para obtener información sobre cómo configurar la clave de cifrado para Hooks, consulte. [Referencia a la sintaxis del esquema de la configuración del enlace](hook-configuration-schema.md)

**importante**  
Ten en cuenta que, actualmente, la `KmsKeyId` opción de especificar una clave gestionada por el cliente solo está disponible cuando la utilizas AWS CLI para configurar tu Hook.

## Utilizar el contexto de cifrado para controlar el acceso a la clave administrada por el cliente
<a name="hooks-encryption-context-security"></a>

CloudFormation Hooks incluye automáticamente el contexto de cifrado en cada operación de almacenamiento y recuperación de anotaciones. Esto te permite establecer las condiciones del contexto de cifrado en tu política de claves para garantizar que la clave solo se pueda usar para Hooks específicos:
+ `kms:EncryptionContext:aws:cloudformation:hooks:service`— Garantiza que la clave solo la utilice el servicio CloudFormation Hooks.
+ `kms:EncryptionContext:aws:cloudformation:account-id`— Evita el uso de claves entre cuentas al hacer coincidir tu Cuenta de AWS ID.
+ `kms:EncryptionContext:aws:cloudformation:arn`— Restrinja el uso a Hooks específicos mediante patrones ARN.

Estas condiciones proporcionan una protección adicional contra los confusos ataques secundarios al vincular criptográficamente los datos cifrados al contexto específico de Hook.

## Política de claves de KMS administradas por el cliente
<a name="hooks-policy-example-cmk-access"></a>

Al crear su clave gestionada por el cliente, debe definir su política de claves para permitir que el servicio CloudFormation Hooks realice AWS KMS operaciones. Para utilizar la siguiente política clave, *placeholder values* sustitúyala por tu propia información.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EnableIAMUserDescribeKey",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "EnableIAMUserGenerateDataKey",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:GenerateDataKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    },
    {
      "Sid": "EnableIAMUserDecrypt",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/ExampleRole"
      },
      "Action": "kms:Decrypt",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:ViaService": "cloudformation.us-east-1.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowHooksServiceDescribeKey",
      "Effect": "Allow",
      "Principal": {
        "Service": "hooks.cloudformation.amazonaws.com"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    },
    {
      "Sid": "AllowHooksService",
      "Effect": "Allow",
      "Principal": {
        "Service": "hooks.cloudformation.amazonaws.com"
      },
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012",
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:cloudformation:*:123456789012:hook/*",
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    }
  ]
}
```

------

Esta política concede permisos tanto a las funciones de IAM (las tres primeras instrucciones) como al servicio CloudFormation Hooks (las dos últimas instrucciones). La clave de `kms:ViaService` condición garantiza que la clave de KMS solo se pueda utilizar de forma continua CloudFormation, lo que impide las llamadas directas a la API de KMS. Las operaciones clave son:
+ `kms:DescribeKey`— Valida las propiedades y los metadatos clave. Esta operación se encuentra en instrucciones independientes porque no se puede utilizar con condiciones de contexto de cifrado.
+ `kms:GenerateDataKey`— Genera claves de cifrado de datos para cifrar las anotaciones antes del almacenamiento. Esta operación incluye las condiciones del contexto de cifrado para el control de acceso limitado.
+ `kms:Decrypt`— Descifra los datos de anotaciones previamente cifrados. En el caso de las funciones de IAM, esto incluye la condición. `kms:ViaService` Para el principal del servicio, esto incluye las condiciones del contexto de cifrado.

Las claves de `aws:SourceArn` condición `aws:SourceAccount` y las claves de condición proporcionan la protección principal contra los confusos ataques de subalternos. Las condiciones del contexto de cifrado proporcionan capas de validación adicionales. Para obtener más información, consulte [Uso aws:SourceArn o aws:SourceAccount condicionamiento de claves](https://docs.aws.amazon.com/kms/latest/developerguide/least-privilege.html#least-privilege-source-arn) en la *Guía para AWS Key Management Service desarrolladores*.

**importante**  
Las funciones de ejecución de enlaces no necesitan AWS KMS permisos. El director del servicio de CloudFormation Hooks realiza todas AWS KMS las operaciones.

## Permisos de KMS para la `SetTypeConfiguration` API
<a name="hooks-policy-example-settypeconfiguration-permissions"></a>

Durante la llamada a la [SetTypeConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html)API, CloudFormation valida los permisos del usuario para cifrar los datos de las anotaciones con la clave especificada. AWS KMS Añada la siguiente política de IAM al usuario o rol que configurará el cifrado mediante la API. `SetTypeConfiguration` Sustituya *placeholder values* por su propia información.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "cloudformation:SetTypeConfiguration",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "kms:DescribeKey",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123"
    },
    {
      "Effect": "Allow",
      "Action": "kms:GenerateDataKey",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123",
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:aws:cloudformation:hooks:service": "hooks.cloudformation.amazonaws.com",
          "kms:EncryptionContext:aws:cloudformation:123456789012": "123456789012"
        },
        "ArnLike": {
          "kms:EncryptionContext:aws:cloudformation:arn": "arn:aws:cloudformation:*:123456789012:hook/*"
        }
      }
    }
  ]
}
```

------

## Permisos de KMS para la API `GetHookResult`
<a name="hooks-policy-example-gethookresult-permissions"></a>

[GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html)Para solicitar Hooks que usen tu clave administrada por el cliente, los usuarios deben tener `kms:Decrypt` permiso para usar esa clave. Agrega la siguiente política de IAM al usuario o rol al que `GetHookResult` llamarás. `arn:aws:kms:us-east-1:123456789012:key/abc-123`Sustitúyala por el ARN de la clave gestionada por el cliente.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "cloudformation:GetHookResult",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:us-east-1:123456789012:key/abc-123"
    }
  ]
}
```

------