Acessando instâncias sem entrada EC2 com AWS Systems Manager - AWS Cloud9

AWS Cloud9 não está mais disponível para novos clientes. Os clientes atuais do AWS Cloud9 podem continuar usando o serviço normalmente. Saiba mais

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á.

Acessando instâncias sem entrada EC2 com AWS Systems Manager

Uma “ EC2 instância sem entrada” criada para um EC2 ambiente permite conectar-se AWS Cloud9 à sua EC2 instância Amazon sem a necessidade de abrir nenhuma porta de entrada nessa instância. Você pode selecionar a opção sem entrada ao criar um EC2 ambiente usando o console, a interface da linha de comando ou uma AWS CloudFormation pilha. Para obter mais informações sobre como criar um ambiente usando o console ou a interface de linha de comandos, consulte Etapa 1: Criar um ambiente .

Importante

Não há cobranças adicionais pelo uso do Systems Manager Session Manager para gerenciar conexões com sua EC2 instância.

Ao selecionar um tipo de ambiente na página Criar ambiente do console, você pode escolher uma nova EC2 instância que exija conectividade de entrada ou uma nova EC2 instância sem entrada que não exija o seguinte:

  • Nova EC2 instância — Com essa configuração, o grupo de segurança da instância tem uma regra para permitir a entrada de tráfego de rede. O tráfego de rede de entrada é restrito aos Endereços IP aprovados para conexões do AWS Cloud9. Uma porta de entrada aberta permite AWS Cloud9 a conexão via SSH à sua instância. Se você usa o AWS Systems Manager Session Manager, você pode acessar sua EC2 instância Amazon por meio de SSM sem abrir portas de entrada (sem entrada). Esse método é aplicável somente para novas EC2 instâncias da Amazon. Para obter mais informações, consulte Benefícios do uso do Systems Manager para EC2 ambientes.

  • Computação existente — Com essa configuração, é acessada uma EC2 instância existente da Amazon que requer detalhes de login SSH para os quais a instância deve ter uma regra de grupo de segurança de entrada. Se você usar essa opção, o perfil de serviço será criado automaticamente. Você pode ver o nome do perfil de serviço em uma nota na parte inferior da tela de configuração.

Ao criar um ambiente usando o AWS CLI, você pode configurar uma EC2 instância sem entrada definindo a --connection-type CONNECT_SSM opção ao chamar o create-environment-ec2 comando. Para obter mais informações sobre como criar a função de serviço e o perfil da instância necessários, consulte Gerenciando perfis de instância para Systems Manager com o AWS CLI.

Depois de concluir a criação de um ambiente que usa uma EC2 instância sem entrada, confirme o seguinte:

Benefícios do uso do Systems Manager para EC2 ambientes

Permitir que o Session Manager gerencie a conexão segura entre AWS Cloud9 e sua EC2 instância oferece dois benefícios principais:

  • Não há necessidade de abrir portas de entrada para a instância

  • Opção para iniciar a instância em uma sub-rede pública ou privada

No open inbound ports

As conexões seguras entre AWS Cloud9 e sua EC2 instância são gerenciadas pelo Gerenciador de Sessões. O Session Manager é um recurso totalmente gerenciado do Systems Manager que permite conectar-se AWS Cloud9 à sua EC2 instância sem a necessidade de abrir portas de entrada.

Importante

Atualmente, a opção de usar o Systems Manager para conexões sem entrada está disponível somente ao criar novos EC2 ambientes.

Com o início de uma sessão do Session Manager, uma conexão é feita com a instância de destino. Com a conexão estabelecida, o ambiente agora pode interagir com a instância por meio do serviço Systems Manager. O serviço Systems Manager se comunica com a instância por meio do Systems Manager Agent (SSM Agent).

Por padrão, o SSM Agent é instalado em todas as instâncias usadas pelos EC2 ambientes.

Private/public subnets

