Utiliser des hiérarchies de paramètres - AWS Systems Manager

Utiliser des hiérarchies de paramètres

La gestion de douzaines ou de centaines de paramètres comme une liste simple est chronophage et propice aux erreurs. Il peut également être difficile d'identifier le bon paramètre pour une tâche. Cela signifie que vous utilisez peut-être par erreur le mauvais paramètre ou que vous créez peut-être plusieurs paramètres qui utilisent les mêmes données de configuration.

Vous pouvez utiliser les hiérarchies des paramètres pour vous aider à organiser et à gérer des paramètres . Une hiérarchie est un nom de paramètre qui comporte un chemin que vous définissez en utilisant des barres obliques (/).

Exemples de hiérarchie de paramètres

L'exemple suivant utilise trois niveaux de hiérarchie dans le nom pour identifier ce qui suit :

/Environment/Type of computer/Application/Data

/Dev/DBServer/MySQL/db-string13

Vous pouvez créer une hiérarchie avec un maximum de 15 niveaux. Nous vous suggérons de créer des hiérarchies qui reflètent une structure hiérarchique existante dans votre environnement, comme indiqué dans les exemples suivants :

  • Votre environnement d'intégration continue et de livraison continue (flux de travail IC/LC)

    /Dev/DBServer/MySQL/db-string

    /Staging/DBServer/MySQL/db-string

    /Prod/DBServer/MySQL/db-string

  • Vos applications qui utilisent des conteneurs

    /MyApp/.NET/Libraries/my-password
  • L'organisation de votre entreprise

    /Finance/Accountants/UserList

    /Finance/Analysts/UserList

    /HR/Employees/EU/UserList

Les hiérarchies des paramètres standardisent la façon dont vous créez les paramètres et facilitent la gestion des paramètres dans le temps. Une hiérarchie de paramètres peut aussi vous aider à identifier le bon paramètre pour une tâche de configuration. Cela vous évite de créer plusieurs paramètres avec les mêmes données de configuration.

Vous pouvez créer une hiérarchie qui vous permet de partager des paramètres entre différents environnements, comme illustré dans les exemples suivants qui utilisent des mots de passe dans l'environnement de développement et de transit.

/DevTest/MyApp/database/my-password

Vous pouvez ensuite créer un mot de passe unique pour votre environnement de production, comme illustré dans l'exemple suivant :

/prod/MyApp/database/my-password

Vous n'avez pas besoin de spécifier une hiérarchie de paramètres. Vous pouvez créer des paramètres au niveau un. Ils sont appelés paramètres racine. Pour assurer la compatibilité descendante, tous les paramètres créés dans Parameter Store avant la mise à disposition des hiérarchies sont des paramètres racine. Le système traite les deux paramètres suivants comme des paramètres racines.

/parameter-name

parameter-name

Interrogation de paramètres dans une hiérarchie

Un autre avantage de l'utilisation des hiérarchies est la capacité de demander tous les paramètres dans une hiérarchie en utilisant l'opération d'API GetParametersByPath. Pour exemple, si vous exécutez la commande suivante à partir de l'AWS Command Line Interface (AWS CLI), le système renvoie tous les paramètres au niveau IIS.

aws ssm get-parameters-by-path --path /Dev/Web/IIS

Pour afficher les paramètres SecureString déchiffrés dans une hiérarchie, vous spécifiez le chemin et le paramètre --with-decryption, comme illustré dans l'exemple suivant.

aws ssm get-parameters-by-path --path /Prod/ERP/SAP --with-decryption

Restriction de l'accès aux opérations de l'API Parameter Store

À l'aide des politiques AWS Identity and Access Management (IAM), vous pouvez autoriser ou restreindre l'accès des utilisateurs aux opérations et au contenu de l'API Parameter Store.

