Configurar o Run Command
Antes de gerenciar nós usando o Run Command, uma funcionalidade do AWS Systems Manager, configure uma política do AWS Identity and Access Management (IAM) para os usuários que executarão comandos. Se você usar alguma chave de condição global para a ação SendCommand
em suas políticas do IAM, deverá incluir a chave de condição aws:ViaAWSService
e definir o valor booleano como true
. Veja um exemplo a seguir.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ssm:SendCommand"], "Resource": ["arn:aws:ssm:
region
:account
:document/YourDocument
"], "Condition": { "StringEquals": { "aws:SourceVpce": ["vpce-example1234
"] } } }, { "Effect": "Allow", "Action": ["ssm:Sendcommand"], "Resource": ["arn:aws:ssm:region
:account
:document/YourDocument
"], "Condition": { "Bool": {"aws:ViaAWSService": "true"} } } ] }
Você também deve configurar os nós para o Systems Manager. Para ter mais informações, consulte Configurar o AWS Systems Manager.
Recomendamos concluir as tarefas de configuração opcionais a seguir para ajudar a minimizar o procedimento de segurança e o gerenciamento diário de seus nós gerenciados.
- Monitorar execuções de comandos usando o Amazon EventBridge
-
É possível usar o EventBridge para registrar em log alterações no status da execução do comando. Você pode criar uma regra que será executada sempre que houver uma transição de estado ou quando houver uma transição para um ou mais estados que sejam de interesse. Você pode também especificar o Run Command como ação de destino quando ocorre um evento do EventBridge. Para ter mais informações, consulte Configurar o EventBridge para eventos do Systems Manager.
- Monitorar execuções de comandos usando o Amazon CloudWatch Logs
-
É possível configurar o Run Command para enviar periodicamente todos os logs de erros e saída de comandos para um grupo de logs do Amazon CloudWatch. É possível monitorar esses logs de saída quase em tempo real, pesquisar valores, frases específicas ou padrões e criar alarmes com base na pesquisa. Para ter mais informações, consulte Configurar o Amazon CloudWatch Logs para Run Command.
- Restringir o acesso do Run Command a nós gerenciados específicos
-
Você pode restringir a capacidade de um usuário executar comandos em nós gerenciados usando o AWS Identity and Access Management (IAM). Especificamente, é possível criar uma política do IAM com uma condição em que o usuário poderá somente executar comandos em nós gerenciados que são marcados com etiquetas específicas. Para ter mais informações, consulte Restringir o acesso ao Run Command com base em etiquetas.
Restringir o acesso ao Run Command com base em etiquetas
Esta seção descreve como restringir a capacidade de um usuário executar comandos em nós gerenciados especificando uma condição de etiqueta em uma política do IAM. Os nós gerenciados incluem instâncias do Amazon EC2 e nós que não são do EC2 em um ambiente híbrido e multinuvem configurado para o Systems Manager. Embora as informações não sejam apresentadas explicitamente, você também pode restringir o acesso a dispositivos principais do AWS IoT Greengrass gerenciados. Para começar, você deve marcar com etiquetas os dispositivos do AWS IoT Greengrass. Para obter mais informações, consulte Marcar recursos do AWS IoT Greengrass Version 2 no Guia do desenvolvedor do AWS IoT Greengrass Version 2.
É possível restringir a execução de comandos a nós gerenciados específicos ao criar uma política do IAM que inclua uma condição em que o usuário poderá somente executar comandos em nós que estiverem marcados com etiquetas específicas. No exemplo a seguir, o usuário tem permissão para usar o Run Command (Effect: Allow, Action: ssm:SendCommand
) usando qualquer documento do SSM (Resource: arn:aws:ssm:*:*:document/*
) em qualquer nó (Resource: arn:aws:ec2:*:*:instance/*
) com a condição de que o nó seja um Finance WebServer (ssm:resourceTag/Finance: WebServer
). Se o usuário enviar um comando para um nó que não esteja marcado ou que possui qualquer outra etiqueta que não seja Finance: WebServer
, os resultados da execução mostrarão AccessDenied
.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:*:*:document/*" ] }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ec2:*:*:instance/*" ], "Condition":{ "StringLike":{ "ssm:resourceTag/Finance":[ "WebServers" ] } } } ] }
Você pode criar políticas do IAM que permitem que um usuário execute comandos em nós gerenciados que são marcados com várias etiquetas. A política a seguir permite que o usuário execute comandos em nós gerenciados que têm duas etiquetas. Se um usuário enviar um comando para um nó que não esteja marcado com ambas as etiquetas, os resultados da execução mostrarão AccessDenied
.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ], "ssm:resourceTag/tag_key2":[ "tag_value2" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:us-west-1::document/AWS-*", "arn:aws:ssm:us-east-2::document/AWS-*" ] }, { "Effect":"Allow", "Action":[ "ssm:UpdateInstanceInformation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetDocument" ], "Resource":"*" } ] }
Você também pode criar políticas do IAM que permitem que um usuário execute comandos em vários grupos de nós gerenciados marcados. A política de exemplo a seguir permite que o usuário execute comandos em um grupo de nós com etiquetas ou em ambos os grupos.
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key1":[ "tag_value1" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag_key2":[ "tag_value2" ] } } }, { "Effect":"Allow", "Action":[ "ssm:SendCommand" ], "Resource":[ "arn:aws:ssm:us-west-1::document/AWS-*", "arn:aws:ssm:us-east-2::document/AWS-*" ] }, { "Effect":"Allow", "Action":[ "ssm:UpdateInstanceInformation", "ssm:ListCommands", "ssm:ListCommandInvocations", "ssm:GetDocument" ], "Resource":"*" } ] }
Para obter mais informações sobre como criar políticas do IAM, consulte Políticas gerenciadas e em linha no Guia do usuário do IAM. Para obter mais informações sobre como marcar nós gerenciados, consulte Editor de etiquetas no Guia do usuário do AWS Resource Groups.