Ao selecionar uma sub-rede para sua instância na seção Network settings (advanced) (Configurações de rede - avançado), você pode selecionar uma sub-rede privada ou pública se a instância do ambiente for acessada por meio do Systems Manager.

Seleção de uma nova EC2 instância sem entrada para seu ambiente

Sub-redes privadas

Para uma sub-rede privada, garanta que a instância ainda possa se conectar ao serviço SSM. Isso pode ser feito configurando um gateway NAT em uma sub-rede pública ou configurando um endpoint da VPC para o Systems Manager.

A vantagem de usar o gateway NAT é que ele impede que a Internet inicie uma conexão com a instância na sub-rede privada. A instância do seu ambiente recebe um endereço IP privado em vez de um público. Assim, o gateway NAT encaminha o tráfego da instância para a Internet ou outros AWS serviços e, em seguida, envia a resposta de volta para a instância.

Para a opção de VPC, crie pelo menos três endpoints de interface para o Systems Manager: com.amazonaws.region.ssm, com.amazonaws.region.ec2messages e com.amazonaws.region.ssmmessages. Para obter mais informações, consulte Criar um endpoint da VPC para o Systems Manager no Manual do usuário do AWS Systems Manager .

Importante

Atualmente, se a EC2 instância do seu ambiente for executada em uma sub-rede privada, você não poderá usar credenciais temporárias AWS gerenciadas para permitir que o EC2 ambiente acesse um AWS serviço em nome de uma AWS entidade (um usuário do IAM, por exemplo).

Sub-redes públicas

Se seu ambiente de desenvolvimento estiver usando SSM para acessar uma EC2 instância, certifique-se de que a instância tenha um endereço IP público atribuído pela sub-rede pública na qual ela foi lançada. Para fazer isso, você pode especificar seu próprio endereço IP ou habilitar a atribuição automática de um endereço IP público. Para obter as etapas envolvidas na modificação das configurações IP de atribuição automática, consulte Endereçamento IP na sua VPC no Manual do usuário da Amazon VPC.

Para obter mais informações sobre como configurar sub-redes públicas e privadas para as instâncias de ambiente, consulte Criar uma sub-rede para o AWS Cloud9.

Gerenciar permissões do Systems Manager

Por padrão, o Systems Manager não tem permissão para realizar ações em EC2 instâncias. O acesso é fornecido por meio de um perfil de instância AWS Identity and Access Management (IAM). (Um perfil de instância é um contêiner que passa as informações da função do IAM para uma EC2 instância na inicialização.)

Quando você cria a EC2 instância sem entrada usando o AWS Cloud9 console, tanto a função de serviço (AWSCloud9SSMAccessRole) quanto o perfil da instância do IAM (AWSCloud9SSMInstanceProfile) são criados automaticamente para você. (Você pode visualizar AWSCloud9SSMAccessRole no console de gerenciamento do IAM. Os perfis de instância não são exibidos no console do IAM).

Importante

Se você criar um EC2 ambiente sem entrada pela primeira vez com AWS CLI, deverá definir explicitamente a função de serviço e o perfil de instância necessários. Para obter mais informações, consulte Gerenciando perfis de instância para Systems Manager com o AWS CLI.

Importante

Se você estiver criando um AWS Cloud9 ambiente e usando o Amazon EC2 Systems Manager com AWSCloud9User as políticas AWSCloud9Administrator ou anexadas, você também deve anexar uma política personalizada que tenha permissões específicas do IAM, consultePolítica de IAM personalizada para criação de ambiente SSM. Isso ocorre devido a um problema de permissões com as políticas AWSCloud9Administrator e AWSCloud9User.

Para proteção adicional de segurança, a função AWS Cloud9 vinculada ao serviço,AWSServiceRoleforAWSCloud9, apresenta uma PassRole restrição em sua política. AWSCloud9ServiceRolePolicy Quando você aprova uma função do IAM para um serviço, ela permite que esse serviço assuma a função e realize ações em seu nome. Nesse caso, a PassRole permissão garante que AWS Cloud9 você possa passar somente a AWSCloud9SSMAccessRole função (e sua permissão) para uma EC2 instância. Isso restringe as ações que podem ser executadas na EC2 instância somente às exigidas pelo AWS Cloud9.

