Acessar instâncias do EC2 sem entrada com o AWS Systems Manager - AWS Cloud9

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

Acessar instâncias do EC2 sem entrada com o AWS Systems Manager

Uma “instância do EC2 sem entrada” criada para um ambiente EC2 habilita o AWS Cloud9 para se conectar à instância do Amazon EC2 sem a necessidade de abrir portas de entrada nessa instância. Você pode selecionar a opção sem entrada ao criar um ambiente EC2 usando o console, a interface da linha de comando ou uma pilha do AWS CloudFormation.

Importante

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

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

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

  • Existing compute (Computação existente): com essa configuração, é acessada uma instância existente do Amazon EC2 que exige 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.

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

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

Benefícios do uso do Systems Manager para ambientes EC2

Permitir que o Session Manager manipule a conexão segura entre o AWS Cloud9 e a instância do EC2 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

Conexões seguras entre o AWS Cloud9 e a instância do EC2 são manipulados pelo Session Manager. O Session Manager é um recurso totalmente gerenciado do Systems Manager que permite ao AWS Cloud9 se conectar à instância do EC2 sem a necessidade de abrir portas de entrada.

Importante

No momento, a opção de usar o Systems Manager para conexões sem entrada está disponível somente quando você cria novos ambientes EC2.

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 ambientes do EC2.

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.

Selecionar uma nova instância do EC2 sem entrada para o 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 serviços da AWS, depois envia a resposta de volta à 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 instância do EC2 para o ambiente for iniciada em uma sub-rede privada, você não poderá usar as credenciais temporárias gerenciadas pela AWS para permitir que o ambiente EC2 acesse um serviço da AWS em nome de uma entidade da AWS (um usuário do IAM, por exemplo).

Sub-redes públicas

Se o ambiente de desenvolvimento estiver usando o SSM para acessar uma instância do EC2, certifique-se de que a instância tenha um endereço IP público atribuído pela sub-rede pública na qual foi iniciada. 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 Crie uma sub-rede para AWS Cloud9.

Gerenciar permissões do Systems Manager

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

Ao criar a instância do EC2 sem ingresso usando o console do AWS Cloud9, 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 ambiente EC2 sem entrada pela primeira vez com a AWS CLI, você deverá definir explicitamente a função de serviço e o perfil da instância necessários. Para obter mais informações, consulte Gerenciar perfis da instância para o Systems Manager com a AWS CLI.

Importante

Se você estiver criando um ambiente AWS Cloud9 e usando o Amazon EC2 Systems Manager com as políticas AWSCloud9Administrator ou AWSCloud9User anexas, você também deverá anexar uma política personalizada que tenha permissões específicas do IAM, consulte Polí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 de segurança adicional, o perfil vinculado ao serviço do AWS Cloud9, AWSServiceRoleforAWSCloud9, apresenta uma restrição PassRole na 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. Neste caso, a permissão PassRole garante que o AWS Cloud9 possa passar apenas a função AWSCloud9SSMAccessRole (e sua permissão) para uma instância do EC2. Isso restringe as ações que podem ser executadas na instância do EC2 a somente àquelas 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.

Gerenciar perfis da instância para o Systems Manager com a AWS CLI

Você também pode criar um ambiente EC2 sem ingresso com a 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 ambiente EC2 usando o console, depois que a função de serviço AWSCloud9SSMAccessRole e o AWSCloud9SSMInstanceProfile forem criados automaticamente. Depois que forem criados, a função de serviço e o perfil da instância estarão disponíveis para quaisquer ambientes EC2 adicionais criados usando a AWS CLI.

  • Execute o seguinte comando da AWS CLI 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 ambiente do AWS Cloud9 que está conectado a uma instância do EC2 por meio do Systems Manager, um usuário deve ter permissão para a operação da API, StartSession. Essa operação inicia uma conexão com a instância do EC2 gerenciada para uma sessão do Session Manager. Você pode conceder acesso aos usuários usando uma política gerenciada específica do AWS Cloud9 (recomendada) ou editando uma política do IAM e adicionando as permissões necessárias.

Método Descrição

Use a política gerenciada específica do AWS Cloud9

Recomendamos usar AWS políticas gerenciadas para permitir que os usuários acessem instâncias do EC2 gerenciadas pelo Systems Manager. As políticas gerenciadas fornecem um conjunto de permissões para casos de uso do AWS Cloud9 e podem ser facilmente anexados 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 do 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 ambiente AWS Cloud9 e usando o Amazon EC2 Systems Manager com as políticas AWSCloud9User ou AWSCloud9Administrator anexas, você também deve anexar uma política personalizada que tenha permissões específicas do IAM, consulte Polí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 a 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 condição ssm:resourceTag especifica que uma sessão do Session Manager pode ser iniciada para qualquer instância (Resource: arn:aws:ec2:*:*:instance/*) na condição de que a instância seja um ambiente de desenvolvimento EC2 do AWS Cloud9 (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/*" ] }

Usar o AWS CloudFormation para criar ambientes EC2 sem entrada

Ao usar um modelo do AWS CloudFormation para definir um ambiente de desenvolvimento sem entrada do Amazon EC2, 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 Criar função de serviço e um perfil da instância com um modelo do AWS CloudFormation.

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

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

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 instância do EC2 que apoia seu ambiente de desenvolvimento.

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

nota

Suponha que você tente criar uma pilha do AWS CloudFormation para um ambiente do EC2 sem entrada, mas não tenha criado antes o perfil 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:

O perfil da instância AWSCloud9SSMInstanceProfile não existe na conta.

Ao criar um ambiente EC2 sem entrada pela primeira vez usando o 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 ação AssumeRole retorna credenciais de segurança que fornecem acesso ao ambiente do AWS Cloud9 e à respectiva instância do EC2.

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 estabelecida com a instância do EC2 usando o Gerenciador de Sessões.

nota

Se você não adicionar permissões para iniciar uma sessão do Session Manager antes de criar uma pilha para um ambiente EC2 sem entrada, um erro AccessDeniedException 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 sua instância do EC2 do ambiente do AWS Cloud9 não tiver acesso à Internet, crie um endpoint da VPC para um bucket do Amazon S3 especificado. Esse bucket contém as dependências necessárias para manter o IDE atualizado.

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 endpoints da VPC usando o AWS Management Console, a AWS CLI ou a API da 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. No AWS Management Console acesse a página do console do 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 do ambiente.

  7. Agora escolha a tabela de rotas da VPC. Dessa forma, as sub-redes associadas poderão acessar o endpoint. A instância do EC2 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), especifique o seguinte: "Resource": "arn:aws:s3:::static-eu-west-1-prod-static-hld3vzaf7c4h/content/dependencies/.

    A tabela a seguir lista nomes de bucket para as Regiões da AWS em que o AWS Cloud9 está disponível.

    Buckets do Amazon S3 nas regiões da 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 (N. da Califórnia)

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

    África (Cidade do Cabo)

    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

    Asia Pacific (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

    América do Sul (São Paulo)

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

    Israel (Tel Aviv)

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

  9. Escolha Create Endpoint (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 do Amazon S3 no Manual do AWS PrivateLink.

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 os pacotes e bibliotecas necessários para manter o IDE do AWS Cloud9 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 um endpoint da VPC de interface (endpoint de interface), você pode se conectar a serviços com a tecnologia AWS PrivateLink. AWS PrivateLink é uma tecnologia que permite acessar de forma privada APIs do Amazon EC2 e do Systems Manager 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. A instância do EC2 que oferece suporte ao IDE do AWS Cloud9 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 o AWS Lambda, podem não funcionar como previsto sem acesso à Internet.

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