

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Accorder des autorisations IAM pour les Hooks CloudFormation
<a name="grant-iam-permissions-for-hooks"></a>

Par défaut, un nouvel utilisateur Compte AWS n'est pas autorisé à gérer les Hooks à l'aide de l'API AWS Management Console, AWS Command Line Interface (AWS CLI) ou de AWS l'API. Pour accorder des autorisations aux utilisateurs, un administrateur IAM peut créer des politiques IAM. L’administrateur peut ensuite ajouter les politiques IAM aux rôles et les utilisateurs peuvent assumer les rôles.

Utilisez les exemples de politiques présentés dans cette rubrique pour créer vos propres politiques IAM personnalisées afin d'autoriser les utilisateurs à utiliser les Hooks. 

*Pour savoir comment créer une politique basée sur l'identité IAM à l'aide de ces exemples de documents de politique JSON, voir [Définir des autorisations IAM personnalisées avec des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dans le guide de l'utilisateur IAM.*

Cette rubrique décrit les autorisations nécessaires pour effectuer les opérations suivantes :
+ **Gérer les Hooks** — Créez, modifiez et désactivez les Hooks dans votre compte.
+ **Publier les Hooks publiquement** : enregistrez, testez et publiez vos Hooks personnalisés pour les rendre accessibles au public dans le CloudFormation registre.
+ **Afficher les résultats des invocations** — Accédez aux résultats des invocations Hook sur votre compte et interrogez-les.
+ **Afficher les détails d'un résultat d'invocation** — Accédez à des informations détaillées et à des conseils de correction pour un résultat d'invocation Hook spécifique sur votre compte.

Lorsque vous créez vos politiques IAM, vous pouvez trouver la documentation de toutes les actions, ressources et clés de condition associées au préfixe de `cloudformation` service dans la CloudFormation section [Actions, ressources et clés de condition de la référence](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awscloudformation.html) d'*autorisation de service*.

**Topics**
+ [Autoriser un utilisateur à gérer les Hooks](#iam-permissions-to-manage-hooks)
+ [Autoriser un utilisateur à publier des Hooks personnalisés publiquement](#iam-permissions-for-public-hook-publishing)
+ [Autoriser un utilisateur à consulter les résultats d'invocation de Hook](#iam-permissions-to-request-invocation-results)
+ [Autoriser un utilisateur à afficher les résultats détaillés de l'invocation de Hook](#get-detailed-hook-invocation-results)
+ [AWS KMS politique clé et autorisations pour chiffrer les résultats de CloudFormation Hooks au repos](hooks-kms-key-policy.md)

## Autoriser un utilisateur à gérer les Hooks
<a name="iam-permissions-to-manage-hooks"></a>

Si vous devez autoriser les utilisateurs à gérer les extensions, y compris les Hooks, sans pouvoir les rendre publiques dans le CloudFormation registre, vous pouvez utiliser l'exemple de politique IAM suivant.

**Important**  
Les appels `ActivateType` et `SetTypeConfiguration` l'API fonctionnent ensemble pour créer des Hooks dans votre compte. Lorsque vous autorisez un utilisateur à appeler l'`SetTypeConfiguration`API, vous lui accordez automatiquement la possibilité de modifier et de désactiver les Hooks existants. Vous ne pouvez pas utiliser les autorisations au niveau des ressources pour restreindre l'accès à cet appel d'API. Par conséquent, assurez-vous de n'accorder cette autorisation qu'aux utilisateurs autorisés de votre compte.

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

****  

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

------

Les utilisateurs qui gèrent les Hooks peuvent avoir besoin de certaines autorisations connexes, par exemple : 
+ Pour afficher les contrôles proactifs à partir du catalogue de contrôles dans la CloudFormation console, l'utilisateur doit avoir l'`controlcatalog:ListControls`autorisation requise dans une politique IAM. 
+ Pour enregistrer des Hooks personnalisés en tant qu'extensions privées dans le CloudFormation registre, l'utilisateur doit avoir l'`cloudformation:RegisterType`autorisation requise dans une politique IAM.

## Autoriser un utilisateur à publier des Hooks personnalisés publiquement
<a name="iam-permissions-for-public-hook-publishing"></a>

L'exemple de politique IAM suivant se concentre spécifiquement sur les capacités de publication. Utilisez cette politique si vous devez autoriser les utilisateurs à rendre les extensions, y compris les Hooks, disponibles publiquement dans le CloudFormation registre.

**Important**  
La publication des Hooks les met publiquement à la disposition des autres Comptes AWS. Assurez-vous que seuls les utilisateurs autorisés disposent de ces autorisations et que les extensions publiées répondent aux normes de qualité et de sécurité de votre organisation.

------
#### [ 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": "*"
        }
    ]
}
```

------

## Autoriser un utilisateur à consulter les résultats d'invocation de Hook
<a name="iam-permissions-to-request-invocation-results"></a>

Les autorisations IAM nécessaires pour afficher les résultats d'invocation de Hook changent en fonction du type d'informations demandées.

### Résultats d'invocation de List Hook
<a name="list-hook-invocation-results"></a>

Pour répertorier les résultats d'invocation de Hook, les utilisateurs ont besoin d'autorisations différentes en fonction de la demande d'API effectuée.
+ Pour accorder l'autorisation de demander tous les résultats du Hook, les résultats d'un Hook spécifique ou les résultats d'un Hook et d'un statut d'invocation spécifiques, vous devez autoriser l'accès à l'`cloudformation:ListAllHookResults`action.
+ Pour accorder l'autorisation de demander des résultats en spécifiant une cible Hook, vous devez autoriser l'accès à l'`cloudformation:ListHookResults`action. Cette autorisation permet à l'appelant de l'API de spécifier les `TargetId` paramètres `TargetType` et lors de l'appel`ListHookResults`.

Voici un exemple de politique d'autorisation de base pour répertorier les résultats d'invocation de Hook. Les identités IAM (utilisateurs ou rôles) associées à cette politique sont autorisées à demander tous les résultats d'invocation en utilisant toutes les combinaisons de paramètres disponibles.

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

****  

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

------

#### Contrôlez quels ensembles de modifications peuvent être spécifiés
<a name="control-which-change-sets"></a>

L'exemple de politique IAM suivant autorise l'`cloudformation:ListHookResults`action à demander des résultats en spécifiant la cible du Hook. Cependant, il refuse également l'action si la cible est un ensemble de modifications nommé`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"
                }
            }
        }
    ]
}
```

------

#### Contrôlez quels Hooks peuvent être spécifiés
<a name="control-which-hooks"></a>

L'exemple de politique IAM suivant accorde l'autorisation à l'`cloudformation:ListAllHookResults`action de demander des résultats d'invocation uniquement lorsque l'ARN du Hook est fourni dans la demande. Il refuse l'action pour un Hook ARN spécifié.

------
#### [ 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"
                }
            }
        }
    ]
}
```