nota

Se você não precisar mais usar o Systems Manager para acessar uma instância, poderá excluir a função de serviço AWSCloud9SSMAccessRole. Para obter mais informações sobre como excluir uma função, consulte Excluir funções ou perfis de instância no Manual do usuário do IAM.

Gerenciando perfis de instância para Systems Manager com o AWS CLI

Você também pode criar um EC2 ambiente sem entrada com o. AWS CLI Quando você chamar create-environment-ec2, defina a opção do --connection-type para CONNECT_SSM.

Se você usar essa opção, a função de serviço do AWSCloud9SSMAccessRole e o AWSCloud9SSMInstanceProfile não serão criados automaticamente. Para criar o perfil de serviço necessário e o perfil de instância, realize um dos seguintes procedimentos:

  • Crie um EC2 ambiente usando o console depois de ter a função AWSCloud9SSMAccessRole de serviço e AWSCloud9SSMInstanceProfile criado automaticamente depois. Depois de criados, a função de serviço e o perfil da instância ficam disponíveis para qualquer EC2 ambiente adicional criado usando AWS CLI o.

  • Execute os AWS CLI comandos a seguir para criar a função de serviço e o perfil da instância.

    aws iam create-role --role-name AWSCloud9SSMAccessRole --path /service-role/ --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com","cloud9.amazonaws.com"] },"Action": "sts:AssumeRole"}]}' aws iam attach-role-policy --role-name AWSCloud9SSMAccessRole --policy-arn arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile aws iam create-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --path /cloud9/ aws iam add-role-to-instance-profile --instance-profile-name AWSCloud9SSMInstanceProfile --role-name AWSCloud9SSMAccessRole

Conceder acesso dos usuários à instância gerenciada pelo Session Manager.

Para abrir um AWS Cloud9 ambiente conectado a uma EC2 instância por meio do Systems Manager, o usuário deve ter permissão para a operação da API,StartSession. Essa operação inicia uma conexão com a EC2 instância gerenciada para uma sessão do Gerenciador de Sessões. Você pode conceder acesso aos usuários usando uma política gerenciada AWS Cloud9 específica (recomendada) ou editando uma política do IAM e adicionando as permissões necessárias.

Método Descrição

Política AWS Cloud9 gerenciada específica de uso

Recomendamos o uso de políticas AWS gerenciadas para permitir que os usuários acessem EC2 instâncias gerenciadas pelo Systems Manager. As políticas gerenciadas fornecem um conjunto de permissões para casos de AWS Cloud9 uso padrão e podem ser facilmente anexadas a uma entidade do IAM.

Todas as políticas gerenciadas também incluem as permissões para executar a operação da API StartSession. A seguir estão as políticas gerenciadas específicas para AWS Cloud9:

  • AWSCloud9Administrator (arn:aws:iam::aws:policy/AWSCloud9Administrator)

  • AWSCloud9User (arn:aws:iam::aws:policy/AWSCloud9User)

  • AWSCloud9EnvironmentMember (arn:aws:iam::aws:policy/AWSCloud9EnvironmentMember)

Importante

Se você estiver criando um AWS Cloud9 ambiente e usando o Amazon EC2 Systems Manager com AWSCloud9User as políticas AWSCloud9Administrator ou anexadas, você também deve anexar uma política personalizada que tenha permissões específicas do IAM, consultePolítica de IAM personalizada para criação de ambiente SSM. Isso ocorre devido a um problema de permissões com as políticas AWSCloud9Administrator e AWSCloud9User.

Para obter mais informações, consulte AWS políticas gerenciadas para AWS Cloud9.

Edite uma política do IAM e adicione declarações de política obrigatórias

