Amazon RDS Proxy

Amazon RDS Proxy
A Amazon RDS Proxy é um serviço de proxy de banco de dados para a AWS RDS para melhorar a escalabilidade, disponibilidade, segurança e resiliência dos aplicativos. Este é um excelente benefício para aplicações com muitas conexões abertas com o banco de dados e a abertura e fechamento frequentes dessas conexões. Com o proxy da AWS RDS, precisamos manter menos conexões com o banco de dados.

Uma ótima característica do proxy do RDS é que ele é totalmente gerenciado. Ao contrário dos servidores de proxy tradicionais, você não precisa manter a dor de cabeça de implantar, gerenciar e corrigi -los com as novas atualizações. É um aplicativo sem servidor e escala automaticamente para se ajustar às suas necessidades.

O proxy do Amazon RDS pode ser usado para aplicativos com base na arquitetura sem servidor e naqueles que estão em execução em contêineres no ECS ou EC2.

Como funciona o proxy RDS?

Com esse recurso, os aplicativos podem agrupar e compartilhar suas conexões de banco de dados. Em vez de conectar seu aplicativo diretamente ao banco de dados RDS, conectamos -o ao proxy RDS. A Amazon RDS Proxy atua como um mediador de conexão entre o código do seu aplicativo e a instância do RDS DB. Ele se reserva um pool de conexões estabelecidas com o banco de dados, que pode ser reutilizado e compartilhado com outros clientes. Dessa forma, apenas algumas conexões são estabelecidas para o banco de dados, reduzindo assim a nova carga de conexão no banco de dados.

No caso de um failover de banco de dados, o proxy RDS re-redigem os pedidos diretamente para a nova instância do DB. Outro grande benefício é que podemos configurar a autenticação do IAM para a segurança do banco de dados sem a necessidade de colocar as credenciais do banco de dados diretamente no código do aplicativo. Ele também tem a disposição de usar o AWS Secrets Manager para gerenciar credenciais de banco de dados centralmente.

Configuração experimental

Para demonstrar como o AWS RDS Proxy funciona, configuraremos um ambiente de trabalho com os seguintes recursos de rede:

  1. Um VPC da AWS contém uma instância do RDS DB e uma instância do EC2. (Estamos usando o VPC padrão fornecido pela AWS).
  2. Mínimo de duas sub -redes e um gateway da Internet
  3. Pelo menos duas sub -redes em diferentes zonas de disponibilidade.

Para fazer este guia compacto, não descreveremos como configurar uma instância EC2 e RDS, pois são relativamente simples. Também criamos um usuário do IAM com a Política de AdministratorAccess. As etapas significativas deste guia são descritas aqui:

  1. Criação de grupos de segurança e verificando a conectividade do banco de dados.
  2. Usando o AWS Secret Manager para lidar com credenciais de banco de dados.
  3. Criando um papel de IAM e definindo uma política para permitir que o proxy do RDS acesse segredos criados com o AWS Secret Manager.
  4. Criando e configurando o proxy RDS.
  5. Conectando -se à instância do RDS DB via RDS Proxy.

Introdução com RDS Proxy

Eu acho que o cenário geral deve agora ser liberado para o leitor. A imagem abaixo mostra a visão geral deste guia:

Criação de grupos de segurança e verificando a conectividade do banco de dados.

Passo 1. Navegue até a seção AWS VPC e, na coluna 'Segurança', selecione Grupos de segurança no painel de navegação no lado esquerdo:

Passo 2. Agora clique no botão 'Criar grupo de segurança' e adicione um grupo de segurança (aqui 'EC2_SECGRP') para a instância do EC2. Digite os detalhes básicos de acordo com sua escolha:

Adicione uma regra de entrada para permitir a conexão SSH de entrada (recebimento) ao EC2. Adicione uma regra de saída para permitir qualquer tráfego de saída (saída) da instância do EC2.

Adicione outro grupo de segurança (aqui 'RDS_SECGRP') para a instância do RDS e digite os detalhes básicos:

