Exemplos adicionais de políticas do IAM para o Session Manager - AWS Systems Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exemplos adicionais de políticas do IAM para o Session Manager

Consulte os seguintes exemplos de políticas para ajudar você a criar uma política do AWS Identity and Access Management (IAM) personalizada para que qualquer usuário do Session Manager acesse cenários os quais deseja oferecer suporte.

Exemplo 1: conceder aos usuários acesso a documentos do console

É possível permitir que os usuários especifiquem um documento personalizado ao iniciarem uma sessão usando o console do Gerenciador de Sessões. O exemplo de política do IAM a seguir concede permissão para acessar documentos com nomes que começam com SessionDocument- na Região da AWS e Conta da AWS especificadas.

Para usar essa política, substitua cada espaço reservado para recurso de exemplo por suas próprias informações.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetDocument", "ssm:ListDocuments" ], "Resource": [ "arn:aws:ssm:region:account-id:document/SessionDocument-*" ], "Condition": { "BoolIfExists": { "ssm:SessionDocumentAccessCheck": "true" } } } ] }
nota

O console do Gerenciador de Sessões oferece suporte somente a documentos de sessão que tenham um sessionType de Standard_Stream que sejam usados para definir as preferências da sessão. Para ter mais informações, consulte Esquema do documento de sessão.

Exemplo 2: restringir o acesso a nós gerenciados específicos

É possível criar uma política do IAM que defina a quais nós gerenciados um usuário pode se conectar usando o Gerenciador de Sessões. Por exemplo, a política a seguir concede a um usuário permissão para iniciar, encerrar e retomar as sessões em três nós específicos. A política restringe o usuário de se conectar a nós diferentes dos especificados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890EXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-abcdefghijEXAMPLE", "arn:aws:ec2:us-east-2:123456789012:instance/i-0e9d8c7b6aEXAMPLE" ] }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

Exemplo 3: restringir o acesso com base em etiquetas

