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 host bastion (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 erros 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 você não puder usar nenhuma das 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, você pode restringir a lista de controle de acesso à rede (ACL da rede) das sub-redes para tornar a conexão mais segura.

Inicialize e configure a instância do EC2

Execute as seguintes etapas:

  1. Abra o console do Amazon EC2 e, em seguida, escolha instância de Inicialização.
  2. Selecione uma imagem de máquina da Amazon (AMI).
  3. Escolha um tipo de instância e, em seguida, escolha Avançar: configure os Detalhes da instância.
  4. Em Rede, escolha a VPC que a instância de banco de dados Amazon RDS usa.
  5. Em Sub-rede, selecione a sub-rede privada na VPC
  6. Escolha Avançar: Adicione Armazenamento e, em seguida, modifique o armazenamento conforme necessário.
  7. Escolha Avançar: Adicione Tags e, em seguida, adicione tags conforme necessário.
  8. Escolha Avançar: Configure o Grupo de segurança.
  9. Escolha 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. Escolha Revisar e Inicializar e, em seguida, escolha Inicializar.

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

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

Execute as seguintes etapas:

  1. Abra o console do Amazon Aurora e do RDS.
  2. No painel de navegação, clique em Bancos de dados.
  3. Escolha o nome da instância de banco de dados Amazon RDS. Se você ainda não tiver uma, crie uma instância de banco de dados RDS.
  4. Escolha Conectividade e segurança.
  5. Na seção Segurança, escolha o link em Grupos de segurança da VPC.
  6. Selecione o grupo de segurança, escolha Ações, e em seguida, escolha Editar regras de entrada.
  7. Escolha 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 Amazon RDS.
    Em Origem, insira o endereço IP privado da sua instância do EC2.
  8. Escolha 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 Amazon RDS usarem a mesma VPC, você não precisará modificar a tabela de rotas da instância de banco de dados 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 escalável, revise sua configuração. Por exemplo, se você usar a 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 a ID específica 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, escolha Endpoints.
  3. Escolha Criar endpoint e, em seguida, especifique as configurações do endpoint.
    (Opcional) Em Tag de nome, insira um nome para o endpoint.
    Para a Categoria de serviço, escolha Endpoint de conexão da instância do EC2.
    Para 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 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, escolha Adicionar nova tag e insira a chave e o valor da tag.
  4. Revise suas configurações e, em seguida, escolha 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 ao 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, execute 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 o 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 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 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 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 RDS DB
    DB password pela senha de banco de dados Amazon RDS

Informações relacionadas

Como resolvo problemas quando estou me conectando com minha instância de banco de dados do Amazon RDS?

Inicialize uma instância do Amazon EC2

Como posso me conectar a uma instância de banco de dados privada do Amazon RDS de uma máquina local usando uma instância do Amazon EC2 como bastion host?

AWS OFICIALAtualizada há 2 anos
Sem comentários