Ir para o conteúdo

Como faço para usar uma instância do Amazon EC2 como bastion host para me conectar a uma instância de banco de dados privada do Amazon RDS a partir de uma máquina local?

7 minuto de leitura
0

Quero usar uma instância do Amazon Elastic Compute Cloud (Amazon EC2) como um bastion host (jump) para me conectar a uma instância de banco de dados privada do Amazon Relational Database Service (Amazon RDS) a partir de uma máquina local.

Resolução

Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Para se conectar a uma instância de banco de dados privada do Amazon RDS ou do Amazon Aurora, é uma prática recomendada usar uma VPN ou o AWS Direct Connect. Se não for possível usar nenhuma dessas opções, use um bastion host.

O exemplo de configuração a seguir é para uma instância do Amazon RDS para MySQL que está em uma Amazon Virtual Private Cloud (Amazon VPC). O exemplo utiliza grupos de segurança para restringir o acesso. No entanto, é possível restringir a lista de controle de acesso à rede (ACL da rede) das sub-redes para tornar a conexão mais segura.

Execute e configure a instância do EC2

Conclua as etapas a seguir:

  1. Abra o console do Amazon EC2 e, em seguida, clique em Executar instância.
  2. Selecione uma imagem de máquina da Amazon (AMI).
  3. Selecione um tipo de instância e, em seguida, clique em Próximo: configurar os detalhes da instância.
  4. Em Rede, selecione a VPC que a instância de banco de dados do Amazon RDS usa.
  5. Em Sub-rede, selecione a sub-rede privada na VPC
  6. Clique em Próximo: adicionar armazenamento e, em seguida, modifique o armazenamento conforme necessário.
  7. Clique em Próximo: adicionar etiquetas e, em seguida, adicione etiquetas conforme necessário.
  8. Clique em Próximo: configurar grupo de segurança.
  9. Selecione Adicionar regra e, em seguida, insira o seguinte:
    Em Tipo, insira Regra TCP personalizada
    Em Protocolo, insira TCP
    Em Intervalo de portas, insira 22
    Em Origem, insira o grupo de segurança usado pelo seu endpoint de conexão do Amazon EC2.
  10. Clique em Revisar e executar e, em seguida, selecione Executar.

Configure os grupos de segurança da instância de banco de dados do Amazon RDS

Observação: para conectar automaticamente uma ou mais instâncias do EC2 a um banco de dados do Amazon RDS, consulte Opção 2: conectar automaticamente uma instância a um banco de dados do RDS usando o console do RDS.

Conclua as etapas a seguir:

  1. Abra o console do Amazon RDS.
  2. No painel de navegação, clique em Bancos de dados.
  3. Selecione o nome da instância de banco de dados do Amazon RDS. Se você ainda não tiver uma, crie uma instância de banco de dados do RDS.
  4. Clique em Conectividade e segurança.
  5. Na seção Segurança, selecione o link em Grupos de segurança da VPC.
  6. Selecione o grupo de segurança, clique em Ações, e em seguida, selecione Editar regras de entrada.
  7. Selecione Adicionar regra e, em seguida, insira o seguinte:
    Em Tipo, insira Regra TCP personalizada
    Em Protocolo, insira TCP
    Em Intervalo de portas, insira a porta da sua instância de banco de dados do Amazon RDS.
    Em Origem, insira o endereço IP privado da sua instância do EC2.
  8. Clique em Salvar.

Essa configuração para o grupo de segurança permite o tráfego do endereço IP privado da instância do EC2. Se a instância do EC2 e a instância de banco de dados do Amazon RDS usarem a mesma VPC, você não precisa modificar a tabela de rotas da instância de banco de dados do Amazon RDS. Se a VPC for diferente, crie uma conexão de emparelhamento da VPC para permitir conexões entre essas VPCs.

Observação: se você usa uma solução mais dimensionável, consulte sua configuração. Por exemplo, se você usar o ID do grupo de segurança em uma regra de grupo de segurança, certifique-se de que ela não restrinja o acesso a uma instância. Em vez disso, configure a regra para restringir o acesso a qualquer recurso que use o ID específico do grupo de segurança.

Crie um endpoint de conexão de instância do EC2

  1. Abra o console da Amazon VPC.
  2. No painel de navegação, selecione Endpoints.
  3. Selecione Criar endpoint e, em seguida, especifique as configurações do endpoint.
    (Opcional) Em Tag de nome, insira um nome para o endpoint.
    Em Categoria de serviço, clique em Endpoint EC2 Instance Connect.
    Em VPC, selecione a VPC que tem as instâncias de destino.
    (Opcional) Para preservar os endereços IP do cliente, expanda Configurações adicionais e selecione a caixa de seleção. Caso contrário, o padrão é usar a interface de rede do endpoint como o endereço IP do cliente.
    Em Grupos de segurança, selecione o grupo de segurança que você deseja associar ao endpoint. Caso contrário, o padrão é usar o grupo de segurança padrão para a VPC.
    Em Sub-rede, selecione a sub-rede na qual será criado o endpoint.
    (Opcional) Para adicionar uma tag, clique em Adicionar nova tag e insira sua chave e o seu valor.
  4. Consulte suas configurações e, em seguida, selecione Criar endpoint.
  5. O status inicial do endpoint é Pendente. Para se conectar a uma instância, você deve esperar até que o status do endpoint seja Disponível. Isso pode levar alguns minutos.

Conecte-se à instância de banco de dados do RDS a partir de sua máquina local

Observação: você deve ter acesso à AWS CLI.

Para se conectar a partir do seu cliente MySQL local a uma instância privada do RDS por meio de um túnel SSH, conclua as seguintes etapas:
Linux ou macOS

  1. Execute o comando a seguir para abrir um túnel da máquina local para a instância do EC2:

    aws ec2-instance-connect open-tunnel --instance-id ec2-instance-ID --local-port 8888

    Observação: substitua ec2-instance-ID pelo seu ID de instância do EC2.

  2. Abra uma segunda conexão e execute o comando a seguir para criar um túnel SSH do seu host local para o seu banco de dados do RDS por meio de uma instância do EC2:

    ssh -i YOUR_EC2_KEY EC2_USER@EC2_HOST -p EC2_TUNNEL_PORT -L LOCAL_PORT:RDS_ENDPOINT:REMOTE_PORT -N -f

    Observação: substitua os seguintes valores:
    YOUR_EC2_KEY pelo caminho para seu arquivo de chave privada do EC2
    EC2_USER pelo seu nome de usuário da instância do EC2
    EC2_HOST pelo nome do host da sua instância do EC2
    EC2_TUNNEL_PORT pela porta que você configurou
    LOCAL_PORT por uma porta não utilizada em sua máquina local
    RDS_ENDPOINT pelo endpoint da sua instância do RDS
    REMOTE_PORT pela porta que seu banco de dados do Amazon RDS usa na instância do RDS.

  3. Use uma terceira conexão e execute o seguinte comando para se conectar à sua instância do Amazon RDS a partir da sua máquina local:

    mysql -h 127.0.0.1 -P LOCAL_PORT -u RDS_USER -p

    Observação: substitua os seguintes valores:
    LOCAL_PORT pelo número da sua porta local
    DB_USER pelo seu nome de usuário do banco de dados do RDS
    DB password pela senha de banco de dados do Amazon RDS

Informações relacionadas

Como soluciono problemas ao me conectar à minha instância de banco de dados Amazon RDS?

Executar uma instância do Amazon EC2

Como faço para usar uma instância do Amazon EC2 como bastion host para me conectar a uma instância de banco de dados privada do Amazon RDS a partir de uma máquina local?

Sem comentários