Configurar o EC2 Instance Connect
Para usar o EC2 Instance Connect para se conectar a uma instância, você precisa configurar todas as instâncias compatíveis com uma conexão usando o Instance Connect (é um requisito único para cada instância) e será necessário conceder permissão para todas as entidades principais do IAM que usarem o Instance Connect. Depois de concluir as tarefas de configuração a seguir, é possível se conectar à sua instância usando EC2 Instance Connect.
Tarefas para configurar o EC2 Instance Connect
Para obter mais informações sobre como configurar o EC2 Instance Connect, consulte Proteger os bastion hosts com o Amazon EC2 Instance Connect
Limitações
-
É possível instalar o EC2 Instance Connect nas seguintes distribuições compatíveis do Linux:
Amazon Linux 2 (qualquer versão)
Ubuntu 16.04 ou posterior
-
Se você definiu as configurações de
AuthorizedKeysCommand
eAuthorizedKeysCommandUser
para a autenticação SSH, a instalação do EC2 Instance Connect não as atualizará. Consequentemente, não será possível usar o Instance Connect.
Pré-requisitos para a instalação EC2 Instance Connect
-
Verifique os pré-requisitos gerais para se conectar à instância usando SSH.
Para mais informações, consulte Pré-requisitos gerais para conectar-se à instância.
-
Instale um cliente SSH no computador local.
É muito provável que seu computador local tenha um cliente SSH instalado por padrão. É possível verificar se existe um cliente SSH digitando ssh na linha de comando. Se o seu computador local não reconhecer o comando, será possível instalar um cliente SSH. Para obter informações sobre como instalar um cliente SSH no Linux ou macOS X, consulte http://www.openssh.com
. Para obter informações sobre como instalar um cliente SSH no Windows 10, consulte OpenSSH no Windows . -
Instale a AWS CLI no computador local.
Para configurar as permissões do IAM, é necessário usar a AWS CLI. Para obter informações sobre como instalar ou atualizar a AWS CLI, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.
-
(Ubuntu) Instale a AWS CLI em sua instância.
Para instalar o EC2 Instance Connect em uma instância do Ubuntu, use a AWS CLI na instância. Para obter informações sobre como instalar ou atualizar a AWS CLI, consulte Instalar a AWS CLI no Guia do usuário da AWS Command Line Interface.
Tarefa 1: configurar o acesso à rede para uma instância
É necessário configurar o seguinte acesso à rede para que seus usuários possam se conectar à instância usando EC2 Instance Connect:
-
Caso seus usuários acessem sua instância pela Internet, ela deverá ter um endereço IP público e estar em uma sub-rede pública. Para obter mais informações, consulte Habilitar o acesso à Internet no Manual do usuário da Amazon VPC.
-
Caso seus usuários acessem a instância por meio do endereço IP privado da instância, você deverá estabelecer uma conectividade de rede privada com sua VPC por meio do AWS Direct Connect, do AWS Site-to-Site VPN ou do emparelhamento da VPC, para que os usuários possam acessar o endereço IP privado da instância.
-
Certifique-se de que o grupo de segurança associado à sua instância permita tráfego SSH de entrada na porta 22 a partir do seu endereço IP ou da rede. O grupo de segurança padrão para a VPC não permite o tráfego SSH de entrada por padrão. O grupo de segurança criado pelo assistente de execução permite o tráfego SSH de entrada por padrão. Para mais informações, consulte Autorizar tráfego de entrada para suas instâncias do Linux.
-
(Console do Amazon EC2) Certifique-se de que o grupo de segurança associado à instância permita tráfego SSH de entrada da faixa de endereços IP para esse serviço. Para identificar o intervalo de endereços, faça download do arquivo JSON fornecido pela AWS e filtre para o subconjunto do EC2 Instance Connect, usando
EC2_INSTANCE_CONNECT
como valor do serviço. Para obter mais informações sobre como fazer download do arquivo JSON e filtrar por serviço, consulte Intervalos de endereços IP da AWS em Referência geral da Amazon Web Services.
Tarefa 2: (condicional) instalar o EC2 Instance Connect em uma instância
É possível ignorar essa tarefa, caso tenha usado uma das seguintes AMIs para iniciar sua instância, pois elas vêm pré-instaladas com o EC2 Instance Connect:
-
Amazon Linux 2 2.0.20190618 ou posterior
-
Ubuntu 20.04 ou posterior
Para versões anteriores dessas AMIs, você deverá instalar o Instance Connect em todas as instâncias que vão oferecer suporte à conexão usando o Instance Connect.
Instalar o Instance Connect configura o daemon SSH na instância. O procedimento de instalação do Instance Connect é diferente para instâncias em execução que usem o Amazon Linux 2 e o Ubuntu.
Para obter mais informações sobre o pacote do EC2 Instance Connect, consulte aws/aws-ec2-instance-connect-config
Tarefa 3: (opcional) instalar a EC2 Instance Connect CLI no seu computador
A CLI do EC2 Instance Connect fornece uma experiência simplificada para se conectar a instâncias do EC2 por meio de um único comando, mssh
. Para mais informações, consulte Conectar-se usando a CLI do EC2 Instance Connect.instance_id
Não há necessidade de instalar a CLI do EC2 Instance Connect se os usuários forem utilizar apenas o console do Amazon EC2 ou um cliente SSH para se conectar a uma instância.
Como instalar o pacote da CLI do EC2 Instance Connect
Use pip
para instalar o pacote ec2instanceconnectcli
. Para obter mais informações, consulte aws/aws-ec2-instance-connect-cli
$
pip install ec2instanceconnectcli
Tarefa 4: configurar permissões do IAM para o EC2 Instance Connect
Para que os principais do IAM se conectem a uma instância usando o EC2 Instance Connect, é necessário conceder a eles a permissão necessária para enviar a chave pública para a instância. Conceda a eles a permissão criando uma política do IAM e anexando a política aos principais do IAM que exigem a permissão. Para obter mais informações, consulte Ações, recursos e chaves de condição para o Amazon EC2 Instance Connect.
As instruções a seguir explicam como criar a política e anexá-la a um usuário do IAM usando a AWS CLI. A mesma política pode ser aplicada a outros principais do IAM como funções do IAM. Para obter instruções que usam o AWS Management Console, consulte Creating IAM policies (console) (Criar políticas do IAM (console)), Adding permissions by attaching poicies directly to the user (Adicionar permissões anexando políticas diretamente ao usuário) e Creating IAM roles (Ciar funções do IAM) no IAM User Guide (Guia do usuário do IAM).
Para conceder uma permissão do principal do IAM para EC2 Instance Connect (AWS CLI)
-
Crie um documento de política JSON que inclua o seguinte conteúdo para a nova política:
-
A ação
ec2-instance-connect:SendSSHPublicKey
. Isso concede ao principal do IAM permissão para enviar a chave pública a uma instância. Comec2-instance-connect:SendSSHPublicKey
, considere restringir o acesso a instâncias do EC2 específicas. Caso contrário, todos os principais do IAM com essa permissão poderão se conectar a todas as instâncias do EC2. Também é possível restringir o acesso especificando ARNs de recursos ou usando tags de recurso como chaves de condição. -
A condição
ec2:osuser
. Isso especifica o nome do usuário do sistema operacional que pode enviar por push a chave pública a uma instância. Use o nome de usuário padrão para a AMI que você usou para executar a instância. O nome de usuário padrão para o Amazon Linux 2 éec2-user
eubuntu
, para o Ubuntu. -
A ação
ec2:DescribeInstances
. Isso é necessário ao usar a CLI do EC2 Instance Connect porque o wrapper chama essa ação. Os principais do IAM talvez já tenham permissão para chamar essa ação a partir de outra política.
Veja abaixo um exemplo de documento de política. É possível omitir a instrução para a ação
ec2:DescribeInstances
se os seus usuários usarem somente um cliente SSH para se conectar às instâncias. É possível substituir as instâncias especificadas emResource
pelo curinga*
para conceder aos usuários o acesso a todas as instâncias do EC2 usando o EC2 Instance Connect.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2-instance-connect:SendSSHPublicKey", "Resource": [ "arn:aws:ec2:
region
:account-id
:instance/i-1234567890abcdef0
", "arn:aws:ec2:region
:account-id
:instance/i-0598c7d356eba48d7
" ], "Condition": { "StringEquals": { "ec2:osuser": "ami-username
" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }A política anterior permite o acesso a instâncias específicas, identificadas por seu ID de instância. Como alternativa, é possível usar tags de recurso para controlar o acesso a uma instância. O controle de acesso por atributo é uma estratégia de autorização que define permissões de acordo com tags que podem ser anexadas a usuários e a recursos da AWS. Por exemplo, a política a seguir permite que um usuário do IAM acesse uma instância somente se essa instância tiver uma tag de recurso com chave=
tag-key
e valor=tag-value
. Para obter mais informações sobre como usar tags para controlar o acesso aos recursos da AWS, consulte Controle do acesso aos recursos da AWS no Guia do usuário do IAM.{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ec2-instance-connect:SendSSHPublicKey", "Resource": "arn:aws:ec2:
region
:account-id
:instance/*
", "Condition":{ "StringEquals":{ "aws:ResourceTag/tag-key
":"tag-value
" } } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] } -
-
Use o comando create-policy para criar uma nova política gerenciada e especifique o documento JSON que você criou para usar como conteúdo para a nova política.
$
aws iam create-policy --policy-name
my-policy
--policy-document file://JSON-file-name
-
Use o comando attach-user-policy para associar a política gerenciada especificada ao usuário do IAM especificado. No parâmetro
--user-name
, especifique o nome amigável (não o ARN) do usuário do IAM.$
aws iam attach-user-policy --policy-arn arn:aws:iam::
account-id
:policy/my-policy
--user-nameIAM-friendly-name