Adicione uma regra de entrada para permitir apenas a conexão TCP na instância do RDS DB (na porta 3306) da instância do EC2 (especifique o EC2_SECGRP na fonte). Adicione outra regra de entrada para permitir apenas a conexão TCP na instância do RDS DB (na porta 3306) do proxy (especifique proxy_secgrp na fonte). Adicione a regra de saída para permitir qualquer tráfego de saída (saída) da instância do RDS.

Da mesma forma, adicione mais um grupo de segurança para proxy (proxy_secgrp) e digite os detalhes básicos:

Os três grupos de segurança que criamos estão agora disponíveis:

Ao selecionar qualquer grupo de segurança, você pode ver seus detalhes:

1) EC2_SECGRP: anexado à instância do EC2.

2) rds_secgrp: anexado com a instância RDS.

3) proxy_secgrp: anexado com o proxy.

etapa 3. Agora vá para o painel RDS e selecione sua instância de DB de alvo RDS (aqui 'db-linuxhint'). Na guia 'Conectividade e segurança', encontre o terminal para a instância do banco.

Passo 4. Vá para o painel EC2 e selecione a instância do EC2 da qual você deseja se conectar à instância do RDS DB. Selecione a opção 'Connect':

Etapa 5. No assistente 'Connect to Instância', escolha a opção 'EC2 Instância Connect', que é uma conexão SSH baseada em navegador:

Uma nova janela do navegador será aberta quando você selecionar o botão 'Connect', como mostrado aqui:

Etapa 6. A partir desta janela da CLI, use o formato de comando abaixo para testar a conectividade EC2 com a instância do RDS DB:

$ mysql -h -P 3306 -u -p

Use o ponto final do seu RDS DB Instância no lugar do 'RDS DB Endpoint' e o nome do usuário do banco de dados no lugar de 'Nome de usuário' ('admin' no nosso caso). Digite a senha do banco de dados quando solicitado. Quando a autenticação for bem -sucedida, você verá o prompt do MySQL na CLI:

Usando o AWS Secret Manager para lidar com credenciais de banco de dados.

Para que o proxy RDS possa se conectar ao usuário do banco de dados, o usuário do banco de dados precisa de um segredo no AWS Secrets Manager. Esses segredos são usados ​​pelo proxy RDS para lidar com um pool de conexão de banco de dados.

Passo 1. Vá para a seção 'Gerente de segredos' do console da AWS e selecione 'armazenar um novo segredo':

Passo 2. Na janela 'Escolha o tipo secreto', selecione as credenciais da opção 'para o banco de dados RDS.'Na subseção abaixo, insira o nome de usuário e a senha do usuário do seu banco de dados:

etapa 3. Em seguida, no menu suspenso 'Selecione a chave de criptografia', escolha 'DefaultEncryPtionKey' e selecione o DB de alvo RDS para o qual você está configurando o segredo para acessar. Clique em Avançar.

Passo 4. Agora dê um nome adequado ao seu segredo e uma breve descrição para ele (opcional).

Etapa 5. Estamos pulando as tags e opções automáticas de rotação secreta; Por enquanto, clique em Avançar:

Etapa 6. Você pode ver algumas configurações relacionadas ao segredo e a algum código de exemplo. Apenas pule -os e continue a salvar seu segredo, pressionando o botão 'Store':

Quando as etapas acima forem feitas, seu nome secreto aparecerá na página do Secrets Manager. A partir dos detalhes secretos, copie o arn do seu segredo, que precisaremos mais tarde.

Criando um papel de IAM e definindo uma política para permitir que o proxy do RDS acesse segredos criados com o AWS Secret Manager.

Passo 1. Vá para o painel do IAM e do painel esquerdo, escolha 'Papunos' e selecione 'Criar função':

etapa 3. Das múltiplas opções sob o Cabeço 'RDS', selecione 'RDS - Adicionar função ao banco de dados':

Passo 4. Agora escolha 'Next' e insira o botão 'Criar política'. Um novo navegador será aberto aqui; Selecione a guia JSON e substitua as declarações de política já pela seguinte:


"Versão": "2012-10-17",
"Declaração": [

"Sid": "visualizador0",
"Efeito": "permitir",
"Ação": [
"SecretsManager: getrandompassword",
"SecretsManager: CreateSecret",
"SecretsManager: ListSecrets"
],
"Recurso": "*"
,

"Sid": "visualizador1",
"Efeito": "permitir",
"Ação": "SecretsManager:*",
"Recurso": [
"Put_your_secret_arn_here"
]

]

