

• O AWS Systems Manager CloudWatch Dashboard não estará mais disponível a partir de 30 de abril de 2026. Os clientes podem continuar usando o console do Amazon CloudWatch para visualizar, criar e gerenciar os painéis do Amazon CloudWatch exatamente como fazem hoje. Para obter mais informações, consulte a [documentação do Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html). 

# Etapa 5: (Opcional) Restringir o acesso a comandos em uma sessão
<a name="session-manager-restrict-command-access"></a>

Você pode restringir os comandos que um usuário pode executar em uma sessão do AWS Systems Manager Session Manager usando um documento do AWS Systems Manager (SSM) do tipo `Session` personalizado. No documento, defina o comando que é executado quando o usuário inicia uma sessão e os parâmetros que o usuário pode fornecer ao comando. A `schemaVersion` do documento do `Session` deve ser 1.0 e o `sessionType` do documento deve ser `InteractiveCommands`. É possível criar políticas do AWS Identity and Access Management (IAM) que permitem que os usuários acessem apenas os documentos do `Session` definidos por você. Para obter mais informações sobre como usar políticas do IAM para restringir o acesso a comandos em uma sessão, consulte [Exemplos de políticas do IAM para comandos interativos](#interactive-command-policy-examples).

Documentos com o `sessionType` de `InteractiveCommands` são compatíveis somente com sessões iniciadas pela AWS Command Line Interface (AWS CLI). O usuário fornece o nome do documento personalizado como o valor do parâmetro `--document-name` e fornece qualquer valor de parâmetro do comando usando a opção `--parameters`. Para obter mais informações sobre como executar comandos interativos, consulte [Iniciar uma sessão (comandos interativos e não interativos)](session-manager-working-with-sessions-start.md#sessions-start-interactive-commands).

Use o procedimento a seguir para criar um documento do SSM tipo `Session` personalizado que define o comando que um usuário tem permissão para executar.

## Restringir acesso a comandos em uma sessão (console)
<a name="restrict-command-access-console"></a>

**Para restringir os comandos que um usuário pode executar em uma sessão do Session Manager (console)**

1. Abra o console AWS Systems Manager em [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. No painel de navegação, escolha **Documents**.

1. Escolha **Create command or session (Criar comando ou sessão)**.

1. Em **Name** (Nome), insira um nome descritivo para o documento.

1. Em **Document Type (Tipo de documento)**, escolha **Session document (Documento de sessão)**.

1. Insira o conteúdo do documento que define o comando que um usuário pode executar em uma sessão do Session Manager usando JSON ou YAML, conforme mostrado no exemplo a seguir.

------
#### [ 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
           }
       }
   }
   ```

------

1. Escolha **Criar documento**.

## Restringir acesso a comandos em uma sessão (linha de comando)
<a name="restrict-command-access-commandline"></a>

**Antes de começar**  
Caso ainda não tenha feito isso, instale e configure a AWS Command Line Interface (AWS CLI) ou o Ferramentas da AWS para PowerShell. Para obter informações, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) e [Instalar o Ferramentas da AWS para PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html).

**Para restringir os comandos que um usuário pode executar em uma sessão do Session Manager (linha de comando)**

1. Crie um arquivo JSON ou YAML para o conteúdo do documento que define o comando que um usuário pode executar em uma sessão do Session Manager, conforme mostrado no exemplo a seguir.

------
#### [ 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
           }
       }
   }
   ```

------

1. Execute os seguintes comandos para criar um documento do SSM usando seu conteúdo que define o comando que um usuário pode executar em uma sessão do Session Manager.

------
#### [ 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"
   ```

------

## Parâmetros de comando interativos e a AWS CLI
<a name="restrict-command-access-parameters-cli"></a>

Usando a , os parâmetros de comandos interativos podem ser fornecidos de várias maneiras AWS CLI. Dependendo do sistema operacional (SO) da máquina cliente que você usa para se conectar aos nós gerenciados com a AWS CLI, a sintaxe fornecida para comandos que contêm caracteres especiais ou de escape poderá ser diferente. Os exemplos a seguir mostram algumas das maneiras de fornecer parâmetros de comandos ao usar a AWS CLI e como lidar com caracteres especiais ou de escape.

Os parâmetros armazenados em Parameter Store podem ser referenciados na AWS CLI para seus parâmetros de comandos conforme mostrado no exemplo a seguir.

------
#### [ 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}}"]}'
```

------

O exemplo a seguir mostra como é possível usar uma sintaxe abreviada com a AWS CLI para passar parâmetros.

------
#### [ 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"
```

------

Você também pode fornecer parâmetros em JSON como mostrado no exemplo a seguir.

------
#### [ 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"]}'
```

------

Os parâmetros também podem ser armazenados em um arquivo JSON e fornecidos para a AWS CLI como mostrado no exemplo a seguir. Para obter mais informações sobre como usar parâmetros da AWS CLI em um arquivo, consulte [Carregar parâmetros da AWS CLI em um arquivo](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-parameters-file.html) no *Manual do usuário do 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
```

------

Também é possível gerar um esqueleto da AWS CLI de um arquivo de entrada JSON conforme mostrado no exemplo a seguir. Para obter mais informações sobre a geração de esqueletos da AWS CLI com base em arquivos de entrada JSON, consulte [Gerar um esqueleto da AWS CLI e parâmetros de entrada usando um arquivo de entrada JSON ou YAML](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-skeleton.html) no * Guia do usuário da AWS Command Line Interface*.

```
{
    "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
```

------

Para escapar caracteres dentro das aspas, adicione barras invertidas adicionais aos caracteres de escape, conforme mostrado no exemplo a seguir.

------
#### [ 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\""]}'
```

------

Para obter informações sobre o uso de aspas com parâmetros formatados na AWS CLI, consulte [Usar aspas com strings na AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/;cli-usage-parameters-quoting-strings.html), no *Manual do usuário da AWS Command Line Interface*.

## Exemplos de políticas do IAM para comandos interativos
<a name="interactive-command-policy-examples"></a>

Você pode criar políticas do IAM que permitem que os usuários acessem somente os documentos de `Session` definidos por você. Isso restringe os comandos que um usuário pode executar em uma sessão do Session Manager apenas aos comandos definidos em seus documentos personalizados do SSM do tipo `Session`.

 **Permitir que um usuário execute um comando interativo em um único nó gerenciado**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/i-02573cafcfEXAMPLE",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```

 **Permitir que um usuário execute um comando interativo em todos os nós gerenciados**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/*",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```

 **Permitir que um usuário execute vários comandos interativos em todos os nós gerenciados**     
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ssm:StartSession",
         "Resource":[
            "arn:aws:ec2:us-east-1:444455556666:instance/*",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document",
            "arn:aws:ssm:us-east-1:444455556666:document/allowed-session-document-2"
         ]
      },
      {
         "Effect": "Allow",
         "Action": ["ssmmessages:OpenDataChannel"],
         "Resource": ["arn:aws:ssm:*:*:session/${aws:userid}-*"]
      }
   ]
}
```