

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.

# Clé KMS \| Créer
<a name="deployment-advanced-kms-key-create"></a>

Créez une clé principale client (CMK) AWS KMS à l'aide d'un document d'automatisation SSM avec validation des politiques.

**Classification complète :** Déploiement \| Composants de pile avancés \| Clé KMS \| Créer

## Détails du type de modification
<a name="ct-1d84keiri1jhg-DAKc-table"></a>


****  

|  |  | 
| --- |--- |
| Modifier l'identifiant du type | ct-1d84keiri1jhg | 
| Version actuelle | 2.0 | 
| Durée d'exécution prévue | 30 minutes | 
| Approbation AWS | Obligatoire | 
| Approbation du client | Facultatif | 
| Mode d'exécution | Automatisé | 

## Informations supplémentaires
<a name="deployment-advanced-kms-key-create-info"></a>

### Créer une clé KMS
<a name="ex-kms-key-create-col"></a>

#### Création d'une clé AWS KMS avec la console
<a name="kms-key-create-con"></a>

Capture d'écran de ce type de modification dans la console AMS :

![](http://docs.aws.amazon.com/fr_fr/managedservices/latest/ctref/images/guiKmsKeyCreateCT.png)


Fonctionnement :

1. Accédez à la page **Créer une RFC** : Dans le volet de navigation de gauche de la console AMS, cliquez **RFCs**pour ouvrir la page de RFCs liste, puis cliquez sur **Créer une RFC**.

1. Choisissez un type de modification (CT) populaire dans la vue **Parcourir les types de modification** par défaut, ou sélectionnez un CT dans la vue **Choisir par catégorie**.
   + **Parcourir par type de modification** : vous pouvez cliquer sur un CT populaire dans la zone de **création rapide** pour ouvrir immédiatement la page **Run RFC**. Notez que vous ne pouvez pas choisir une ancienne version CT avec création rapide.

     Pour trier CTs, utilisez la zone **Tous les types de modifications** dans l'affichage **Carte** ou **Tableau**. Dans l'une ou l'autre vue, sélectionnez un CT, puis cliquez sur **Créer une RFC** pour ouvrir la page **Exécuter une RFC**. Le cas échéant, une option **Créer avec une ancienne version** apparaît à côté du bouton **Créer une RFC**.
   + **Choisissez par catégorie** : sélectionnez une catégorie, une sous-catégorie, un article et une opération et la zone de détails du CT s'ouvre avec une option permettant de **créer avec une ancienne version**, le cas échéant. Cliquez sur **Créer une RFC** pour ouvrir la page **Exécuter une RFC**.

1. Sur la page **Run RFC**, ouvrez la zone de nom du CT pour voir la boîte de détails du CT. Un **sujet** est requis (il est renseigné pour vous si vous choisissez votre CT dans la vue **Parcourir les types de modification**). Ouvrez la zone **de configuration supplémentaire** pour ajouter des informations sur le RFC.

   Dans la zone **Configuration de l'exécution**, utilisez les listes déroulantes disponibles ou entrez des valeurs pour les paramètres requis. Pour configurer les paramètres d'exécution facultatifs, ouvrez la zone **de configuration supplémentaire**.

1. Lorsque vous avez terminé, cliquez sur **Exécuter**. S'il n'y a aucune erreur, la page **RFC créée avec succès** s'affiche avec les détails de la RFC soumise et le résultat d'**exécution** initial. 

1. Ouvrez la zone **Paramètres d'exécution** pour voir les configurations que vous avez soumises. Actualisez la page pour mettre à jour l'état d'exécution de la RFC. Vous pouvez éventuellement annuler la RFC ou en créer une copie à l'aide des options en haut de la page.

#### Création d'une clé AWS KMS à l'aide de la CLI
<a name="kms-key-create-cli"></a>

Fonctionnement :

1. Utilisez soit le Inline Create (vous émettez une `create-rfc` commande avec tous les paramètres RFC et d'exécution inclus), soit le Template Create (vous créez deux fichiers JSON, un pour les paramètres RFC et un pour les paramètres d'exécution) et émettez la `create-rfc` commande avec les deux fichiers en entrée. Les deux méthodes sont décrites ici.

1. Soumettez la `aws amscm submit-rfc --rfc-id {{ID}}` commande RFC : avec l'ID RFC renvoyé.

   Surveillez la `aws amscm get-rfc --rfc-id {{ID}}` commande RFC :.

Pour vérifier la version du type de modification, utilisez cette commande :

```
aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value={{CT_ID}}
```
**Note**  
Vous pouvez utiliser n'importe quel `CreateRfc` paramètre avec n'importe quelle RFC, qu'ils fassent ou non partie du schéma du type de modification. Par exemple, pour recevoir des notifications lorsque le statut de la RFC change, ajoutez cette ligne `--notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}"` aux paramètres RFC de la demande (et non aux paramètres d'exécution). Pour obtenir la liste de tous les CreateRfc paramètres, consultez le manuel [AMS Change Management API Reference](https://docs.aws.amazon.com/managedservices/latest/ApiReference-cm/API_CreateRfc.html).

*CRÉATION EN LIGNE* :

Émettez la commande create RFC avec les paramètres d'exécution fournis en ligne (évitez les guillemets lorsque vous fournissez des paramètres d'exécution en ligne), puis soumettez l'ID RFC renvoyé. Par exemple, vous pouvez remplacer le contenu par quelque chose comme ceci :

