Creazione del contenuto del documento SSM - AWS Systems Manager

Creazione del contenuto del documento SSM

Se i documenti pubblici di AWS Systems Manager non eseguono tutte le operazioni che si desidera eseguire sulle risorse AWS, è possibile creare documenti SSM propri. È inoltre possibile clonare documenti SSM tramite la console. La clonazione di documenti consente di copiare il contenuto da un documento esistente in un nuovo documento che è possibile modificare. Quando si crea o si clona un documento, il contenuto non deve superare i 64 KB. Questa quota include anche il contenuto specificato per i parametri di input in runtime (fase di esecuzione). Quando si crea un nuovo documento Command o Policy, si consiglia di utilizzare lo schema versione 2.2 o successiva in modo da poter sfruttare le funzionalità più recenti, come la modifica dei documenti, il controllo automatico delle versioni, il sequenziamento e altro ancora.

Scrittura del contenuto del documento SSM

Per creare il proprio contenuto del documento SSM, è importante comprendere i diversi schemi, plugin, le diverse funzionalità e la diversa sintassi disponibili per i documenti SSM. Si consiglia di acquisire familiarità con le seguenti risorse.

I documenti SSM predefiniti AWS potrebbero eseguire alcune delle operazioni necessarie. È possibile richiamare questi documenti utilizzando i plugin aws:runDocument, aws:runCommand o aws:executeAutomation all'interno del documento SSM personalizzato, a seconda del tipo di documento. È inoltre possibile copiare parti di tali documenti in un documento SSM personalizzato e modificare il contenuto in base alle proprie esigenze.

Suggerimento

Durante la creazione del contenuto del documento SSM, è possibile modificare il contenuto e aggiornare il documento più volte durante il test. I comandi seguenti aggiornano il documento SSM con il contenuto più recente e aggiornano la versione predefinita del documento alla versione più recente.

Nota

I comandi Linux e Windows utilizzano lo strumento a riga di comando jq per filtrare i dati di risposta 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

Best practice per la sicurezza dei documenti SSM

