AWS Systems ManagerChange Managern'est plus ouvert aux nouveaux clients. Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez AWS Systems ManagerChange Managerla section Modification de la disponibilité.
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
Avec AWS Systems Manager Parameter Store, vous pouvez créer des SecureString paramètres, 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 créée par Parameter Store pour votre compte ou spécifier votre propre clé gérée par le client.
Important
Parameter Store ne prend en charge que les clés KMS symétriques. Vous ne pouvez pas utiliser une clé KMS asymétrique pour chiffrer vos paramètres. Pour savoir si une clé KMS est asymétrique, consultez Identifier differents types de clés 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. 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.
Rubriques
Protection des SecureString paramètres standard
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. 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.
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'DescribeKeyopé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/ssmalias.
aws kms describe-key \ --key-id alias/aws/ssm
Pour créer un SecureString paramètre standard, utilisez l'PutParameteropé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 Encryptopé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 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. 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 opération dans l'API Systems Manager.
L'exemple suivant utilise la commande get-parameter 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 utilisezWithDecryption, Parameter Store appelle l'opération AWS KMS Decrypt 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
-
Lorsque vous utilisez
PutParameterpour créer un paramètreSecureString, Parameter Store envoie une demandeEncryptà 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. Lors de la transmission vers AWS KMS, la valeur en texte brut duSecureStringparamètre est protégée par le protocole TLS (Transport Layer Security). -
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.
Déchiffrer un paramètre standard
-
Lorsque vous incluez le
WithDecryptionparamètre dans uneGetParameterdemande, Parameter Store envoie uneDecryptdemande à AWS KMS avec la valeur duSecureStringparamètre chiffré et le contexte de Parameter Store chiffrement. -
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.
-
Parameter Store vous renvoie la valeur du paramètre en texte brut dans la réponse
GetParameter.
Protection des SecureString paramètres avancés
Lorsque vous créez un SecureString paramètre avancé, il Parameter Store utilise le chiffrement d'enveloppe 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 pour le compte (aws/ssm) ou n'importe quelle clé gérée par le client.
La bibliothèque AWS Encryption SDK 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). Il AWS Encryption SDK renvoie à Parameter Store un message chiffré 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'PutParameteropé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. 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'GetParameteropé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 utilisezWithDecryption, Parameter Store appelle l'opération AWS KMS Decrypt 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é
-
Lorsque vous créez un
SecureStringparamètre avancé, Parameter Store utilise le AWS Encryption SDK et AWS KMS pour chiffrer la valeur du paramètre.PutParameterParameter 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. -
AWS Encryption SDK Envoie une GenerateDataKeydemande 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 : l'une en texte brut et l'autre cryptée sous la clé KMS. (Le contexte de chiffrement est utilisé lors du chiffrement de la clé de données.)
-
AWS Encryption SDK Utilise la clé de données en texte brut pour chiffrer la valeur du paramètre. Elle renvoie un message chiffré 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.
-
Parameter Store stocke le message chiffré en tant que valeur de paramètre.
Déchiffrer un paramètre avancé
-
Vous pouvez inclure le paramètre
WithDecryptiondans une demandeGetParameterpour obtenir un paramètreSecureStringavancé. Lorsque vous le faites, Parameter Store transmet le message chiffré de la valeur de paramètre à une méthode de déchiffrement du kit AWS Encryption SDK. -
Il AWS Encryption SDK appelle l'opération de AWS KMS déchiffrement. Il transmet la clé de données chiffrée et le contexte de chiffrement Parameter Store au message chiffré.
-
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.
-
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.
-
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
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 AWS Identity and Access Management (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 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 Encryptopération sur un exemple de clé gérée par le client.
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 GenerateDataKeyopération sur un exemple de clé gérée par le client.
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 Decryptopération sur un exemple de clé gérée par le client.
Contexte de chiffrement Parameter Store
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.
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 Decryptopération avec le contexte de chiffrement correct et la valeur de paramètre chiffrée renvoyée par l'GetParameteropé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.
Résolution des problèmes dans Parameter Store
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 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 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'étatDisabled, activez-la. Si l'état estPending Import, suivez la procédure d'importation. Si la clé est à l'étatPending Deletion, annulez la suppression de la clé ou utilisez une autre clé KMS.Pour trouver l'état d'une clé KMS, utilisez l'DescribeKeyopération.