------

## Autoriser un utilisateur à afficher les résultats détaillés de l'invocation de Hook
<a name="get-detailed-hook-invocation-results"></a>

Pour autoriser l'affichage des résultats détaillés d'un appel Hook spécifique, vous devez autoriser l'accès à l'`cloudformation:GetHookResult`action. Cette autorisation permet aux utilisateurs de récupérer des informations détaillées et des conseils de correction pour un résultat d'invocation Hook spécifique. Pour plus d’informations, consultez [GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html) dans la *Référence d’API AWS CloudFormation *.

L'exemple de politique IAM suivant accorde des autorisations à l'`cloudformation:GetHookResult`action.

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

****  

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

------

**Note**  
Vous pouvez configurer Hooks pour chiffrer les résultats d'invocation détaillés stockés dans le cloud avec vos propres clés. AWS KMS Pour plus d'informations sur la façon de configurer la politique des clés et les autorisations IAM dont vous avez besoin lorsque vous utilisez une clé gérée par le client pour le chiffrement, consultez[AWS KMS politique clé et autorisations pour chiffrer les résultats de CloudFormation Hooks au repos](hooks-kms-key-policy.md). 

# AWS KMS politique clé et autorisations pour chiffrer les résultats de CloudFormation Hooks au repos
<a name="hooks-kms-key-policy"></a>