Basta substituir o rótulo 'put_your_secret_arn_here' pelo valor secreto do ARN no seu caso. Adicione tags (opcional) e continue selecionando 'Política de revisão' e dê um nome ('RDS-Proxy-Policy' no nosso caso) à sua política e pressione o botão 'Criar política'.

Etapa 5. Depois de configurar sua política, retorne à janela 'Funções' no navegador e escolha o botão 'Atualizar' e pesquisar e selecione a política que você acabou de criar:

Etapa 6. Agora dê um nome à sua função e uma breve descrição e, opcionalmente, você pode adicionar as tags aqui. Continue selecionando 'Avançar: Revisão' e finalmente selecione 'Criar função.'Seu papel está agora criado:

Criando e configurando o proxy RDS.

Agora é hora de criar e configurar o Proxy RDS, que finalmente utilizará nosso grupo de segurança RDS_SECGRP, o segredo e o papel que criamos acima.

Passo 1. Vá para o painel RDS e selecione 'Proxies' e selecione 'Criar proxy':

Passo 2. Dentro do assistente 'Criar proxy', primeiro precisamos dar um nome ou identificador ao proxy, que é 'proxy-lh' no nosso caso.

etapa 3. Desmarcar a caixa correspondente a 'requer segurança da camada de transporte.'

Passo 4. Mantenha o valor de 'tempo de conexão do cliente ocioso' para o valor padrão de 30 minutos.

Etapa 5. Em Configuração do grupo-alvo, 'Selecione sua instância de DB de RDS de destino no menu suspenso do banco de dados.

Etapa 6. Mantenha o valor de 'Pool de conexões de conexão', valor do valor padrão de '100':

Etapa 7. Na seção de conectividade, existem vários campos:

  1. Secrets Manager Secret: Aqui, selecione o segredo que criamos anteriormente neste guia (cabeçalho 1).
  2. Papel: Escolha o papel que criamos anteriormente (rígido 2).
  3. Iam Autenticação: Desativado por enquanto.
  4. Subnets: selecione pelo menos duas sub -redes em diferentes zonas de disponibilidade.
  5. Configuração adicional de conectividade (grupo de segurança VPC): aqui, use o grupo de segurança 'proxy_secgrp'.

Etapa 8. Sob a 'configuração avançada', verifique o 'Loging Enhanced' e, finalmente, selecione 'Criar proxy.'

Agora, aguarde o proxy estar disponível e, quando terminar, copie o terminal de proxy para testar a conectividade do EC2.

Conectando -se à instância do RDS DB via RDS Proxy.

Agora vamos verificar a conectividade de nossa instância de db de RDS do EC2.

Passo 1. Vá para o painel de gerenciamento do EC2, selecione Instâncias e selecione sua instância de destino EC2 de onde nos conectaremos à instância do RDS DB. Escolha 'Connect.'

Passo 2. No assistente 'Connect to Instância', escolha a opção 'EC2 Instância Connect', que é uma conexão SSH baseada em navegador:

Uma nova janela do navegador será aberta quando você selecionar o botão 'Connect' como anterior neste tutorial.

etapa 3. A partir desta janela da CLI, use o formato de comando abaixo para testar a conectividade EC2 com a instância do RDS DB por meio do endpoint do RDS Proxy:

$ mysql -h -P 3306 -u -p

Use seu endpoint do RDS Proxy no lugar do 'Proxy Endpoint' e o nome do usuário do banco de dados no lugar de 'Nome de usuário.'Digite a senha do banco de dados quando solicitado. Quando a autenticação for bem -sucedida, você verá o prompt do MySQL na CLI:

Conclusão

Neste guia, aprendemos sobre a criação de um proxy RDS na AWS. É muito benéfico para aplicações grandes, incluindo sem servidor, que têm muitas conexões abertas. Reduz significativamente o tempo de failover para os bancos de dados Aurora e RDS. Pode ser facilmente usado para muitos aplicativos sem a necessidade de alterar o código.