Gerenciando o uso e o acesso ao AWS CloudShell com políticas do IAM - AWS CloudShell

Gerenciando o uso e o acesso ao AWS CloudShell com políticas do IAM

Usando os recursos de gerenciamento de acesso que podem ser fornecidos pelo AWS Identity and Access Management, os administradores podem conceder permissões aos usuários do IAM. Dessa forma, esses usuários podem acessar o AWS CloudShell e usar os atributos do ambiente. Os administradores também podem criar políticas que especifiquem em um nível granular quais ações esses usuários podem realizar com o ambiente shell.

A maneira mais rápida de um administrador conceder acesso aos usuários é por meio de uma política gerenciada pela AWS. Uma política gerenciada pela AWS é uma política independente, criada e administrada pela AWS. A política gerenciada pela AWS a seguir para o AWS CloudShell pode ser anexada às identidades do IAM:

  • AWSCloudShellFullAccess: concede permissão para uso do AWS CloudShell com acesso total a todos os atributos.

A política AWSCloudShellFullAccess usa o caractere curinga (*) para dar à identidade do IAM (usuário, função ou grupo) acesso total ao CloudShell e atributos. Para obter mais informações sobre essa política, consulte AWSCloudShellFullAccess no AWS Managed Policy User Guide.

nota

As identidades do IAM com as políticas gerenciadas pela AWS a seguir também podem iniciar o CloudShell. No entanto, essas políticas fornecem permissões abrangentes. Portanto, recomendamos que essas políticas sejam concedidas somente se elas forem essenciais para a função de trabalho de um usuário do IAM.

  • Administrador: fornece aos usuários do IAM acesso total e lhes permite delegar permissões a todo serviço e recurso na AWS.

  • Usuário desenvolvedor avançado: capacita usuários do IAM a executar tarefas de desenvolvimento de aplicativos e criar e configurar recursos e serviços compatíveis com o desenvolvimento consciente de aplicativos da AWS.

Para obter mais informações sobre como anexar políticas gerenciadas, consulte Adicionar permissões de identidade do IAM (console) no Manual do usuário do IAM.

Gerenciando ações permitidas no AWS CloudShell com políticas personalizadas

Para gerenciar as ações que um usuário do IAM pode realizar com o CloudShell, crie uma política personalizada que use a política gerenciada CloudShellPolicy como modelo. Você também pode editar uma política em linha integrada a uma identidade do IAM relevante (usuário, grupo ou função).

Por exemplo, você pode permitir que usuários do IAM acessem o CloudShell, mas impedi-los de encaminhar as credenciais do ambiente CloudShell que são usadas para fazer login no AWS Management Console.

Importante

Para iniciar o AWS CloudShell partir do AWS Management Console, um usuário do IAM precisa de permissões para as seguintes ações:

  • CreateEnvironment

  • CreateSession

  • GetEnvironmentStatus

  • StartEnvironment

Se uma dessas ações não for explicitamente permitida por uma política anexada, um erro de permissões do IAM será retornado quando você tentar iniciar o CloudShell.

Permissões AWS CloudShell
Nome Descrição da permissão concedida Obrigatório para iniciar o CloudShell?

cloudshell:CreateEnvironment

Cria um ambiente CloudShell, recupera o layout no início da sessão do CloudShell e salva o layout atual do aplicativo da web no backend. Essa permissão só espera * como o valor do Resource conforme descrito em Exemplos de políticas do IAM para CloudShell.

Sim

cloudshell:CreateSession

Conecta a um ambiente CloudShell pelo AWS Management Console.

Sim

cloudshell:GetEnvironmentStatus

Leia o status de um ambiente CloudShell.

Sim

cloudshell:DeleteEnvironment

Exclui um ambiente CloudShell.

Não

cloudshell:GetFileDownloadUrls

Gera URLs pré-assinados do Amazon S3 que são usados para carregar arquivos por meio do CloudShell usando a interface web do CloudShell. Não está disponível para ambientes de VPC.

Não

cloudshell:GetFileUploadUrls

Gera URLs pré-assinados do Amazon S3 que são usados para carregar arquivos por meio do CloudShell usando a interface web do CloudShell. Não está disponível para ambientes de VPC.

Não

cloudshell:DescribeEnvironments

