Création du contenu du document SSM - AWS Systems Manager

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.

Création du contenu du document SSM

Si les documents AWS Systems Manager publics n'exécutent pas toutes les actions que vous souhaitez effectuer sur vos AWS ressources, vous pouvez créer vos propres documents SSM. Vous pouvez également cloner des documents SSM en utilisant la console. Le clonage de documents copie le contenu d'un document existant vers un nouveau document que vous pouvez modifier. Lors de la création ou du clonage d'un document, le contenu du document ne doit pas dépasser 64 Ko. Ce quota inclut également le contenu spécifié pour les paramètres d'entrée lors de l'exécution. Lorsque vous créez un nouveau Command ou document Policy, nous vous recommandons d'utiliser la version 2.2 ou ultérieure du schéma afin de tirer parti des fonctionnalités les plus récentes, telles que la mise à jour de documents, le contrôle de version automatique, le séquençage, etc.

Rédaction du contenu du document SSM

Pour créer votre propre contenu de document SSM, il est important de comprendre les différents schémas, fonctionnalités, plugins et syntaxe disponibles pour les documents SSM. Nous vous recommandons de vous familiariser avec les ressources suivantes.

AWS les documents SSM prédéfinis peuvent effectuer certaines des actions dont vous avez besoin. Vous pouvez appeler ces documents en utilisant les plugins aws:runDocument, aws:runCommand ou aws:executeAutomation dans votre document personnalisé SSM, selon le type de document. Vous pouvez également copier des parties de ces documents dans un document personnalisé SSM et modifier le contenu pour répondre à vos besoins.

Astuce

Lors de la création du contenu du document SSM, vous pouvez modifier le contenu et mettre à jour le document SSM plusieurs fois pendant le test. Les commandes suivantes mettent à jour le document SSM avec votre dernier contenu et mettent à jour la version par défaut du document vers la dernière version du document.

Note

Les commandes Linux et Windows utilisent l'outil de ligne de commande jq pour filtrer les données de réponse JSON.

