Etapa 5: (Opcional) Restringir o acesso a comandos em uma sessão
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.
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).
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)
Para restringir os comandos que um usuário pode executar em uma sessão do Session Manager (console)
Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/
. -
No painel de navegação, escolha Documents.
-
Escolha Create command or session (Criar comando ou sessão).
-
Em Name (Nome), insira um nome descritivo para o documento.
-
Em Document Type (Tipo de documento), escolha Session document (Documento de sessão).
-
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.
-
Escolha Criar documento.
Restringir acesso a comandos em uma sessão (linha de comando)
Antes de começar
Caso ainda não tenha feito isso, instale e configure a AWS Command Line Interface (AWS CLI) ou o AWS Tools for PowerShell. Para obter informações, consulte Instalar ou atualizar a versão mais recente da AWS CLI e Instalar o AWS Tools for PowerShell.
Para restringir os comandos que um usuário pode executar em uma sessão do Session Manager (linha de comando)
-
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.
-
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.
Parâmetros de comando interativos e a AWS CLI
Usando a AWS CLI, os parâmetros de comandos interativos podem ser fornecidos de várias maneiras. 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.
O exemplo a seguir mostra como é possível usar uma sintaxe abreviada com a AWS CLI para passar parâmetros.
Você também pode fornecer parâmetros em JSON como mostrado no exemplo a seguir.
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 no Manual do usuário do AWS Command Line Interface.
{ "command": [ "
my command
" ] }
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 no Guia do usuário da AWS Command Line Interface.
{ "Target": "
instance-id
", "DocumentName": "MyInteractiveCommandDocument
", "Parameters": { "command": [ "my command
" ] } }
Para escapar caracteres dentro das aspas, adicione barras invertidas adicionais aos caracteres de escape, conforme mostrado no exemplo a seguir.
Para obter informações sobre o uso de aspas com parâmetros formatados na AWS CLI, consulte Usar aspas com strings na AWS CLI, no Manual do usuário da AWS Command Line Interface.
Exemplos de políticas do IAM para comandos interativos
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:
region
:987654321098
:instance/i-02573cafcfEXAMPLE
", "arn:aws:ssm:region
:987654321098
:document/exampleAllowedSessionDocument
" ] } ] } - 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-west-2
:987654321098
:instance/*", "arn:aws:ssm:us-west-2
:987654321098
:document/exampleAllowedSessionDocument
" ] } ] } - 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-west-2
:987654321098
:instance/*", "arn:aws:ssm:us-west-2
:987654321098
:document/exampleAllowedSessionDocument
", "arn:aws:ssm:us-west-2
:987654321098
:document/exampleAllowedSessionDocument2
" ] } ] }