Cette rubrique explique comment configurer la politique de AWS KMS clés et les autorisations dont vous avez besoin lorsque vous spécifiez une clé gérée par le client pour chiffrer les données d'annotations Hooks disponibles depuis l'[GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html)API. 

**Note**  
CloudFormation Hooks n'a pas besoin d'autorisation supplémentaire pour utiliser la valeur par défaut Clé détenue par AWS pour chiffrer les données d'annotations de votre compte.

**Topics**
+ [Présentation de](#hooks-kms-overview)
+ [Contrôle de l’accès à votre clé gérée par le client à l’aide du contexte de chiffrement](#hooks-encryption-context-security)
+ [Stratégie de clé KMS gérée par le client](#hooks-policy-example-cmk-access)
+ [Autorisations KMS pour `SetTypeConfiguration` l'API](#hooks-policy-example-settypeconfiguration-permissions)
+ [Autorisations KMS pour `GetHookResult` l'API](#hooks-policy-example-gethookresult-permissions)

## Présentation de
<a name="hooks-kms-overview"></a>

Les éléments suivants AWS KMS keys peuvent être utilisés pour chiffrer les données d'annotations Hook :
+ [Clé détenue par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)— Par défaut, CloudFormation utilise un Clé détenue par AWS pour chiffrer les données. Vous ne pouvez ni afficher, ni gérer, ni utiliser Clés détenues par AWS, ni auditer leur utilisation. Toutefois, il n'est pas nécessaire d'effectuer une configuration explicite pour protéger la clé utilisée pour chiffrer vos données. Clés détenues par AWS sont fournis gratuitement (sans frais mensuels ni frais d'utilisation). À moins que vous ne soyez obligé d'auditer ou de contrôler la clé de chiffrement qui protège les données de vos annotations, un Clé détenue par AWS est un bon choix.
+ [Clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk) : CloudFormation prend en charge l'utilisation d'une clé symétrique gérée par le client que vous créez, détenez et gérez pour ajouter une deuxième couche de chiffrement à la clé existante Clé détenue par AWS. AWS KMS des frais s'appliquent. Pour plus d'informations, consultez [Création des clés](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) dans le *Guide du développeur AWS Key Management Service *. Pour gérer votre clé, utilisez le AWS Key Management Service (AWS KMS) dans la [AWS KMS console](https://console.aws.amazon.com/kms) AWS CLI, le ou l' AWS KMS API. Pour plus d’informations, consultez le [Guide du développeur AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/).

Vous pouvez configurer les clés gérées par le client lors de la création et de la mise à jour des Hooks. Lorsque vous fournissez la clé gérée par le client, CloudFormation utilisez cette clé pour chiffrer les données d'annotations avant de les stocker. Lorsque les données d'annotations sont consultées ultérieurement pendant l'opération de l'`GetHookResult`API, les CloudFormation déchiffre automatiquement. Pour plus d'informations sur la configuration de votre clé de chiffrement pour les Hooks, consultez[Référence syntaxique du schéma de configuration Hook](hook-configuration-schema.md).

**Important**  
Notez que l'`KmsKeyId`option permettant de spécifier une clé gérée par le client n'est actuellement disponible que lorsque vous utilisez le AWS CLI pour configurer votre Hook.

## Contrôle de l’accès à votre clé gérée par le client à l’aide du contexte de chiffrement
<a name="hooks-encryption-context-security"></a>

CloudFormation Hooks inclut automatiquement le contexte de chiffrement à chaque opération de stockage et de récupération d'annotations. Cela vous permet de définir des conditions de contexte de chiffrement dans votre politique de clé afin de garantir que la clé ne peut être utilisée que pour des Hooks spécifiques :
+ `kms:EncryptionContext:aws:cloudformation:hooks:service`— Garantit que la clé n'est utilisée que par le service CloudFormation Hooks.
+ `kms:EncryptionContext:aws:cloudformation:account-id`— Empêche l'utilisation de clés entre comptes en faisant correspondre votre Compte AWS identifiant.
+ `kms:EncryptionContext:aws:cloudformation:arn`— Limitez l'utilisation à des Hooks spécifiques à l'aide de modèles d'ARN.

Ces conditions fournissent une protection supplémentaire contre les attaques secondaires confuses en liant cryptographiquement les données cryptées au contexte Hook spécifique.

## Stratégie de clé KMS gérée par le client
<a name="hooks-policy-example-cmk-access"></a>

Lorsque vous créez votre clé gérée par le client, vous devez définir sa politique clé pour permettre au service CloudFormation Hooks d'effectuer AWS KMS des opérations. Pour appliquer la politique clé suivante, remplacez-la *placeholder values* par vos propres informations.

------
#### [ 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/*"
        }
      }
    }
  ]
}
```

------

Cette politique accorde des autorisations à la fois aux rôles IAM (trois premières instructions) et au service CloudFormation Hooks (deux dernières instructions). La clé de `kms:ViaService` condition garantit que la clé KMS ne peut être utilisée que par le biais CloudFormation, empêchant ainsi les appels directs à l'API KMS. Les principales opérations sont les suivantes :
+ `kms:DescribeKey`— Valide les propriétés et les métadonnées clés. Cette opération figure dans des instructions distinctes car elle ne peut pas être utilisée avec des conditions de contexte de chiffrement.
+ `kms:GenerateDataKey`— Génère des clés de chiffrement des données pour chiffrer les annotations avant leur stockage. Cette opération inclut les conditions de contexte de chiffrement pour le contrôle d'accès délimité.
+ `kms:Decrypt`— Déchiffre les données d'annotations précédemment chiffrées. Pour les rôles IAM, cela inclut la `kms:ViaService` condition. Pour le principal de service, cela inclut les conditions de contexte de chiffrement.

Les touches de `aws:SourceArn` condition `aws:SourceAccount` et fournissent la protection principale contre les attaques secondaires confuses. Les conditions de contexte de chiffrement fournissent des couches de validation supplémentaires. Pour plus d'informations, consultez la section [Utilisation aws:SourceArn ou aws:SourceAccount condition des clés](https://docs.aws.amazon.com/kms/latest/developerguide/least-privilege.html#least-privilege-source-arn) dans le *Guide du AWS Key Management Service développeur*.

**Important**  
Les rôles d'exécution de Hook n'ont pas besoin d' AWS KMS autorisations. Le directeur du service CloudFormation Hooks effectue toutes les AWS KMS opérations.

## Autorisations KMS pour `SetTypeConfiguration` l'API
<a name="hooks-policy-example-settypeconfiguration-permissions"></a>

Au cours de l'appel d'[SetTypeConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_SetTypeConfiguration.html)API, CloudFormation valide les autorisations de l'utilisateur pour chiffrer les données d'annotations avec la clé spécifiée. AWS KMS Ajoutez la politique IAM suivante à l'utilisateur ou au rôle qui configurera le chiffrement à l'aide de l'`SetTypeConfiguration`API. Remplacez les *placeholder values* par vos propres informations.

------
#### [ 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/*"
        }
      }
    }
  ]
}
```

------

## Autorisations KMS pour `GetHookResult` l'API
<a name="hooks-policy-example-gethookresult-permissions"></a>

[GetHookResult](https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_GetHookResult.html)Pour appeler des Hooks qui utilisent votre clé gérée par le client, les utilisateurs doivent être `kms:Decrypt` autorisés à utiliser cette clé. Ajoutez la politique IAM suivante à l'utilisateur ou au rôle qui `GetHookResult` appellera. `arn:aws:kms:us-east-1:123456789012:key/abc-123`Remplacez-le par l'ARN de votre clé gérée par le client.

------
#### [ 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"
    }
  ]
}
```

------