Você pode restringir o acesso a nós gerenciados com base em etiquetas específicas. No exemplo a seguir, o usuário tem permissão para iniciar e retomar sessões (Effect: Allow, Action: ssm:StartSession, ssm:ResumeSession) em qualquer nó gerenciado (Resource: arn:aws:ec2:region:987654321098: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ó gerenciado que não está etiquetado ou que tem qualquer outra etiqueta que não seja Finance: WebServer, o resultado do comando incluirá AccessDenied.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ec2:us-east-2:123456789012:instance/*" ], "Condition": { "StringLike": { "ssm:resourceTag/Finance": [ "WebServers" ] } } }, { "Effect": "Allow", "Action": [ "ssm:TerminateSession", "ssm:ResumeSession" ], "Resource": [ "arn:aws:ssm:*:*:session/${aws:userid}-*" ] } ] }

Você pode criar políticas do IAM que permitem que um usuário inicie sessões para nós gerenciados que são marcados com várias etiquetas. A política a seguir permite que o usuário inicie sessões em nós gerenciados que tiverem ambas as etiquetas especificadas aplicadas a eles. Se um usuário enviar um comando para um nó gerenciado que não estiver marcado com ambas as etiquetas, o resultado do comando incluirá AccessDenied.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:StartSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/tag-key1":[ "tag-value1" ], "ssm:resourceTag/tag-key2":[ "tag-value2" ] } } } ] }

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 a marcação de nós gerenciados, consulte Marcar nós gerenciados e Marcar com etiqueta os recursos do Amazon EC2 no Guia do usuário do Amazon EC2 para instâncias do Linux (o conteúdo aplica-se a nós gerenciados do Windows e do Linux). Para obter informações sobre como reforçar seu procedimento de segurança em relação a comandos em nível raiz não autorizados em seus nós gerenciados, consulte Restringir o acesso aos comandos em nível raiz por meio do SSM Agent

Exemplo 4: permitir que um usuário encerre somente sessões iniciadas por ele

Session Managerfornece dois métodos para controlar quais sessões um usuário federado em seu Conta da AWS pode encerrar.

  • Use a variável {aws:userid} em uma política de permissões AWS Identity and Access Management (IAM). Os usuários federados podem encerrar apenas as sessões que eles iniciaram. Para usuários não federados, use a variável {aws:username} em vez de {aws:userid}.

  • Use tags fornecidas por AWS tags em uma política de permissões do IAM. Na política, inclua uma condição que permita que os usuários encerrem somente as sessões marcadas com as tags específicas fornecidas pela AWS. Esse método funciona para todas as contas, incluindo aquelas que usam IDs federados para conceder acesso à AWS.

Método 1: conceder TerminateSession privilégios usando a variável {aws:username}

A política do IAM a seguir permite que um usuário exiba os IDs de todas as sessões na sua conta. No entanto, os usuários podem interagir com os nós gerenciados apenas por meio das sessões que eles iniciaram. Um usuário que teve a política a seguir atribuída não poderá se conectar nem encerrar sessões de outros usuários. A política usa a variável {aws:username} para atingir isso.

nota

Esse método não funciona para contas que usam IDs federados para conceder acesso à AWS .

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:DescribeSessions" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "ssm:TerminateSession" ], "Effect": "Allow", "Resource": [ "arn:aws:ssm:*:*:session/${aws:username}-*" ] } ] }

Método 2: Conceder TerminateSession privilégios usando tags fornecidas pelo AWS

É possível controlar quais sessões um usuário poderá encerrar, incluindo variáveis ​​de chave de etiqueta condicional em uma política do IAM. A condição determina que o usuário só pode encerrar sessões marcadas com uma ou ambas as variáveis de chave de tag específicas e um valor especificado.

Quando um usuário Conta da AWS inicia uma sessão, Session Manager aplica duas tags de recursos à sessão. A primeira tag de recurso é aws:ssmmessages:target-id, com a qual você especifica o ID do destino que o usuário tem permissão para encerrar. A outra tag de recurso é aws:ssmmessages:session-id, com um valor no formato de role-id:caller-specified-role-name.

nota

O Session Manager não oferece suporte a tags personalizadas para essa política de controle de acesso do IAM. Você deve usar as tags de recursos fornecidas por AWS, descritas abaixo.

aws:ssmmessages:target-id

Com essa chave de etiqueta, inclua o ID do nó gerenciado como o valor na política. No bloco de política a seguir, a instrução da condição permite que um usuário encerre apenas o nó i-02573cafcfEXAMPLE.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:target-id": [ "i-02573cafcfEXAMPLE" ] } } } ] }

Se o usuário tentar encerrar uma sessão para a qual não recebeu a permissão TerminateSession, ele receberá um erro AccessDeniedException.

aws:ssmmessages:session-id

Essa chave de tag inclui uma variável para o ID de sessão como o valor na solicitação para iniciar uma sessão.

O exemplo a seguir mostra uma política para casos em que o tipo de chamador é User. O valor fornecido em aws:ssmmessages:session-id é o ID do usuário. Neste exemplo, AIDIODR4TAW7CSEXAMPLE representa o ID de um usuário na sua conta da Conta da AWS. Para recuperar o ID de um usuário em seu Conta da AWS, use o comando IAM,get-user. Para obter informações, consulte get-user na AWS Identity and Access Management seção do Guia do usuário do IAM.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "AIDIODR4TAW7CSEXAMPLE" ] } } } ] }

O exemplo a seguir mostra uma política para casos em que o tipo de chamador é AssumedRole. Você pode usar a variável {aws:userid} para o valor fornecido para aws:ssmmessages:session-id. Como alternativa, você pode codificar um ID de função para o valor fornecido para aws:ssmmessages:session-id. Se você codificar um ID de função, deverá fornecer o valor no formato role-id:caller-specified-role-name. Por exemplo, AIDIODR4TAW7CSEXAMPLE:MyRole.

Importante

Para que as tags do sistema sejam aplicadas, o ID de função fornecido pode conter apenas os seguintes caracteres: letras Unicode, 0–9, espaço, _, ., :, /, =, +, -, @ e \.

Para recuperar o ID da função de uma função na sua Conta da AWS, use o get-caller-identity comando. Para obter informações, consulte get-caller-identityna Referência de AWS CLI Comandos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:TerminateSession" ], "Resource": "*", "Condition": { "StringLike": { "ssm:resourceTag/aws:ssmmessages:session-id": [ "${aws:userid}*" ] } } } ] }

Se um usuário tentar encerrar uma sessão para a qual não recebeu a permissão TerminateSession, ele receberá um erro AccessDeniedException.

aws:ssmmessages:target-id e aws:ssmmessages:session-id

Você também pode criar políticas do IAM que permitem que um usuário encerre sessões marcadas com ambas as tags do sistema, conforme este exemplo.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ssm:TerminateSession" ], "Resource":"*", "Condition":{ "StringLike":{ "ssm:resourceTag/aws:ssmmessages:target-id":[ "i-02573cafcfEXAMPLE" ], "ssm:resourceTag/aws:ssmmessages:session-id":[ "${aws:userid}*" ] } } } ] }

Exemplo 5: permitir acesso completo (administrativo) a todas as sessões

A seguinte política do IAM permite que um usuário interaja totalmente com todos os nós gerenciados e todas as sessões criadas por todos os usuários para todos os nós. Ela deve ser concedida somente a um administrador que precisa de controle total sobre as atividades do Session Manager da sua organização.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ssm:StartSession", "ssm:TerminateSession", "ssm:ResumeSession", "ssm:DescribeSessions", "ssm:GetConnectionStatus" ], "Effect": "Allow", "Resource": [ "*" ] } ] }