Descreve os ambientes.

Não

cloudshell:PutCredentials

Encaminha as credenciais usadas para fazer login no AWS Management Console para o CloudShell.

Não

cloudshell:StartEnvironment

Inicia um ambiente CloudShell que está parado.

Sim

cloudshell:StopEnvironment

Interrompe um ambiente CloudShell em execução.

Não

Exemplos de políticas do IAM para CloudShell

Os exemplos a seguir mostram como as políticas podem ser criadas para restringir quem pode acessar o CloudShell. Os exemplos também mostram as ações que podem ser executadas no ambiente shell.

A política a seguir impõe uma negação completa de acesso ao CloudShell e seus atributos.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyCloudShell", "Effect": "Deny", "Action": [ "cloudshell:*" ], "Resource": "*" }] }

A política a seguir permite que os usuários do IAM acessem o CloudShell, mas os impede de gerar URLs pré-assinados para carregar e baixar arquivos. Os usuários ainda podem transferir arquivos de e para o ambiente, usando clientes como wget, por exemplo.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyUploadDownload", "Effect": "Deny", "Action": [ "cloudshell:GetFileDownloadUrls", "cloudshell:GetFileUploadUrls" ], "Resource": "*" }] }

A política a seguir permite que os usuários do IAM acessem o CloudShell. No entanto, a política impede que as credenciais que você usou para fazer login no AWS Management Console sejam encaminhadas para o ambiente CloudShell. Com essa política, os usuários do IAM precisam configurar manualmente suas credenciais no CloudShell.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyCredentialForwarding", "Effect": "Deny", "Action": [ "cloudshell:PutCredentials" ], "Resource": "*" }] }

A política a seguir permite que um usuário do IAM crie ambientes no AWS CloudShell.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "CloudShellUser", "Effect": "Allow", "Action": [ "cloudshell:CreateEnvironment", "cloudshell:CreateSession", "cloudshell:GetEnvironmentStatus", "cloudshell:StartEnvironment" ], "Resource": "*" }] }

Permissões obrigatórias do IAM para criar e usar ambientes de VPC no CloudShell

Para criar e usar ambientes de VPC no CloudShell, o administrador do IAM deve habilitar o acesso às permissões específicas do Amazon EC2 da VPC. Esta seção lista as permissões do Amazon EC2 necessárias para criar e usar ambientes de VPC.

Para criar ambientes de VPC, a política do IAM atribuída à sua função deve incluir as seguintes permissões do Amazon EC2:

  • ec2:DescribeVpcs

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeDhcpOptions

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateTags

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

Também recomendamos incluir:

  • ec2:DeleteNetworkInterface

nota

Essa permissão não é obrigatória, mas é necessária para que o CloudShell limpe o recurso ENI (os ENIs criados para ambientes de VPC no CloudShell são marcados com a chave ManagedByCloudShell) criado por ele. Se essa permissão não estiver habilitada, você deverá limpar manualmente o recurso ENI após cada uso do ambiente de VPC no CloudShell.

Política do IAM que concede acesso total ao CloudShell, incluindo acesso à VPC

O seguinte exemplo mostra como habilitar permissões completas, incluindo acesso à VPC, ao CloudShell:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudShellOperations", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "AllowDescribeVPC", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowCreateTagWithCloudShellKey", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" }, "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfaceWithSubnetsAndSG", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowCreateNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfacePermissionWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } }, { "Sid": "AllowDeleteNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } } ] }

Usar chaves de condição do IAM para ambientes de VPC

É possível usar chaves de condição específicas do CloudShell para configurações de VPC a fim de fornecer controles de permissão adicionais para os ambientes de VPC. Também é possível especificar as sub-redes e os grupos de segurança que os usuários do ambiente de VPC podem e não podem usar.

O CloudShell oferece suporte às seguintes chaves de condição em políticas do IAM:

  • CloudShell:VpcIds: permitir ou negar uma ou mais VPCs

  • CloudShell:SubnetIds: permitir ou negar uma ou mais sub-redes

  • CloudShell:SecurityGroupIds: permitir ou negar um ou mais grupos de segurança

nota

