Fase 5: (facoltativo) limitazione dell'accesso ai comandi in una sessione - AWS Systems Manager

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fase 5: (facoltativo) limitazione dell'accesso ai comandi in una sessione

È possibile limitare i comandi che un utente può eseguire in un AWS Systems Manager Session Manager sessione utilizzando un documento Session di tipo AWS Systems Manager (SSM) personalizzato. Nel documento, puoi definire il comando che viene eseguito quando l'utente avvia una sessione e i parametri che l’utente può fornire al comando. Il documento Session schemaVersion deve essere 1.0 e il sessionType del documento deve essere InteractiveCommands. È quindi possibile creare AWS Identity and Access Management (IAM) politiche che consentano agli utenti di accedere solo ai Session documenti definiti dall'utente. Per ulteriori informazioni sull'utilizzo delle IAM policy per limitare l'accesso ai comandi in una sessione, consultaEsempi di policy IAM per comandi interattivi.

I documenti con o InteractiveCommands sono supportati solo per le sessioni iniziate da AWS Command Line Interface (AWS CLI). sessionType L'utente fornisce il nome del documento personalizzato come valore del parametro --document-name e specifica tutti i valori dei parametri del comando utilizzando l'opzione --parameters. Per ulteriori informazioni sull'esecuzione di comandi interattivi, consulta Avvio di una sessione (comandi interattivi e non interattivi).

Utilizzare la seguente procedura per creare un SSM documento Session di tipo personalizzato che definisca il comando che un utente può eseguire.

Limitare l'accesso ai comandi in una sessione (console)

Per limitare i comandi che un utente può eseguire in un Session Manager sessione (console)
  1. Apri la AWS Systems Manager console all'indirizzo https://console.aws.amazon.com/systems-manager/.

  2. Nel riquadro di navigazione, scegli Documenti.

  3. Scegliere Create command or session (Crea comando o sessione).

  4. Per Name (Nome), inserire un nome descrittivo per il documento.

  5. Per Document type (Tipo documento), scegliere Session document (Documento di sessione).

  6. Immettete il contenuto del documento che definisce il comando che un utente può eseguire in un Session Manager sessione utilizzando JSON oYAML, come illustrato nell'esempio seguente.

    YAML
    --- schemaVersion: '1.0' description: Document to view a log file on a Linux instance sessionType: InteractiveCommands parameters: logpath: type: String description: The log file path to read. default: "/var/log/amazon/ssm/amazon-ssm-agent.log" allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$" properties: linux: commands: "tail -f {{ logpath }}" runAsElevated: true
    JSON
    { "schemaVersion": "1.0", "description": "Document to view a log file on a Linux instance", "sessionType": "InteractiveCommands", "parameters": { "logpath": { "type": "String", "description": "The log file path to read.", "default": "/var/log/amazon/ssm/amazon-ssm-agent.log", "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$" } }, "properties": { "linux": { "commands": "tail -f {{ logpath }}", "runAsElevated": true } } }
  7. Scegliere Create document (Crea documento).

Limitare l'accesso ai comandi in una sessione (riga di comando)

Prima di iniziare

Se non l'hai già fatto, installa e configura il AWS Command Line Interface (AWS CLI) o il AWS Tools for PowerShell. Per informazioni, consulta le pagine Installazione o aggiornamento della versione più recente di AWS CLI e Installazione di AWS Tools for PowerShell.