Paramètres obligatoires uniquement :

```
aws amscm create-rfc --title {{my-app-key}} --change-type-id ct-1d84keiri1jhg --change-type-version {{1.0}} --execution-parameters '{"Description":"{{KMS key for my-app}}","VpcId":"{{VPC_ID}}","Name":"{{my-app-key}}","StackTemplateId":"stm-enf1j068fhg34vugt","TimeoutInMinutes":60,"Parameters":{"Description":"{{KMS key for my-app}}"}}'
```

*CRÉATION D'UN MODÈLE* :

1. Exportez le schéma JSON des paramètres d'exécution pour ce type de modification dans un fichier ; cet exemple le nomme CreateKmsKeyAutoParams .json.

   ```
   aws amscm get-change-type-version --change-type-id "ct-1d84keiri1jhg" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateKmsKeyAutoParams.json
   ```

1. Modifiez et enregistrez le CreateKmsKeyAutoParams fichier. Des exemples suivent.

   **Accordez à un utilisateur ou à un rôle l'autorisation de déchiffrer la clé CMK créée**. Exemples de paramètres d'exécution :

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}”,
     "Name": "{{my-app-key-decrypt}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringDecryptPermissions": [
         "{{ARN:role/roleA}}",
         "{{ARN:user/userB}}",
         "{{ARN:role/instanceProfileA}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Pour la politique qui en résulte, voir[Accorde des autorisations de déchiffrement à l'aide du CML pour un utilisateur ou un rôle IAM](#kms-key-grant-cmk-decrypt-for-user-or-role).

   **Accordez à un utilisateur ou à un rôle l'autorisation de chiffrer à l'aide de la clé CMK créée**. Exemples de paramètres d'exécution :

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encrypt}}",
     "Tags": [
       {
         "Key": "Name",
         "Value": "{{my-app-key}}"
       }
     ],
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringEncryptPermissions": [
         "{{ARN:role/roleA}}",
         "{{ARN:user/userB}}",
         "{{ARN:role/instanceProfileA}}"
       ],
       "Description": "KMS key for my-app"
     }
   }
   ```

   Pour la politique qui en résulte, voir[Accorde les autorisations de chiffrement à l'aide du CML pour un utilisateur ou un rôle IAM](#kms-key-grant-cmk-encrypt-for-user-or-role).

   **Accordez à un utilisateur, à un rôle ou à un compte l'autorisation de créer des autorisations à l'aide de la clé CMK créée**. Exemples de paramètres d'exécution :

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-create-grants}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringGrantsPermissions": [
         "{{arn:aws:iam::999999999999:role/roleA}}",
         "{{888888888888}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Pour la politique qui en résulte, voir[Accorde des autorisations pour créer des subventions avec le CMK pour un utilisateur, un rôle ou un compte IAM](#kms-key-create-cmk-grants-for-user-role-or-account).

   **Autorisez uniquement les services AWS intégrés à AWS KMS à effectuer l'opération GRANT**. Exemples de paramètres d'exécution :

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-limit-to-services}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "IAMPrincipalsRequiringGrantsPermissions": [
         "{{arn:aws:iam::999999999999:role/roleA}}"
       ],
       "LimitGrantsToAWSResources": "true",
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Pour la politique qui en résulte, voir[Autoriser uniquement les services AWS intégrés à AWS KMS à effectuer l'opération GRANT](#kms-key-limit-grants-to-aws-services).

   **Imposez l'utilisation de clés contextuelles de chiffrement dans les opérations cryptographiques**. Exemples de paramètres d'exécution :

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encryption-keys}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "EnforceEncryptionContextKeys": "true",
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Pour la politique qui en résulte, voir[Imposer l'utilisation de clés contextuelles de chiffrement dans les opérations cryptographiques](#kms-key-enforce-encryption-context-keys).

   **Appliquez une liste spécifique de clés contextuelles de chiffrement dans les opérations cryptographiques**. Exemples de paramètres d'exécution :

   ```
   {
     "Description": "{{KMS key for my-app}}",
     "VpcId": "{{VPC_ID}}",
     "Name": "{{my-app-key-encryption-list}}",
     "StackTemplateId": "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes": 60,
     "Parameters": {
       "AllowedEncryptionContextKeys": [
         "{{Name}}",
         "{{Application}}"
       ],
       "Description": "{{KMS key for my-app}}"
     }
   }
   ```

   Pour la politique qui en résulte, voir[Appliquer une liste spécifique de clés contextuelles de chiffrement dans les opérations cryptographiques](#kms-key-enforce-encryption-context-keys-list).

   **Autorisez les services AWS à accéder à la clé CMK créée**. Exemples de paramètres d'exécution :

   ```
   {
     "Description" : "KMS key for my-app",
     "VpcId" : "VPC_ID",
     "Name" : "my-app-key-allow-aws-service-access",
     "StackTemplateId" : "stm-enf1j068fhg34vugt",
     "TimeoutInMinutes" : 60,
     "Parameters" : {
         "AllowServiceRolesAccessKMSKeys": [
             "ec2.us-east-1.amazonaws.com",
             "ecr.us-east-1.amazonaws.com"
       ],
       "Description": "KMS key for my-app"
     }
   }
   ```

   Pour la politique qui en résulte, voir[Autoriser les services AWS à accéder à la clé CMK créée](#kms-key-allow-services).

1. Exportez le fichier JSON du modèle RFC dans un fichier ; cet exemple le nomme CreateKmsKeyAutoRfc .json :

   ```
   aws amscm create-rfc --generate-cli-skeleton > CreateKmsKeyAutoRfc.json
   ```

1. Modifiez et enregistrez le fichier CreateKmsKeyAutoRfc .json. Par exemple, vous pouvez remplacer le contenu par quelque chose comme ceci :

   ```
   {
       "ChangeTypeId": "ct-1d84keiri1jhg",
       "ChangeTypeVersion": "1.0",
       "Title": "{{Create KMS Key}}"
   }
   ```

1. Créez le RFC en spécifiant le fichier CreateKmsKeyAuto RFC et le CreateKmsKeyAutoParams fichier :

   ```
   aws amscm create-rfc --cli-input-json file://CreateKmsKeyAutoRfc.json  --execution-parameters file://CreateKmsKeyAutoParams.json
   ```

   Vous recevez l'identifiant de la nouvelle RFC dans la réponse et pouvez l'utiliser pour soumettre et surveiller la RFC. Tant que vous ne l'avez pas soumise, la RFC reste en cours d'édition et ne démarre pas.

#### Conseils
<a name="ex-kms-key-create-tip"></a>
+ Ce CT crée une CloudFormation pile qui crée une clé KMS avec`DeletionPolicy: Retain`. De par sa conception, la clé KMS créée sera conservée même après la suppression de la pile. Si vous êtes sûr de vouloir supprimer la clé KMS, créez une RFC avec le type de modification [ct-2zxya20wmf5bf](schemas.md#ct-2zxya20wmf5bf-schema-section), Management \| Advanced stack components \| KMS key \| Delete (automatisation gérée).
+ Ce type de modification est ExecutionMode = Automatisé. Ce type de modification ne nécessite donc pas de révision manuelle par les opérations AMS et devrait s'exécuter plus rapidement que KMS Key : Create (automatisation gérée) ; toutefois, si vous vous trouvez dans une situation inhabituelle, la version manuelle vous convient peut-être mieux. Voir [KMS Key \| Create (automatisation gérée)](https://docs.aws.amazon.com/managedservices/latest/ctref/deployment-advanced-kms-key-create-review-required.html).
+ Ce CT possède un nouveau paramètre, AllowServiceRolesAccess kmSKeys, qui fournit aux services AWS spécifiés l'accès à la clé KMS. La modification a été apportée car le rôle de service de groupe Autoscaling n'a pas pu démarrer les instances EC2 avec des volumes EBS chiffrés en raison de l'absence d'autorisations sur la clé KMS.
+ Pour en savoir plus sur les clés AWS KMS, consultez [AWS Key Management Service (KMS)](https://aws.amazon.com/kms/)[, AWS Key Management FAQs Service [et AWS Key Management](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html)](https://aws.amazon.com/kms/faqs/) Service Concepts.

#### KMS Key : créer des politiques résultantes
<a name="ex-kms-key-create-policies"></a>

En fonction de la façon dont vous avez créé votre clé KMS, vous avez créé des politiques. Ces exemples de politiques correspondent aux différents scénarios de création de clés KMS fournis dans[Créer une clé KMS](#ex-kms-key-create-col).

##### Accorde des autorisations de déchiffrement à l'aide du CML pour un utilisateur ou un rôle IAM
<a name="kms-key-grant-cmk-decrypt-for-user-or-role"></a>

L'exemple de politique qui en résulte accorde aux utilisateurs, aux rôles ou aux profils d'instance IAM l'autorisation de déchiffrer à l'aide de la clé CMK :

```
{
          "Sid": "Allow decrypt using the key",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                "arn:aws:iam::999999999999:role/roleA",
                "arn:aws:iam::999999999999:user/userB",
                "arn:aws:iam::999999999999:role/instanceProfileA"
              ]
          },
          "Action": [
              "kms:DescribeKey",
              "kms:Decrypt"
          ],
          "Resource": "*"
}
```

Pour les paramètres d'exécution permettant de créer cette politique avec la clé KMS Create change type, voir [Créer une clé KMS](#ex-kms-key-create-col)

##### Accorde les autorisations de chiffrement à l'aide du CML pour un utilisateur ou un rôle IAM
<a name="kms-key-grant-cmk-encrypt-for-user-or-role"></a>

L'exemple de politique qui en résulte accorde aux utilisateurs IAM, aux rôles ou aux profils d'instance l'autorisation de chiffrer à l'aide de la clé CMK :

```
{
          "Sid": "Allow encrypt using the key",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                "arn:aws:iam::999999999999:role/roleA",
                "arn:aws:iam::999999999999:user/userB",
                "arn:aws:iam::999999999999:role/instanceProfileA"
              ]
          },
          "Action": [
              "kms:DescribeKey",
              "kms:Encrypt",
              "kms:ReEncrypt*",
              "kms:GenerateDataKey",
              "kms:GenerateDataKeyWithoutPlaintext"
          ],
          "Resource": "*"
}
```

Pour les paramètres d'exécution permettant de créer cette politique avec la clé KMS Create change type, voir [Créer une clé KMS](#ex-kms-key-create-col)

##### Accorde des autorisations pour créer des subventions avec le CMK pour un utilisateur, un rôle ou un compte IAM
<a name="kms-key-create-cmk-grants-for-user-role-or-account"></a>

Exemple de politique qui en résulte :

```
{
          "Sid": "Allow grants",
          "Effect": "Allow",
          "Principal": {
              "AWS": [
                  "arn:aws:iam::999999999999:role/roleA",
                  "arn:aws:iam::888888888888:root"
              ]
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*"
}
```

Pour les paramètres d'exécution permettant de créer cette politique avec la clé KMS Create change type, voir [Créer une clé KMS](#ex-kms-key-create-col)

##### Autoriser uniquement les services AWS intégrés à AWS KMS à effectuer l'opération GRANT
<a name="kms-key-limit-grants-to-aws-services"></a>

Exemple de politique qui en résulte :

```
{
          "Sid": "Allow grants",
          "Effect": "Allow",
          "Principal": {
              "AWS": "arn:aws:iam::999999999999:role/roleA"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*"
      },
      {
          "Sid": "Deny if grant is not for AWS resource",
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:ListGrants",
              "kms:RevokeGrant"
          ],
          "Resource": "*",
          "Condition": {
              "Bool": {
                  "kms:GrantIsForAWSResource": "false"
              }
          }
      } }
}
```

Pour les paramètres d'exécution permettant de créer cette politique avec la clé KMS Create change type, voir [Créer une clé KMS](#ex-kms-key-create-col)

##### Imposer l'utilisation de clés contextuelles de chiffrement dans les opérations cryptographiques
<a name="kms-key-enforce-encryption-context-keys"></a>

Exemple de politique qui en résulte :

```
{
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:Decrypt",
              "kms:Encrypt",
              "kms:GenerateDataKey*",
              "kms:ReEncrypt"
          ],
          "Resource": "*",
          "Condition": {
              "Null": {
                  "kms:EncryptionContextKeys": "true"
              }
          }
}
```

Pour les paramètres d'exécution permettant de créer cette politique avec la clé KMS Create change type, voir [Créer une clé KMS](#ex-kms-key-create-col)

##### Appliquer une liste spécifique de clés contextuelles de chiffrement dans les opérations cryptographiques
<a name="kms-key-enforce-encryption-context-keys-list"></a>

Exemple de politique qui en résulte :

```
{
          "Effect": "Deny",
          "Principal": {
              "AWS": "*"
          },
          "Action": [
              "kms:CreateGrant",
              "kms:Decrypt",
              "kms:Encrypt",
              "kms:GenerateDataKey*",
              "kms:ReEncrypt"
          ],
          "Resource": "*",
          "Condition": {
              "StringEquals": {
                  "kms:EncryptionContextKeys": [
                    "Name",
                    "Application"
                  ]
              }
          }
      }