Linux & macOS
latestDocVersion=$(aws ssm update-document \ --content file://path/to/file/documentContent.json \ --name "ExampleDocument" \ --document-format JSON \ --document-version '$LATEST' \ | jq -r '.DocumentDescription.LatestVersion') aws ssm update-document-default-version \ --name "ExampleDocument" \ --document-version $latestDocVersion
Windows
latestDocVersion=$(aws ssm update-document ^ --content file://C:\path\to\file\documentContent.json ^ --name "ExampleDocument" ^ --document-format JSON ^ --document-version "$LATEST" ^ | jq -r '.DocumentDescription.LatestVersion') aws ssm update-document-default-version ^ --name "ExampleDocument" ^ --document-version $latestDocVersion
PowerShell
$content = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String $latestDocVersion = Update-SSMDocument ` -Content $content ` -Name "ExampleDocument" ` -DocumentFormat "JSON" ` -DocumentVersion '$LATEST' ` | Select-Object -ExpandProperty LatestVersion Update-SSMDocumentDefaultVersion ` -Name "ExampleDocument" ` -DocumentVersion $latestDocVersion

Bonnes pratiques pour les documents SSM

Lorsque vous créez des documents SSM, appliquez les bonnes pratiques de sécurité suivantes pour empêcher l’injection de commandes et garantir une gestion sécurisée des paramètres :

  • Utilisez l’interpolation des variables d’environnement pour les paramètres de chaîne qui seront utilisés dans les commandes ou les scripts. Ajoutez la propriété interpolationType avec la valeur ENV_VAR aux paramètres de votre chaîne :

    { "command": { "type": "String", "description": "Command to execute", "interpolationType": "ENV_VAR" } }

    Vous pouvez encore améliorer la sécurité de vos documents SSM en spécifiant que les guillemets ne sont pas acceptés dans les valeurs fournies par interpolation :

    { "command": { "type": "String", "description": "Command to execute", "interpolationType": "ENV_VAR", "allowedPattern": "^[^"]*$" } }
  • Lorsque vous utilisez des langages interprétés, comme Python, Ruby ou Node.js, référencez les paramètres à l’aide de la syntaxe de variable d’environnement appropriée :

    # Python example import os command = os.environ['SSM_Message']
  • Pour une compatibilité descendante avec les anciennes versions de SSM Agent (antérieures à la version 3.3.2746.0), incluez une logique de secours pour les variables d’environnement :

    if [ -z "${SSM_command+x}" ]; then export SSM_command="{{command}}" fi
  • Combinez l’interpolation des variables d’environnement avec allowedPattern pour une validation supplémentaire des entrées. Dans l’exemple suivant, la valeur allowedPattern ^[^"]*$ empêche spécifiquement les guillemets doubles dans la valeur de chaîne :

    { "command": { "type": "String", "interpolationType": "ENV_VAR", "allowedPattern": "^[a-zA-Z0-9_-]+$" } }
  • Avant d’implémenter votre document SSM, vérifiez les considérations de sécurité suivantes :

    • Tous les paramètres de chaîne qui acceptent les entrées utilisateur utilisent l’interpolation des variables d’environnement le cas échéant.

    • La validation des entrées est mise en œuvre en utilisant allowedPattern quand cela est possible.

    • Le document inclut la gestion des erreurs appropriée pour le traitement des paramètres.

    • La rétrocompatibilité est maintenue pour les environnements utilisant des versions plus anciennes de SSM Agent.

Pour plus d'informations sur les ressources AWS appartenant aux services auxquelles Systems Manager accède et sur la manière de configurer les politiques de périmètre des données, consultez. Périmètres de données en AWS Systems Manager

Clonage d'un document SSM

Vous pouvez cloner AWS Systems Manager des documents à l'aide de la console Systems Manager Documents pour créer des documents SSM. Le clonage de documents SSM copie le contenu d'un document existant vers un nouveau document que vous pouvez modifier. Vous ne pouvez pas cloner un document dont la taille est supérieure à 64 Ko.

Pour cloner un document SSM
  1. Ouvrez la AWS Systems Manager console à l'adresse https://console.aws.amazon.com/systems-manager/.

  2. Dans le panneau de navigation, cliquez sur Documents.

  3. Dans la zone de recherche, saisissez le nom du document que vous voulez cloner.

  4. Sélectionnez le nom du document à cloner, puis sélectionnez Clone document (Cloner un document) dans le menu déroulant Actions.

  5. Modifiez le document selon vos préférences, puis sélectionnez Create document (Créer un document) pour enregistrer le document.

Après avoir écrit le contenu du document SSM, vous pouvez utiliser votre contenu pour créer un document SSM à l'aide de l'une des méthodes suivantes.

Créer des documents SSM

Création de documents composites

Un document composite AWS Systems Manager (SSM) est un document personnalisé qui exécute une série d'actions en exécutant un ou plusieurs documents SSM secondaires. Les documents composites favorisent l'infrastructure en tant que code en vous permettant de créer un jeu standard de documents SSM pour des tâches courantes telles que l'amorçage de logiciel ou la jonction d'instances à un domaine. Vous pouvez ensuite partager ces documents Comptes AWS dans un même document Région AWS afin de réduire la maintenance des documents SSM et de garantir la cohérence.

Par exemple, vous pouvez créer un document composite qui effectue les actions suivantes :

  1. Installe tous les correctifs de la liste autorisée.

  2. Installer un logiciel antivirus.

  3. Télécharger des scripts à partir de GitHub et les exécuter.

Dans cet exemple, votre document SSM personnalisé inclut les plugins suivants pour effectuer ces actions :

  1. Le plugin aws:runDocument pour exécuter le document AWS-RunPatchBaseline, qui installe tous les correctifs autorisés répertoriés.

  2. Le plugin aws:runDocument pour exécuter le document AWS-InstallApplication, qui installe le logiciel antivirus.

  3. Le plugin aws:downloadContent pour télécharger des scripts à partir de GitHub et les exécuter.

Les documents composites et secondaires peuvent être stockés dans Systems Manager, GitHub (référentiels publics et privés) ou dans Amazon S3. Les documents composites et secondaires peuvent être créés au format JSON ou YAML.

Note

Les documents composites peuvent exécuter une profondeur maximale de trois documents. Cela signifie qu'un document composite peut appeler un document enfant, et que celui-ci peut appeler un dernier document.

Pour créer un document composite, ajoutez le plugin aws:runDocument dans un document SSM personnalisé et spécifiez les entrées obligatoires. L'exemple suivant présente un document composite qui effectue les actions suivantes :

  1. Exécute le plugin aws:downloadContent pour télécharger un document SSM à partir d’un référentiel public GitHub vers un répertoire local appelé bootstrap. Le document SSM s'appelle StateManagerBootstrap .yml (un document YAML).

  2. Exécute le aws:runDocument plugin pour exécuter le document StateManagerBootstrap .yml. Aucun paramètre n'est spécifié.

  3. Exécute le plugin aws:runDocument pour exécuter le document SSM AWS-ConfigureDocker pre-defined. Les paramètres spécifiés installent Docker sur l'instance.

{ "schemaVersion": "2.2", "description": "My composite document for bootstrapping software and installing Docker.", "parameters": { }, "mainSteps": [ { "action": "aws:downloadContent", "name": "downloadContent", "inputs": { "sourceType": "GitHub", "sourceInfo": "{\"owner\":\"TestUser1\",\"repository\":\"TestPublic\", \"path\":\"documents/bootstrap/StateManagerBootstrap.yml\"}", "destinationPath": "bootstrap" } }, { "action": "aws:runDocument", "name": "runDocument", "inputs": { "documentType": "LocalPath", "documentPath": "bootstrap", "documentParameters": "{}" } }, { "action": "aws:runDocument", "name": "configureDocker", "inputs": { "documentType": "SSMDocument", "documentPath": "AWS-ConfigureDocker", "documentParameters": "{\"action\":\"Install\"}" } } ] }
Plus d'informations