

• Le AWS Systems Manager CloudWatch tableau de bord ne sera plus disponible après le 30 avril 2026. Les clients peuvent continuer à utiliser CloudWatch la console Amazon pour consulter, créer et gérer leurs CloudWatch tableaux de bord Amazon, comme ils le font aujourd'hui. Pour plus d'informations, consultez la [documentation Amazon CloudWatch Dashboard](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

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.

# AWS KMS chiffrement des AWS Systems ManagerParameter Store SecureString paramètres
<a name="secure-string-parameter-kms-encryption"></a>

Avec AWS Systems Manager Parameter Store, vous pouvez créer des [SecureString paramètres](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html#what-is-a-parameter), qui sont des paramètres dotés d'un nom de paramètre en texte clair et d'une valeur de paramètre cryptée. Parameter Storeutilise AWS KMS pour chiffrer et déchiffrer les valeurs des `SecureString` paramètres.

Avec Parameter Store, vous pouvez créer, stocker et gérer des données sous forme de paramètres assortis de valeurs. Vous pouvez créer un paramètre dans Parameter Store et l'utiliser dans plusieurs applications et services soumis aux stratégies et aux autorisations que vous concevez. Lorsque vous avez besoin de modifier une valeur de paramètre, au lieu de gérer une modification sujette à erreurs dans diverses sources, vous modifiez une seule instance. Sachant que Parameter Store peut prendre en charge une structure hiérarchique de noms de paramètres, vous pouvez limiter un paramètre à des utilisations spécifiques. 

Pour gérer les données sensibles, vous pouvez créer des `SecureString` paramètres. Parameter Storeutilise AWS KMS keys pour chiffrer les valeurs des `SecureString` paramètres lorsque vous les créez ou que vous les modifiez. Il utilise également des clés KMS pour déchiffrer les valeurs de paramètres au moment où vous y accédez. Vous pouvez utiliser la [Clé gérée par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) créée par Parameter Store pour votre compte ou spécifier votre propre [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). 

**Important**  
Parameter Store ne prend en charge que les [clés KMS symétriques](https://docs.aws.amazon.com/kms/latest/developerguide/symm-asymm-choose-key-spec.html#symmetric-cmks). Vous ne pouvez pas utiliser une [clé KMS asymétrique](https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html) pour chiffrer vos paramètres. Pour savoir si une clé KMS est asymétrique, consultez [Identifier differents types de clés](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html) dans le *Guide du développeur AWS Key Management Service *.

Parameter Store prend en charge deux niveaux de paramètres `SecureString` : *standard* et *avancés*. Les paramètres standard, qui ne peuvent pas dépasser 4 096 octets, sont chiffrés et déchiffrés directement sous la clé KMS que vous spécifiez. Pour chiffrer et déchiffrer les paramètres avancés `SecureString`, Parameter Store utilise le chiffrement d'enveloppe avec le kit [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/). Vous pouvez convertir un paramètre `SecureString` standard en un paramètre avancé, mais vous ne pouvez pas convertir un paramètre avancé en paramètre standard. Pour plus d’informations sur la différence entre le mode standard et les paramètres avancés `SecureString`, consultez [Gestion des niveaux de paramètres](parameter-store-advanced-parameters.md).

**Topics**
+ [Protection des SecureString paramètres standard](#kms-encryption-securestring-standard)
+ [Protection des SecureString paramètres avancés](#kms-encryption-securestring-advanced)
+ [Définition d'autorisations de chiffrement et de déchiffrement des valeurs de paramètres](#parameter-policy-kms-encryption)
+ [Contexte de chiffrement Parameter Store](#parameter-store-kms-encryption-context)
+ [Résolution des problèmes dans Parameter Store](#parameter-store-kms-cmk-troubleshooting)

## Protection des SecureString paramètres standard
<a name="kms-encryption-securestring-standard"></a>

Parameter Store n'assure aucune opération de chiffrement. Au lieu de cela, il s'appuie sur AWS KMS pour chiffrer et déchiffrer les valeurs des paramètres `SecureString`. Lorsque vous créez ou modifiez une valeur de `SecureString` paramètre standard, Parameter Store appelle l'opération AWS KMS [Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html). Cette opération utilise directement une clé KMS de chiffrement symétrique pour chiffrer la valeur de paramètre au lieu d'utiliser la clé KMS pour générer une [clé de données](https://docs.aws.amazon.com/kms/latest/developerguide/data-keys.html). 

Vous pouvez sélectionner la clé CMK utilisée par Parameter Store pour chiffrer la valeur de paramètre. Si vous ne spécifiez pas de clé KMS, Parameter Store utilise la Clé gérée par AWS que Systems Manager a créée automatiquement dans votre compte. Cette clé KMS possède l'alias `aws/ssm`.

Pour afficher la clé `aws/ssm` KMS par défaut de votre compte, utilisez l'[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)opération dans l' AWS KMS API. L'exemple suivant utilise la `describe-key` commande contenue dans le AWS Command Line Interface (AWS CLI) avec le nom d'`aws/ssm`alias.

```
aws kms describe-key \
    --key-id alias/aws/ssm
```

Pour créer un `SecureString` paramètre standard, utilisez l'[PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html)opération de l'API Systems Manager. Omettez le paramètre `Tier` ou spécifiez une valeur `Standard`, qui est la valeur par défaut. Incluez un paramètre `Type` avec la valeur `SecureString`. Pour spécifier une clé KMS, utilisez le paramètre `KeyId`. La valeur par défaut est Clé gérée par AWS celle de votre compte,`aws/ssm`. 

Parameter Storeappelle ensuite l' AWS KMS `Encrypt`opération avec la clé KMS et la valeur du paramètre en texte brut. AWS KMS renvoie la valeur du paramètre chiffré, qui est Parameter Store stockée avec le nom du paramètre.

L'exemple suivant utilise la commande [put-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/put-parameter.html) de Systems Manager et son `--type` paramètre dans le AWS CLI pour créer un `SecureString` paramètre. Comme la commande omet les paramètres facultatifs `--tier` et `--key-id`, Parameter Store crée un paramètre standard `SecureString` et le chiffre conformément à Clé gérée par AWS.

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString
```

Dans l'exemple similaire suivant, le paramètre `--key-id` est utilisé pour spécifier une [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). Cet exemple utilise un ID de clé KMS pour identifier la clé KMS, mais vous pouvez utiliser n'importe quel identifiant de clé KMS valide. Comme la commande omet le paramètre `Tier` (`--tier`), Parameter Store crée un paramètre standard `SecureString`, et non un paramètre avancé.

```
aws ssm put-parameter \
    --name param1 \
    --value "secret" \
    --type SecureString \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
```

Lorsque vous obtenez un paramètre `SecureString` à partir de Parameter Store, sa valeur est chiffrée. Pour obtenir un paramètre, utilisez l'[GetParameter ](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)opération dans l'API Systems Manager.

L'exemple suivant utilise la commande [get-parameter](https://docs.aws.amazon.com/cli/latest/reference/ssm/get-parameter.html) de Systems Manager dans le AWS CLI pour obtenir le `MyParameter` paramètre Parameter Store sans déchiffrer sa valeur.

```
aws ssm get-parameter --name MyParameter
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}
```

Pour déchiffrer la valeur du paramètre avant de la renvoyer, définissez le paramètre `WithDecryption` de `GetParameter` sur `true`. Lorsque vous utilisez`WithDecryption`, Parameter Store appelle l'opération AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) en votre nom pour déchiffrer la valeur du paramètre. En conséquence, la demande `GetParameter` renvoie le paramètre avec une valeur de paramètre en texte brut, comme le montre l'exemple suivant.

```
aws ssm get-parameter \
    --name MyParameter \
    --with-decryption
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}
```

La procédure suivante montre comment Parameter Store utilise une clé CMK pour chiffrer et déchiffrer un paramètre `SecureString` standard.

### Chiffrer un paramètre standard
<a name="kms-encryption-securestring-standard-encrypt"></a>

1. Lorsque vous utilisez `PutParameter` pour créer un paramètre `SecureString`, Parameter Store envoie une demande `Encrypt` à AWS KMS. Cette demande inclut la valeur du paramètre en texte brut, la clé KMS que vous avez choisie, et le [contexte de chiffrement Parameter Store](#parameter-store-kms-encryption-context). Lors de la transmission vers AWS KMS, la valeur en texte brut du `SecureString` paramètre est protégée par le protocole TLS (Transport Layer Security).

1. AWS KMS chiffre la valeur du paramètre avec la clé KMS et le contexte de chiffrement spécifiés. Elle renvoie le texte chiffré à Parameter Store, qui stocke le nom du paramètre et sa valeur chiffrée.  
![\[Chiffrement d'une valeur de SecureString paramètre standard\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/service-pstore-standard.png)

### Déchiffrer un paramètre standard
<a name="kms-encryption-securestring-standard-decrypt"></a>

1. Lorsque vous incluez le `WithDecryption` paramètre dans une `GetParameter` demande, Parameter Store envoie une `Decrypt` demande à AWS KMS avec la valeur du `SecureString` paramètre chiffré et le [contexte de Parameter Store chiffrement](#parameter-store-kms-encryption-context).

1. AWS KMS utilise la même clé KMS et le contexte de chiffrement fourni pour déchiffrer la valeur chiffrée. Il renvoie la valeur du paramètre (déchiffrée) en texte brut à Parameter Store. Pendant la transmission, les données en texte brut sont protégées par TLS.

1. Parameter Store vous renvoie la valeur du paramètre en texte brut dans la réponse `GetParameter`.

## Protection des SecureString paramètres avancés
<a name="kms-encryption-securestring-advanced"></a>

Lorsque vous créez un `SecureString` paramètre avancé, il Parameter Store utilise le [chiffrement d'enveloppe](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/how-it-works.html#envelope-encryption) avec le chiffrement symétrique AWS Encryption SDK et AWS KMS key pour protéger la valeur du paramètre. `PutParameter` Chaque valeur de paramètre avancé est chiffrée sous une clé de données unique, et la clé de données est chiffrée sous une clé KMS. Vous pouvez utiliser la [Clé gérée par AWS](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) pour le compte (`aws/ssm`) ou n'importe quelle clé gérée par le client.

La bibliothèque [AWS Encryption SDK](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/) est une bibliothèque côté client et open source qui vous permet de chiffrer et de déchiffrer les données à l'aide des normes et des bonnes pratiques. Elle est prise en charge sur plusieurs plateformes et dans plusieurs langages de programmation, y compris une interface de ligne de commande. Vous pouvez consulter le code source et contribuer à son développement dans GitHub. 

Pour chaque valeur de `SecureString` paramètre, Parameter Store appelle le AWS Encryption SDK pour chiffrer la valeur du paramètre à l'aide d'une clé de données unique qui AWS KMS génère ([GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)). Il AWS Encryption SDK renvoie à Parameter Store un [message chiffré](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) qui inclut la valeur du paramètre chiffré et une copie cryptée de la clé de données unique. Parameter Storestocke l'intégralité du message crypté dans la valeur du `SecureString` paramètre. Ensuite, lorsque vous obtenez une valeur de `SecureString` paramètre avancée, Parameter Store utilise le AWS Encryption SDK pour déchiffrer la valeur du paramètre. Cela nécessite un appel AWS KMS pour déchiffrer la clé de données cryptée.

Pour créer un `SecureString` paramètre avancé, utilisez l'[PutParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_PutParameter.html)opération de l'API Systems Manager. Définissez la valeur du paramètre `Tier` sur `Advanced`. Incluez un paramètre `Type` avec la valeur `SecureString`. Pour spécifier une clé KMS, utilisez le paramètre `KeyId`. La valeur par défaut est Clé gérée par AWS celle de votre compte,`aws/ssm`. 

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced
```

Dans l'exemple similaire suivant, le paramètre `--key-id` est utilisé pour spécifier une [clé gérée par le client](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk). Cet exemple utilise l'Amazon Resource Name (ARN) de la clé KMS, mais vous pouvez utiliser tout identifiant de clé KMS valide. 

```
aws ssm put-parameter \
    --name MyParameter \
    --value "secret_value" \
    --type SecureString \
    --tier Advanced \
    --key-id arn:aws:kms:us-east-2:987654321098:key/1234abcd-12ab-34cd-56ef-1234567890ab
```

Lorsque vous obtenez un `SecureString` paramètreParameter Store, sa valeur est le message crypté AWS Encryption SDK renvoyé. Pour obtenir un paramètre, utilisez l'[GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)opération dans l'API Systems Manager.

L’exemple suivant utilise l’opération `GetParameter` de Systems Manager pour obtenir le paramètre `MyParameter` à partir de Parameter Store sans déchiffrer de sa valeur.

```
aws ssm get-parameter --name MyParameter
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "AQECAHgnOkMROh5LaLXkA4j0+vYi6tmM17Lg"
    }
}
```

Pour déchiffrer la valeur du paramètre avant de la renvoyer, définissez le paramètre `WithDecryption` de `GetParameter` sur `true`. Lorsque vous utilisez`WithDecryption`, Parameter Store appelle l'opération AWS KMS [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) en votre nom pour déchiffrer la valeur du paramètre. En conséquence, la demande `GetParameter` renvoie le paramètre avec une valeur de paramètre en texte brut, comme le montre l'exemple suivant.

```
aws ssm get-parameter \
    --name MyParameter \
    --with-decryption
```

```
{
    "Parameter": {
        "Type": "SecureString", 
        "Name": "MyParameter", 
        "Value": "secret_value"
    }
}
```

Vous ne pouvez pas convertir un paramètre `SecureString` en un paramètre standard, mais vous pouvez convertir uun paramètre standard `SecureString` en un paramètre avancé. Pour convertir un paramètre `SecureString` standard en un paramètre `SecureString` avancé, utilisez l'opération `PutParameter` avec le paramètre `Overwrite`. Le `Type` doit être `SecureString` et la valeur `Tier` doit être `Advanced`. Le paramètre `KeyId`, qui identifie une clé gérée par le client, est facultatif. Si vous l'omettez, Parameter Store utilise le Clé gérée par AWS pour le compte. Vous pouvez spécifier n'importe quelle clé KMS que le principal est autorisé à utiliser, même si vous avez utilisé une autre clé KMS pour chiffrer le paramètre standard.

Lorsque vous utilisez le paramètre `Overwrite`, Parameter Store utilise le kit AWS Encryption SDK pour chiffrer la valeur du paramètre. Ensuite, il stocke le nouveau message chiffré dans Parameter Store.

```
aws ssm put-parameter \
    --name myStdParameter \
    --value "secret_value"  \
    --type SecureString \
    --tier Advanced \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --overwrite
```

La procédure suivante montre comment Parameter Store utilise une clé KMS pour chiffrer et déchiffrer un paramètre `SecureString`.

### Chiffrer un paramètre avancé
<a name="kms-encryption-securestring-advanced-encrypt"></a>

1. Lorsque vous créez un `SecureString` paramètre avancé, Parameter Store utilise le AWS Encryption SDK et AWS KMS pour chiffrer la valeur du paramètre. `PutParameter` Parameter Storeappelle le AWS Encryption SDK avec la valeur du paramètre, la clé KMS que vous avez spécifiée et le [contexte de Parameter Store chiffrement](#parameter-store-kms-encryption-context).

1.  AWS Encryption SDK Envoie une [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)demande AWS KMS avec l'identifiant de la clé KMS que vous avez spécifiée et le contexte de Parameter Store chiffrement. AWS KMS renvoie deux copies de la clé de données unique : une en texte clair et une cryptée sous la clé KMS. (Le contexte de chiffrement est utilisé lors du chiffrement de la clé de données.)

1.  AWS Encryption SDK Utilise la clé de données en texte brut pour chiffrer la valeur du paramètre. Elle renvoie un [message chiffré](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) qui inclut la valeur du paramètre chiffré, la clé de données chiffrée, et d'autres données, y compris le contexte de chiffrement Parameter Store.

1. Parameter Store stocke le message chiffré en tant que valeur de paramètre.  
![\[Chiffrement d'une SecureString valeur de paramètre avancée\]](http://docs.aws.amazon.com/fr_fr/systems-manager/latest/userguide/images/service-pstore-advanced.png)

### Déchiffrer un paramètre avancé
<a name="kms-encryption-securestring-advanced-decrypt"></a>

1. Vous pouvez inclure le paramètre `WithDecryption` dans une demande `GetParameter` pour obtenir un paramètre `SecureString` avancé. Lorsque vous le faites, Parameter Store transmet le [message chiffré](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#message) de la valeur de paramètre à une méthode de déchiffrement du kit AWS Encryption SDK.

1. Il AWS Encryption SDK appelle l'opération de AWS KMS [déchiffrement](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). Il transmet la clé de données chiffrée et le contexte de chiffrement Parameter Store au message chiffré.

1. AWS KMS utilise la clé KMS et le contexte de Parameter Store chiffrement pour déchiffrer la clé de données chiffrée. Ensuite, il renvoie la clé de données en texte brut (déchiffrée) au kit AWS Encryption SDK.

1.  AWS Encryption SDK Utilise la clé de données en texte brut pour déchiffrer la valeur du paramètre. Il renvoie la valeur du paramètre en texte brut à Parameter Store. 

1. Parameter Store vérifie le contexte de chiffrement et renvoie la valeur du paramètre en texte brut dans la réponse `GetParameter`.

## Définition d'autorisations de chiffrement et de déchiffrement des valeurs de paramètres
<a name="parameter-policy-kms-encryption"></a>

Pour chiffrer une valeur de paramètre standard `SecureString`, l'utilisateur a besoin `kms:Encrypt` d'une autorisation. Pour chiffrer une valeur de paramètre avancé `SecureString`, l'utilisateur a besoin d’une autorisation `kms:GenerateDataKey`. Pour déchiffrer un type de valeur de paramètre `SecureString`, l'utilisateur a besoin d’une autorisation `kms:Decrypt`. 

Vous pouvez utiliser des politiques Gestion des identités et des accès AWS (IAM) pour autoriser ou refuser à un utilisateur l'autorisation d'appeler le Systems Manager `PutParameter` et les `GetParameter` opérations.

De plus, si vous utilisez les clés gérées par le client pour chiffrer les valeurs de vos paramètres `SecureString`, vous pouvez utiliser des politiques IAM et des politiques de clé pour gérer les autorisations de chiffrement et de déchiffrement. Cependant, vous ne pouvez pas établir de stratégies de contrôle d'accès pour la clé KMS `aws/ssm` par défaut. Pour obtenir des informations détaillées sur le contrôle d’accès aux clés gérées par le client, consultez [Accès aux clés et autorisations](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) dans le *Guide du développeur AWS Key Management Service *.

L’exemple suivant montre une politique IAM conçue pour des paramètres `SecureString` standard. Elle permet à l'utilisateur d'appeler l'opération `PutParameter` Systems Manager sur tous les paramètres du chemin `FinancialParameters`. La politique permet également à l'utilisateur d'appeler l' AWS KMS `Encrypt`opération sur un exemple de clé gérée par le client.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/FinancialParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

L’exemple suivant montre une politique IAM qui est conçue pour des paramètres `SecureString` avancés . Elle permet à l'utilisateur d'appeler l'opération `PutParameter` Systems Manager sur tous les paramètres du chemin `ReservedParameters`. La politique permet également à l'utilisateur d'appeler l' AWS KMS `GenerateDataKey`opération sur un exemple de clé gérée par le client.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:PutParameter"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ReservedParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:GenerateDataKey"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ]
}
```

------

Le dernier exemple montre également une stratégie IAM qui peut être utilisée pour les paramètres `SecureString` avancés ou standard. Elle permet à l'utilisateur d'appeler les opérations `GetParameter` Systems Manager (et les opérations associées) sur tous les paramètres du chemin `ITParameters`. La politique permet également à l'utilisateur d'appeler l' AWS KMS `Decrypt`opération sur un exemple de clé gérée par le client.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/ITParameters/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
    ]
}
```

------

## Contexte de chiffrement Parameter Store
<a name="parameter-store-kms-encryption-context"></a>

Un *contexte de chiffrement* est un ensemble de paires clé-valeur qui contiennent des données non secrètes arbitraires. Lorsque vous incluez un contexte de chiffrement dans une demande de chiffrement de données, lie AWS KMS cryptographiquement le contexte de chiffrement aux données chiffrées. Pour déchiffrer les données, vous devez transmettre le même contexte de chiffrement. 

Vous pouvez également utiliser le contexte de chiffrement pour identifier une opération de chiffrement dans des enregistrements d'audit et des journaux. Le contexte de chiffrement s'affiche en texte brut dans les journaux, tels que les journaux [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html). 

 AWS Encryption SDK Il prend également un contexte de chiffrement, bien qu'il le gère différemment. Parameter Storefournit le contexte de chiffrement à la méthode de chiffrement. Le AWS Encryption SDK chiffrement lie le contexte de chiffrement aux données chiffrées. Il inclut aussi le contexte de chiffrement en texte brut dans l'en-tête du message chiffré qu'il renvoie. Cependant AWS KMS, contrairement aux méthodes de AWS Encryption SDK déchiffrement, elles ne prennent pas de contexte de chiffrement en entrée. Au lieu de cela, lorsqu'il déchiffre des données, il AWS Encryption SDK obtient le contexte de chiffrement à partir du message crypté. Parameter Storevérifie que le contexte de chiffrement inclut la valeur attendue avant de vous renvoyer la valeur du paramètre en texte brut. 

Parameter Store utilise le contexte de chiffrement suivant dans ses opérations de chiffrement :
+ Clé : `PARAMETER_ARN`
+ Valeur : Amazon Resource Name (ARN) du paramètre chiffré. 

Le format du contexte de chiffrement est le suivant :

```
"PARAMETER_ARN":"arn:aws:ssm:region-id:account-id:parameter/parameter-name"
```

Par exemple, Parameter Store inclut ce contexte de chiffrement dans les appels pour chiffrer et déchiffrer le `MyParameter` paramètre dans un exemple Compte AWS et une région.

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/MyParameter"
```

Si le paramètre se trouve dans le chemin hiérarchique de Parameter Store, le chemin et le nom sont inclus dans le contexte de chiffrement. Par exemple, ce contexte de chiffrement est utilisé lors du chiffrement et du déchiffrement du `MyParameter` paramètre dans le `/ReadableParameters` chemin d'un exemple et d'une région. Compte AWS 

```
"PARAMETER_ARN":"arn:aws:ssm:us-east-2:111122223333:parameter/ReadableParameters/MyParameter"
```

Vous pouvez déchiffrer une valeur de `SecureString` paramètre chiffrée en appelant l' AWS KMS `Decrypt`opération avec le contexte de chiffrement correct et la valeur de paramètre chiffrée renvoyée par l'`GetParameter`opération Systems Manager. Cependant, nous vous encourageons à déchiffrer les valeurs de paramètre Parameter Store à l’aide de l’opération `GetParameter` avec le paramètre `WithDecryption`. 

Vous pouvez également inclure le contexte de chiffrement dans une stratégie IAM. Par exemple, vous pouvez autoriser un utilisateur à déchiffrer la valeur d'un seul et même paramètre ou les valeurs d'un ensemble de paramètres.

L'exemple suivant d'instruction de stratégie IAM permet à l'utilisateur d'obtenir la valeur du paramètre `MyParameter` et de déchiffrer sa valeur à l'aide de la clé KMS spécifiée. Toutefois, les autorisations s'appliquent uniquement lorsque le contexte de chiffrement correspond à la chaîne spécifiée. Ces autorisations ne s'appliquent à aucun autre paramètre ou à aucune autre clé KMS, et l'appel de `GetParameter` échoue si le contexte de chiffrement ne correspond pas à la chaîne.

Avant d'utiliser une déclaration de politique comme celle-ci, remplacez-la par *example ARNs* des valeurs valides.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
        },
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt"
            ],
            "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id",
            "Condition": {
                "StringEquals": {
                    "kms:EncryptionContext:PARAMETER_ARN":"arn:aws:ssm:us-east-1:111122223333:parameter/MyParameter"
                }
            }
        }
    ]
}
```

------

## Résolution des problèmes dans Parameter Store
<a name="parameter-store-kms-cmk-troubleshooting"></a>

Pour effectuer une opération sur un `SecureString` paramètre, vous Parameter Store devez être en mesure d'utiliser la clé AWS KMS KMS que vous spécifiez pour l'opération prévue. La plupart des échecs Parameter Store liés aux clés KMS sont imputables aux problèmes suivants :
+ Les informations d'identification utilisées par une application ne disposent pas des autorisations nécessaires pour effectuer l'action spécifiée sur la clé KMS. 

  Pour corriger cette erreur, exécutez l'application avec d'autres informations d'identification ou corrigez la politique IAM ou la politique de clé qui empêche l'opération. Pour obtenir de l'aide AWS KMS concernant l'IAM et les politiques clés, consultez la section [Accès aux clés et autorisations KMS](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html) dans le *Guide du AWS Key Management Service développeur*.
+ La clé KMS est introuvable. 

  Cela se produit généralement lorsque vous utilisez un identificateur incorrect pour la clé KMS. [Procurez-vous les identificateurs corrects](https://docs.aws.amazon.com/kms/latest/developerguide/find-cmk-id-arn.html) pour la clé KMS et tentez à nouveau la commande. 
+ La clé KMS n'est pas activée. Lorsque cela se produit, Parameter Store renvoie une InvalidKeyIdexception avec un message d'erreur détaillé de AWS KMS. Si la clé KMS est à l'état `Disabled`, [activez-la](https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html). Si l'état est `Pending Import`, suivez la [procédure d'importation](https://docs.aws.amazon.com/kms/latest/developerguide/importing-keys.html). Si la clé est à l'état `Pending Deletion`, [annulez la suppression de la clé](https://docs.aws.amazon.com/kms/latest/developerguide/deleting-keys-scheduling-key-deletion.html) ou utilisez une autre clé KMS.

  Pour trouver l'[état](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html) d'une clé KMS, utilisez l'[DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)opération. 