Se as permissões dos usuários com acesso aos ambientes públicos do CloudShell forem modificadas para adicionar restrições à ação cloudshell:createEnvironment, ainda poderão acessar o ambiente público existente. No entanto, se você quiser modificar uma política do IAM com essa restrição e desabilitar seu acesso ao ambiente público existente, você deve primeiro atualizar a política do IAM com a restrição e, em seguida, garantir que cada usuário do CloudShell em sua conta exclua manualmente o ambiente público existente usando a interface de usuário da web do CloudShell (AçõesExcluir ambiente do CloudShell).

Políticas de exemplo com chaves de condição para configurações de VPC

Os exemplos a seguir demonstram como usar chaves de condição para configurações de VPC. Depois de criar uma instrução de política com as restrições desejadas, acrescente a instrução de política para o usuário ou a função de destino.

Garanta que os usuários criem somente ambientes de VPC e neguem a criação de ambientes públicos

Para garantir que os usuários possam criar somente ambientes de VPC, use a permissão de negação, conforme mostrado no seguinte exemplo:

{ "Statement": [ { "Sid": "DenyCloudShellNonVpcEnvironments", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "Null": { "cloudshell:VpcIds": "true" } } } ] }

Negar acesso de usuários a VPCs, sub-redes ou grupos de segurança específicos

Para negar acesso de usuários a VPCs específicas, use StringEquals para verificar o valor da condição cloudshell:VpcIds. O seguinte exemplo nega aos usuários acesso à vpc-1 e à vpc-2:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

Para negar acesso de usuários a VPCs específicas, use StringEquals para verificar o valor da condição cloudshell:SubnetIds. O seguinte exemplo nega aos usuários acesso à subnet-1 e à subnet-2:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

Para negar acesso de usuários a VPCs específicas, use StringEquals para verificar o valor da condição cloudshell:SecurityGroupIds. O seguinte exemplo nega aos usuários acesso à sg-1 e à sg-2:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfSecurityGroups", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

Permitir que os usuários criem ambientes com configurações de VPC específicas

Para permitir que os usuários acessem VPCs específicas, use StringEquals para verificar o valor da condição cloudshell:VpcIds. O seguinte exemplo dá aos usuários permissão para acessar vpc-1 e vpc-2:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

Para permitir que os usuários acessem VPCs específicas, use StringEquals para verificar o valor da condição cloudshell:SubnetIds. O seguinte exemplo dá aos usuários permissão para acessar subnet-1 e subnet-2:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSubnets", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SubnetIds": [ "subnet-1", "subnet-2" ] } } } ] }

Para permitir que os usuários acessem VPCs específicas, use StringEquals para verificar o valor da condição cloudshell:SecurityGroupIds. O seguinte exemplo dá aos usuários permissão para acessar sg-1 e sg-2:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSecurityGroup", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

Permissões para acessar Serviços da AWS

O CloudShell usa as credenciais do IAM que você usou para entrar no AWS Management Console.

nota

Para usar as credenciais do IAM que você usou para entrar no AWS Management Console, você precisa ter a permissão cloudshell:PutCredentials.

Esse atributo de pré-autenticação do CloudShell facilita usar AWS CLI. No entanto, um usuário do IAM ainda precisa de permissões explícitas para Serviços da AWS que são chamados na linha de comando.

Por exemplo, suponha que os usuários do IAM precisem criar buckets do Amazon S3 e carregar arquivos como objetos para eles. Você pode criar uma política que permita explicitamente essas ações. O console do IAM fornece um editor visual interativo que orienta o processo de criação de um documento de política formatado em JSON. Uma vez criada a política, ela pode ser anexada a uma identidade do IAM relevante (usuário, grupo ou função).

Para obter mais informações sobre como anexar políticas gerenciadas, consulte Adicionar permissões de identidade do IAM (console) no Manual do usuário do IAM.

Permissões para acessar os recursos da CLI do Amazon Q no CloudShell

Para usar os recursos da CLI do Amazon Q no CloudShell, como sugestões em linha, bate-papo e tradução, verifique se você tem as permissões necessárias do IAM. Se você não conseguir acessar os recursos da CLI do Amazon Q no CloudShell, entre em contato com seu administrador para fornecer as permissões necessárias do IAM. Para obter mais informações, consulte Identity-based policy examples for Amazon Q Developer no Amazon Q Developer User Guide.