Para editar uma política existente, você pode adicionar permissões para a API StartSession. Para editar uma política usando o AWS Management Console ou AWS CLI, siga as instruções fornecidas em Edição de políticas do IAM no Guia do usuário do IAM.

Ao editar a política, adicione o policy statement (veja abaixo) que permite que a operação da API do ssm:startSession seja executada.

Você pode usar as permissões a seguir para executar a operação de API StartSession. A chave de ssm:resourceTag condição especifica que uma sessão do Gerenciador de Sessões pode ser iniciada para qualquer instância (Resource: arn:aws:ec2:*:*:instance/*) com a condição de que a instância seja um ambiente de AWS Cloud9 EC2 desenvolvimento (aws:cloud9:environment).

nota

As seguintes políticas gerenciadas também incluem estas declarações da política: AWSCloud9Administrator, AWSCloud9User, e AWSCloud9EnvironmentMember.

{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloud9.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }

Usando AWS CloudFormation para criar ambientes sem entrada EC2

Ao usar um AWS CloudFormation modelo para definir um ambiente de EC2 desenvolvimento Amazon sem entrada, faça o seguinte antes de criar a pilha:

  1. Crie uma função de serviço AWSCloud9SSMAccessRole e um perfil da instância AWSCloud9SSMInstanceProfile. Para obter mais informações, consulte Criação de função de serviço e perfil de instância com um AWS CloudFormation modelo.

  2. Atualize a política para a chamada da entidade do IAM AWS CloudFormation. Dessa forma, a entidade pode iniciar uma sessão do Gerenciador de Sessões que se conecta à EC2 instância. Para obter mais informações, consulte Adicionar permissões do Systems Manager a uma política do IAM.

Criação de função de serviço e perfil de instância com um AWS CloudFormation modelo

Você precisa criar a função de serviço AWSCloud9SSMAccessRole e o perfil da instância AWSCloud9SSMInstanceProfile para permitir que o Systems Manager gerencie a EC2 instância que dá suporte ao seu ambiente de desenvolvimento.

Se você criou anteriormente AWSCloud9SSMAccessRole e AWSCloud9SSMInstanceProfile criou um EC2 ambiente sem entrada with the console ou executando AWS CLI comandos, a função de serviço e o perfil da instância já estão disponíveis para uso.

nota

Suponha que você tente criar uma AWS CloudFormation pilha para um EC2 ambiente sem entrada, mas não tenha criado primeiro a função de serviço e o perfil de instância necessários. A pilha não será criada e a seguinte mensagem de erro será exibida:

Perfil da instância O AWSCloud9 SSMInstance perfil não existe na conta.

Ao criar um EC2 ambiente sem entrada pela primeira vez usando AWS CloudFormation, você pode definir o AWSCloud9SSMAccessRole e AWSCloud9SSMInstanceProfile como recursos do IAM no modelo.

Este trecho de um modelo de exemplo mostra como definir esses recursos. A AssumeRole ação retorna credenciais de segurança que fornecem acesso ao AWS Cloud9 ambiente e à EC2 instância.

AWSTemplateFormatVersion: 2010-09-09 Resources: AWSCloud9SSMAccessRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: - cloud9.amazonaws.com - ec2.amazonaws.com Action: - 'sts:AssumeRole' Description: 'Service linked role for AWS Cloud9' Path: '/service-role/' ManagedPolicyArns: - arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile RoleName: 'AWSCloud9SSMAccessRole' AWSCloud9SSMInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: InstanceProfileName: AWSCloud9SSMInstanceProfile Path: "/cloud9/" Roles: - Ref: AWSCloud9SSMAccessRole

Adicionar permissões do Systems Manager a uma política do IAM

Depois de definir um perfil de serviço e um perfil de instância no modelo do AWS CloudFormation, verifique se a entidade do IAM que está criando a pilha tem permissão para iniciar uma sessão do Gerenciador de Sessões. Uma sessão é uma conexão feita com a EC2 instância usando o Gerenciador de Sessões.

nota

Se você não adicionar permissões para iniciar uma sessão do Gerenciador de Sessões antes de criar uma pilha para um EC2 ambiente sem entrada, um AccessDeniedException erro será retornado.

Adicione as seguintes permissões à política para a entidade do IAM que chama o AWS CloudFormation.

{ "Effect": "Allow", "Action": "ssm:StartSession", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "ssm:resourceTag/aws:cloud9:environment": "*" }, "StringEquals": { "aws:CalledViaFirst": "cloudformation.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "ssm:StartSession" ], "Resource": [ "arn:aws:ssm:*:*:document/*" ] }

Configurar endpoints de VPC para o Amazon S3 para baixar as dependências

Se a EC2 instância do seu AWS Cloud9 ambiente não tiver acesso à Internet, crie um VPC endpoint para um bucket específico do Amazon S3. Esse bucket contém as dependências necessárias para manter seu IDE up-to-date.

A configuração de um endpoint da VPC para o Amazon S3 também requer a personalização da política de acesso. A política de acesso deve permitir o acesso somente ao bucket do S3 confiável que contém as dependências a serem baixadas.

nota

Você pode criar e configurar VPC endpoints usando a API AWS Management Console,, AWS CLI ou Amazon VPC. O procedimento a seguir mostra como criar um endpoint da VPC usando a interface do console.

Crie e configure um endpoint da VPC para o Amazon S3

  1. Em AWS Management Console, acesse a página do console da Amazon VPC.

  2. Na barra de navegação, selecione Endpoints.

  3. No painel de navegação, escolha Endpoints, Create Endpoint (Criar endpoint).

  4. Na página Create Endpoint (Criar endpoint), digite “s3” no campo de pesquisa e pressione Return para listar os endpoints disponíveis para o Amazon S3 na Região da AWS:

  5. Na lista de endpoints do Amazon S3 retornados, selecione o tipo Gateway.

  6. Em seguida, escolha a VPC que contém a instância do EC2 seu ambiente.

  7. Agora escolha a tabela de rotas da VPC. Dessa forma, as sub-redes associadas poderão acessar o endpoint. A EC2 instância do seu ambiente está em uma dessas sub-redes.

  8. Na seção Policy (Política), selecione a opção Custom (Personalizada) e substitua a política padrão pela seguinte.

    { "Version": "2008-10-17", "Statement": [ { "Sid": "Access-to-C9-bucket-only", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::{bucket_name}/content/dependencies/*" } ] }

    Para o elemento Resource, substitua {bucket_name} pelo nome real do bucket que estiver disponível na sua Região da AWS. Por exemplo, se você estiver usando AWS Cloud9 na região Europa (Irlanda), você especifica o seguinte"Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/:.

    A tabela a seguir lista os nomes dos buckets para o Regiões da AWS where AWS Cloud9 is available.

    Buckets Amazon S3 em regiões AWS Cloud9
    Região da AWS Nome do bucket

    Leste dos EUA (Ohio)

    static-us-east-2-prod-static-1c3sfcvf9hy4m

    Leste dos EUA (N. da Virgínia)

    static-us-east-1-prod-static-mft1klnkc4hl

    Oeste dos EUA (Oregon)

    static-us-west-2-prod-static-p21mksqx9zlr

    Oeste dos EUA (Norte da Califórnia)

    static-us-west-1-prod-static-16d59zrrp01z0

    Africa (Cape Town)

    static-af-south-1-prod-static-v6v7i5ypdppv

    Ásia-Pacífico (Hong Kong)

    static-ap-east-1-prod-static-171xhpfkrorh6

    Ásia-Pacífico (Mumbai)

    static-ap-south-1-prod-static-ykocre202i9d

    Ásia-Pacífico (Osaka)

    static-ap-northeast-3-prod-static-ivmxqzrx2ioi

    Ásia-Pacífico (Seul)

    static-ap-northeast-2-prod-static-1wxyctlhwiajm

    Ásia-Pacífico (Singapura)

    static-ap-southeast-1-prod-static-13ibpyrx4vk6d

    Ásia-Pacífico (Sydney)

    static-ap-southeast-2-prod-static-1cjsl8bx27rfu

    Ásia-Pacífico (Tóquio)

    static-ap-northeast-1-prod-static-4fwvbdisquj8

    Canadá (Central)

    static-ca-central-1-prod-static-g80lpejy486c

    Europa (Frankfurt)

    static-eu-central-1-prod-static-14lbgls2vrkh

    Europa (Irlanda)

    static-eu-west-1-prod-static-hld3vzaf7c4h

    Europa (Londres)

    static-eu-west-2-prod-static-36lbg202837x

    Europa (Milão)

    static-eu-south-1-prod-static-1379tzkd3ni7d

    Europa (Paris)

    static-eu-west-3-prod-static-1rwpkf766ke58

    Europa (Estocolmo)

    static-eu-north-1-prod-static-1qzw982y7yu7e

    Oriente Médio (Bahrein)

    static-me-south-1-prod-static-gmljex38qtqx

    South America (São Paulo)

    static-sa-east-1-prod-static-1cl8k0y7opidt

    Israel (Tel Aviv)

    static-il-central-1-prod-static-k02vrnhcesue

  9. Escolha Criar Endpoint.

    Se você forneceu as informações de configuração corretas, uma mensagem exibirá o ID do endpoint que foi criado.

  10. Para verificar se o IDE pode acessar o bucket do Amazon S3, inicie uma sessão de terminal escolhendo Window (Janela), New Terminal (Novo terminal), na barra de menus. Depois execute o seguinte comando, substituindo {bucket_name} pelo nome do bucket para a sua região.

    ping {bucket_name}.s3.{region}.amazonaws.com.

    Por exemplo, se você criou um endpoint para um bucket do S3 na região Leste dos EUA (N. da Virgínia), execute o seguinte comando.

    ping static-us-east-1-prod-static-mft1klnkc4hl.s3.us-east-1.amazonaws.com

    Se o ping receber uma resposta, isso confirma que o IDE pode acessar o bucket e suas dependências.

Para obter mais informações sobre esse recurso, consulte Endpoints para Amazon S3 no AWS PrivateLink Guia.

Configurar endpoints da VPC para conectividade privada

Quando você iniciar uma instância em uma sub-rede com a opção access using Systems Manager (acessar usando o Systems Manager), seu grupo de segurança não terá uma regra de entrada para permitir o tráfego de rede de entrada. No entanto, o grupo de segurança tem uma regra de saída que permite o tráfego de saída da instância. Isso é necessário para baixar pacotes e bibliotecas necessários para manter o AWS Cloud9 IDE atualizado.

Para impedir o tráfego de saída e de entrada para a instância, crie e configure os endpoints da Amazon VPC para o Systems Manager. Com uma interface VPC endpoint (endpoint de interface), você pode se conectar a serviços fornecidos por. AWS PrivateLink AWS PrivateLink é uma tecnologia que pode ser usada para acessar privadamente a Amazon EC2 e o Systems Manager APIs usando endereços IP privados. Para configurar endpoints da VPC para usar o Systems Manager, siga as instruções fornecidas por este Knowledge Center resource (Recursos da Central de Conhecimento).

Atenção

Suponha que você configure um grupo de segurança que não permite tráfego de rede de entrada ou saída. Então, a EC2 instância que suporta seu AWS Cloud9 IDE não tem acesso à Internet. É necessário criar um endpoint do Amazon S3 para a VPC a fim de permitir acesso às dependências contidas em um bucket do S3 confiável. Além disso, alguns Serviços da AWS, como AWS Lambda, podem não funcionar conforme o esperado sem acesso à Internet.

Com AWS PrivateLink, há cobranças de processamento de dados para cada gigabyte processado por meio do VPC endpoint. Isso ocorre independentemente da origem ou do destino do tráfego. Para obter mais informações, consulte Definição de preço do AWS PrivateLink.