Durante la creazione di documenti SSM, segui queste best practice per la sicurezza, per evitare l'iniezione di comandi e garantire una gestione sicura dei parametri:

  • Utilizza l'interpolazione delle variabili di ambiente per i parametri di stringa che verranno utilizzati nei comandi o negli script. Aggiungi la proprietà di interpolationType con valore ENV_VAR ai tuoi parametri di stringa:

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

    Puoi migliorare ulteriormente la sicurezza dei tuoi documenti SSM specificando che le virgolette doppie non sono accettate nei valori forniti per interpolazione:

    { "command": { "type": "String", "description": "Command to execute", "interpolationType": "ENV_VAR", "allowedPattern": "^[^"]*$" } }
  • Quando si usano linguaggi interpretati come Python, Ruby o Node.js, fare riferimento ai parametri utilizzando la sintassi della variabile di ambiente appropriata:

    # Python example import os command = os.environ['SSM_Message']
  • Per la compatibilità retroattiva con le versioni SSM Agent precedenti (precedenti alla versione 3.3.2746.0), includi la logica di fallback per le variabili di ambiente:

    if [ -z "${SSM_command+x}" ]; then export SSM_command="{{command}}" fi
  • Combina l'interpolazione delle variabili di ambiente con allowedPattern per una convalida aggiuntiva degli input. Nell'esempio seguente, il valore di allowedPattern ^[^"]*$ impedisce specificamente le virgolette doppie nel valore della stringa:

    { "command": { "type": "String", "interpolationType": "ENV_VAR", "allowedPattern": "^[a-zA-Z0-9_-]+$" } }
  • Prima di implementare il documento SSM, verifica le seguenti considerazioni sulla sicurezza:

    • Tutti i parametri di stringa che accettano l'input dell'utente utilizzano l'interpolazione delle variabili di ambiente, quando appropriato.

    • La convalida dell'input viene implementata utilizzando allowedPattern, ove possibile.

    • Il documento include la gestione appropriata degli errori per l'elaborazione dei parametri.

    • La compatibilità retroattiva viene mantenuta per gli ambienti che utilizzano versioni SSM Agent precedenti.

Per maggiori informazioni sulle risorse di proprietà dei servizi AWS a cui accede Systems Manager e come configurare le policy del perimetro dei dati, consulta Perimetro dei dati in AWS Systems Manager.

Clonazione di un documento SSM

È possibile clonare documenti AWS Systems Manager utilizzando la console Documenti di Systems Manager per creare documenti SSM. La clonazione di documenti SSM consente di copiare il contenuto da un documento esistente in un nuovo documento che è possibile modificare. Non puoi clonare un documento di dimensioni superiori a 64 KB.

Per clonare un documento SSM
  1. Apri la console di AWS Systems Manager all'indirizzo https://console.aws.amazon.com/systems-manager/.

  2. Nel riquadro di navigazione, scegli Documenti.

  3. Nella casella di ricerca, inserire il nome del documento che si desidera clonare.

  4. Scegliere il nome del documento che si desidera clonare, quindi scegliere Clone document (Clona documento) nel menu a tendina Actions (Operazioni).

  5. Modificare il documento come si preferisce, quindi scegliereCreate document (Crea documento) per salvare il documento.

Dopo aver scritto il contenuto del documento SSM, è possibile utilizzarlo per creare un documento SSM tramite uno dei seguenti metodi.

Creazione di documenti compositi

Un documento AWS Systems Manager (SSM) composito è un documento personalizzato per condurre una serie di operazioni eseguendo uno o più documenti SSM secondari. I documenti compositi promuovono l'Infrastructure as Code consentendo di creare un set standard di documenti SSM per attività comuni, come processi di bootstrap di software o l'aggiunta di domini a istanze. È quindi possibile condividere questi documenti su più Account AWS nella stessa Regione AWS per ridurre la manutenzione dei documenti SSM e garantire la coerenza.

Ad esempio, puoi creare un documento composito che esegue le seguenti operazioni:

  1. Installa tutte le patch nell'elenco Consenti.

  2. Installa il software antivirus.

  3. Scarica script da GitHub e li esegue.

In questo esempio, il documento SSM personalizzato include i seguenti plugin per effettuare le operazioni riportate di seguito:

  1. Il plug-in aws:runDocument per eseguire il documento AWS-RunPatchBaseline, che installa tutte le patch consentite elencate.

  2. Il plugin aws:runDocument per eseguire il documento AWS-InstallApplication, che installa il software antivirus.

  3. Il plug-in aws:downloadContent per scaricare script da GitHub ed eseguirli.

I documenti compositi e secondari possono essere archiviati in Systems Manager, GitHub (repository pubblici e privati) o Amazon S3. I documenti compositi e secondari possono essere create in formato JSON o YAML.

Nota

I documenti compositi possono essere eseguiti solo a una profondità massima di tre documenti. Ciò significa che un documento composito può chiamare un documento figlio e che questo documento figlio può chiamare un ultimo documento.

Per creare un documento composito, aggiungere il plug-in aws:runDocument in un documento SSM personalizzato e specificare gli input necessari. L'esempio qui sotto mostra un documento composito che effettua le seguenti operazioni:

  1. Esegue il plug-in aws:downloadContent per scaricare un documento SSM da un repository GitHub pubblico in una directory locale denominata bootstrap. Il documento SSM è denominato StateManagerBootstrap.yml (un documento YAML).

  2. Esegue il plugin aws:runDocument per eseguire il documento StateManagerBootstrap.yml. Non è specificato alcun parametro.

  3. Esegue il plugin aws:runDocument per eseguire il documento SSM di AWS-ConfigureDocker pre-defined. I parametri specificati installano Docker sull'istanza.

{ "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\"}" } } ] }
Ulteriori informazioni