Dans l'exemple de politique suivant, les utilisateurs sont d'abord autorisés à accéder pour exécuter l'opération d'API PutParameter sur tous les paramètres du Compte AWS 123456789012 dans la région USA Est (Ohio) (us-east-2). Mais les utilisateurs n'ont ensuite pas le droit de modifier les valeurs des paramètres existants, car l'option Overwrite est explicitement refusée pour l'opération PutParameter. En d'autres termes, les utilisateurs auxquels cette politique est affectée peuvent créer des paramètres, mais ne peuvent pas modifier les paramètres existants.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:PutParameter" ], "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" }, { "Effect": "Deny", "Action": [ "ssm:PutParameter" ], "Condition": { "StringEquals": { "ssm:Overwrite": [ "true" ] } }, "Resource": "arn:aws:ssm:us-east-2:123456789012:parameter/*" } ] }

Gérer les paramètres en utilisant les hiérarchies (AWS CLI)

Cette procédure vous montre comment utiliser les paramètres et les hiérarchies de paramètres à l'aide de l'AWS CLI.

Pour gérer les paramètres en utilisant les hiérarchies

  1. Si vous ne l'avez pas déjà fait, installez et configurez l'AWS Command Line Interface (AWS CLI).

    Pour obtenir des informations, veuillez consulter Installer ou mettre à niveau les outils de ligne de commande AWS.

  2. Exécutez la commande suivante pour créer un paramètre utilisant le paramètre allowedPattern et le type de paramètre String. Le modèle autorisé dans cet exemple indique que la valeur du paramètre doit comporter entre 1 et 4 chiffres.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/MaxConnections" \ --value 100 --allowed-pattern "\d{1,4}" \ --type String
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/MaxConnections" ^ --value 100 --allowed-pattern "\d{1,4}" ^ --type String

    La commande renvoie le numéro de version du paramètre.

  3. Exécutez la commande suivante pour essayer de remplacer la paramètre que vous venez de créer avec une nouvelle valeur.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/MaxConnections" \ --value 10,000 \ --type String \ --overwrite
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/MaxConnections" ^ --value 10,000 ^ --type String ^ --overwrite

    Le système renvoie l'erreur suivante, car la nouvelle valeur ne répond pas aux exigences du modèle autorisé que vous avez spécifié à l'étape précédente.

    An error occurred (ParameterPatternMismatchException) when calling the PutParameter operation: Parameter value, cannot be validated against allowedPattern: \d{1,4}
  4. Exécutez la commande suivante pour créer un paramètre SecureString utilisant une Clé gérée par AWS. Le modèle autorisé dans cet exemple indique que l'utilisateur peut spécifique n'importe quel caractère, et la valeur doit comporter entre 8 et 20 caractères.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/my-password" \ --value "p#sW*rd33" \ --allowed-pattern ".{8,20}" \ --type SecureString
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/my-password" ^ --value "p#sW*rd33" ^ --allowed-pattern ".{8,20}" ^ --type SecureString
  5. Exécutez les commandes suivantes pour créer plus de paramètres qui utilisent la structure de hiérarchie à partir de l'étape précédente.

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/DBname" \ --value "SQLDevDb" \ --type String
    aws ssm put-parameter \ --name "/MyService/Test/user" \ --value "SA" \ --type String
    aws ssm put-parameter \ --name "/MyService/Test/userType" \ --value "SQLuser" \ --type String
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/DBname" ^ --value "SQLDevDb" ^ --type String
    aws ssm put-parameter ^ --name "/MyService/Test/user" ^ --value "SA" ^ --type String
    aws ssm put-parameter ^ --name "/MyService/Test/userType" ^ --value "SQLuser" ^ --type String
  6. Exécutez la commande suivante pour obtenir la valeur de deux paramètres.

    Linux & macOS
    aws ssm get-parameters \ --names "/MyService/Test/user" "/MyService/Test/userType"
    Windows
    aws ssm get-parameters ^ --names "/MyService/Test/user" "/MyService/Test/userType"
  7. Exécutez la commande suivante pour interroger tous les paramètres à un seul niveau.

    Linux & macOS
    aws ssm get-parameters-by-path \ --path "/MyService/Test"
    Windows
    aws ssm get-parameters-by-path ^ --path "/MyService/Test"
  8. Exécutez la commande suivante pour supprimer deux paramètres.

    Linux & macOS
    aws ssm delete-parameters \ --names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"
    Windows
    aws ssm delete-parameters ^ --names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"