Per limitare i comandi che un utente può eseguire in un Session Manager sessione (riga di comando)
  1. Crea un YAML file JSON or per il contenuto del documento che definisca il comando che un utente può eseguire in un Session Manager sessione, come illustrato nell'esempio seguente.

    YAML
    --- schemaVersion: '1.0' description: Document to view a log file on a Linux instance sessionType: InteractiveCommands parameters: logpath: type: String description: The log file path to read. default: "/var/log/amazon/ssm/amazon-ssm-agent.log" allowedPattern: "^[a-zA-Z0-9-_/]+(.log)$" properties: linux: commands: "tail -f {{ logpath }}" runAsElevated: true
    JSON
    { "schemaVersion": "1.0", "description": "Document to view a log file on a Linux instance", "sessionType": "InteractiveCommands", "parameters": { "logpath": { "type": "String", "description": "The log file path to read.", "default": "/var/log/amazon/ssm/amazon-ssm-agent.log", "allowedPattern": "^[a-zA-Z0-9-_/]+(.log)$" } }, "properties": { "linux": { "commands": "tail -f {{ logpath }}", "runAsElevated": true } } }
  2. Eseguite i seguenti comandi per creare un SSM documento utilizzando il contenuto che definisce il comando che un utente può eseguire in un Session Manager sessione.

    Linux & macOS
    aws ssm create-document \ --content file://path/to/file/documentContent.json \ --name "exampleAllowedSessionDocument" \ --document-type "Session"
    Windows
    aws ssm create-document ^ --content file://C:\path\to\file\documentContent.json ^ --name "exampleAllowedSessionDocument" ^ --document-type "Session"
    PowerShell
    $json = Get-Content -Path "C:\path\to\file\documentContent.json" | Out-String New-SSMDocument ` -Content $json ` -Name "exampleAllowedSessionDocument" ` -DocumentType "Session"

Parametri di comando interattivi e AWS CLI

È possibile fornire parametri di comando interattivi quando si utilizza la AWS CLI. A seconda del sistema operativo (OS) del computer client utilizzato per la connessione ai nodi gestiti con AWS CLI, la sintassi fornita per i comandi che contengono caratteri speciali o di escape potrebbe essere diversa. Gli esempi seguenti mostrano alcuni dei diversi modi in cui è possibile fornire i parametri di comando quando si AWS CLI utilizza e come gestire caratteri speciali o di escape.

Parametri memorizzati in Parameter Store è possibile fare riferimento nei parametri del AWS CLI comando, come illustrato nell'esempio seguente.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["{{ssm:mycommand}}"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["{{ssm:mycommand}}"]}'

L'esempio seguente mostra come puoi utilizzare una sintassi abbreviata con la AWS CLI per passare i parametri.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters command="ifconfig"
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters command="ipconfig"

È inoltre possibile fornire parametri JSON come illustrato nell'esempio seguente.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["ifconfig"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["ipconfig"]}'

I parametri possono anche essere memorizzati in un JSON file e forniti AWS CLI come illustrato nell'esempio seguente. Per ulteriori informazioni sull'utilizzo di parametri AWS CLI da un file, consulta Caricamento di parametri AWS CLI da un file nella Guida per l'utente di AWS Command Line Interface .

{ "command": [ "my command" ] }
Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters file://complete/path/to/file/parameters.json
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters file://complete/path/to/file/parameters.json

È inoltre possibile generare AWS CLI uno scheletro da un file JSON di input, come illustrato nell'esempio seguente. Per ulteriori informazioni sulla generazione di AWS CLI scheletri da file JSON di input, vedete Generazione di AWS CLI scheletri e parametri di input da un file di YAML input JSON or nella Guida per l'AWS Command Line Interface utente.

{ "Target": "instance-id", "DocumentName": "MyInteractiveCommandDocument", "Parameters": { "command": [ "my command" ] } }
Linux & macOS
aws ssm start-session \ --cli-input-json file://complete/path/to/file/parameters.json
Windows
aws ssm start-session ^ --cli-input-json file://complete/path/to/file/parameters.json

Per eseguire l'escape dei caratteri all'interno delle virgolette, è necessario aggiungere ulteriori barre rovesciate ai caratteri di escape, come illustrato nell'esempio seguente.

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name MyInteractiveCommandDocument \ --parameters '{"command":["printf \"abc\\\\tdef\""]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name MyInteractiveCommandDocument ^ --parameters '{"command":["printf \"abc\\\\tdef\""]}'

Per ulteriori informazioni sulla citazione con parametri di comando nella AWS CLI, consulta Utilizzo di virgolette con stringhe nella AWS CLI nella Guida per l'utente della AWS Command Line Interface .

Esempi di policy IAM per comandi interattivi

È possibile creare IAM politiche che consentano agli utenti di accedere solo ai Session documenti definiti dall'utente. Ciò limita i comandi che un utente può eseguire in un Session Manager sessione ai soli comandi definiti nei SSM documenti Session di tipo personalizzato.

Consentire a un utente di eseguire un comando interattivo su un singolo nodo
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:region:987654321098:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:region:987654321098:document/exampleAllowedSessionDocument" ] } ] }
Consentire a un utente di eseguire un comando interattivo su tutti i nodi gestiti
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:us-west-2:987654321098:instance/*", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument" ] } ] }
Consentire a un utente di eseguire più comandi interattivi su tutti i nodi gestiti
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ssm:StartSession", "Resource":[ "arn:aws:ec2:us-west-2:987654321098:instance/*", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument", "arn:aws:ssm:us-west-2:987654321098:document/exampleAllowedSessionDocument2" ] } ] }