Como se conectar a um banco de dados AWS RDS (implantado em VPC) com um cliente SQL?

4

Sou novo no AWS e estou tentando configurar e inicializar uma instância do RDS. Como tenho uma conta recém-criada, ela não suporta o EC2-Classic, que (pelo que entendi) significa que minha instância do RDS deve ser implantada em uma sub-rede privada em um VPC. No entanto, depois que a instância do RDS é criada, como posso me conectar a ela do mundo externo? Entendo que posso me conectar a ele a partir das sub-redes públicas em meu VPC, para que meus servidores de aplicativos possam usar o banco de dados sem problemas. No entanto, eu quero ser capaz de dizer, inicie o Squirrel ou algum outro cliente da GUI para inicializar o esquema ou adicionar colunas e tabelas à medida que meu aplicativo cresce. Como posso fazer isso se for necessário para viver em uma sub-rede privada?

    
por matt forsythe 30.11.2014 / 07:44

2 respostas

9

Uma solução (mas não a única solução!) é usar o que é chamado de Bastion Host. Um Bastion Host é um servidor com capacidade muito baixa que fica em sua sub-rede pública e é o único servidor que permite conexões SSH de entrada.

Este servidor deve ser completamente protegido, e dependendo do seu nível de paranóia, existem algumas técnicas que você pode usar para esconder o fato de que este servidor está escutando conexões SSH. Veja, por exemplo, o link . Claro, você não precisa endurecê-lo apenas para se conectar à sua instância do RDS.

De qualquer forma, você pode configurar suas regras do EC2 Security Group da seguinte forma:

  • O Grupo de segurança do host Bastion permite a porta 22 somente do seu IP local (para que você possa fazer SSH, mas ninguém mais pode)
  • O Grupo de segurança do RDS permite que as conexões do banco de dados que chegam na porta X (dependem do seu banco de dados) somente do host de bastiões

A propósito, você pode conseguir "somente do Bastion Host" especificando o endereço IP privado do seu Bastion Host, ou listando o nome do grupo de segurança que o Bastion Host usa.

Agora você tem duas opções aqui:

OPÇÃO # 1: configure o encaminhamento de porta local como parte de sua conexão SSH

Por exemplo, se você estiver no OS X ou Linux, conecte o SSH ao host bastião e configure o encaminhamento de porta local com:

ssh -l <bastion-host-username> -L <local-port-you-connect-to>:<rds-private-ip>:<rds:listening-port> <bastion-host-public-ip>

E digamos que você esteja se conectando ao Postgres a partir de um Bastion Host baseado no Ubuntu. Pode parecer assim:

ssh -l ubuntu -L 5432:<rds-private-ip>:5432 <bastion-host-public-ip>

Sua máquina local agora está ouvindo na porta 5432 e encaminhará qualquer uma dessas conexões para <bastion-host-public-ip> , que por sua vez a encaminhará para a porta 5432 on <rds-private-ip>

OPÇÃO # 2: procure por esse recurso no seu cliente de banco de dados

Eu sei que o DBVisualizer suporta isso. Não tenho certeza sobre o Squirrel. Basicamente, em vez de configurar manualmente o encaminhamento de porta local usando o SSH, seu cliente SQL lida com isso para você.

    
por 01.12.2014 / 00:31
0

Isso funcionou para mim. Certifique-se de ter cliente psql instalado localmente.

psql --host=myAwsDbEndpointUrl.ciqykqusf0nv.us-west-1.rds.amazonaws.com --port=5432 --username=myUserName --password --dbname=myDbName

Ao criar sua instância db no aws, defina o seguinte:

  1. nome de usuário
  2. senha
  3. nome do banco de dados
  4. número da porta

Também tive que criar um grupo de segurança para o VPC no qual o banco de dados estava localizado. Depois de criá-lo, verifique se a instância do db usa isso para o grupo de segurança. O grupo de segurança tem as seguintes regras:

inbound--> type:PostgreSQL, protocol:TCP port range:5432, source:0.0.0.0/0

outbound--> type:All Traffic, protocol:All, port range:all, destination:0.0.0.0/0
    
por 04.01.2017 / 22:25