```

Pour les paramètres d'exécution permettant de créer cette politique avec la clé KMS Create change type, voir [Créer une clé KMS](#ex-kms-key-create-col)

##### Autoriser les services AWS à accéder à la clé CMK créée
<a name="kms-key-allow-services"></a>

Exemple de politique qui en résulte :

```
{
    "Effect": "Allow",
    "Principal": {
        "AWS": "*"
    },
    "Action": [
        "kms:ListGrants",
        "kms:CreateGrant",
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "kms:ViaService":  [
              "ec2.us-west-2.amazonaws.com",
              "ecr.us-east-1.amazonaws.com"
            ],
            "kms:CallerAccount": "111122223333"
        }
    }
}
```

Pour les paramètres d'exécution permettant de créer cette politique avec la clé KMS Create change type, voir [Créer une clé KMS](#ex-kms-key-create-col)

## Paramètres d'entrée d'exécution
<a name="deployment-advanced-kms-key-create-input"></a>

Pour des informations détaillées sur les paramètres d'entrée d'exécution, consultez[Schéma pour le type de modification ct-1d84keiri1jhg](schemas.md#ct-1d84keiri1jhg-schema-section).

## Exemple : paramètres obligatoires
<a name="deployment-advanced-kms-key-create-ex-min"></a>

```
{
  "DocumentName": "AWSManagedServices-CreateKMSKey",
  "Region": "us-east-1",
  "Parameters": {
    "Description": "Test key"
  }
}
```

## Exemple : tous les paramètres
<a name="deployment-advanced-kms-key-create-ex-max"></a>

```
{
  "DocumentName": "AWSManagedServices-CreateKMSKey",
  "Region": "us-west-2",
  "Parameters": {
    "Alias": "testkey",
    "EnableKeyRotation": true,
    "Description": "Test key for validation",
    "PendingWindow": 30,
    "IAMPrincipalsRequiringDecryptPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole"
    ],
    "IAMPrincipalsRequiringEncryptPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole"
    ],
    "IAMPrincipalsRequiringGrantsPermissions": [
      "arn:aws:iam::123456789012:user/myuser",
      "arn:aws:iam::123456789012:role/myrole",
      "987654321098"
    ],
    "LimitGrantsToAWSResources": true,
    "EnforceEncryptionContextKeys": true,
    "AllowedEncryptionContextKeys": [
      "App",
      "Environment"
    ],
    "AllowServiceRolesAccessKMSKeys": [
      "ec2.us-west-2.amazonaws.com",
      "s3.us-west-2.amazonaws.com"
    ],
    "Tags": [
      {
        "Key": "foo",
        "Value": "bar"
      }
    ]
  }
}
```