Criar um proxy para o Amazon RDS - Amazon Relational Database Service

Criar um proxy para o Amazon RDS

É possível associar um proxy a uma instância de banco de dados do RDS para MariaDB, do RDS para Microsoft SQL Server, do RDS para MySQL ou do RDS para PostgreSQL.

Como criar um proxy
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, escolha Proxies.

  3. Escolha Create proxy (Criar proxy).

  4. Defina as configurações de proxy a seguir.

    Configuração Descrição
    Família de mecanismos O protocolo de rede de banco de dados que o proxy reconhece quando interpreta o tráfego de rede de entrada e saída do banco de dados.
    Identificador do proxy Um nome exclusivo no ID da conta da AWS e na região da AWS atual.
    Tempo-limite de inatividade da conexão do cliente

    O proxy fechará a conexão do cliente se ela permanecer inativa por determinado período. Por padrão, é 1.800 segundos (30 minutos). Uma conexão fica ociosa quando a aplicação não envia uma nova solicitação dentro do período especificado após a conclusão da solicitação anterior. O proxy mantém a conexão do banco de dados subjacente aberta e a devolve ao grupo de conexões, disponibilizando-a para novas conexões de clientes.

    Para que o proxy remova proativamente as conexões ociosas, reduza o tempo-limite de inatividade da conexão do cliente. Para minimizar os custos de conexão durante picos de workload, aumente o tempo-limite.

    Banco de dados A instância de banco de dados do RDS para acesso por meio desse proxy. A lista inclui somente instâncias e clusters de banco de dados com mecanismos de banco de dados compatíveis, versões de mecanismo e outras configurações. Se a lista estiver vazia, crie uma instância ou cluster de banco de dados compatível com o RDS Proxy. Para fazer isso, siga o procedimento em Criar uma instância de banco de dados do Amazon RDS. Depois, tente criar o proxy novamente.
    Conexões máximas do grupo de conexões Um valor entre 1 e 100 para definir a porcentagem do limite de max_connections que o RDS Proxy pode usar. Se pretender usar apenas um proxy com esse cluster ou instância de banco de dados, defina esse valor como 100. Para ter mais informações sobre como o RDS Proxy usa essa configuração, consulte MaxConnectionsPercent.
    Filtros de fixação de sessão

    Impede que o RDS Proxy fixe determinados estados de sessão detectados, o que ignora as medidas de segurança padrão para conexões de multiplexação. No momento, o PostgreSQL não aceita essa configuração, e a única opção disponível é EXCLUDE_VARIABLE_SETS. Habilitá-la pode fazer com que as variáveis de sessão de uma conexão afetem outras, gerando erros ou problemas de correção caso as consultas dependam de variáveis de sessão definidas fora da transação atual. Use essa opção somente depois de confirmar que as aplicações podem compartilhar conexões de banco de dados com segurança.

    Os seguintes padrões são considerados seguros:

    • Declarações SET nas quais não haja alteração no valor efetivo da variável de sessão. Em outras palavras, não há alteração na variável de sessão.

    • Você altera o valor da variável de sessão e executa uma instrução na mesma transação.

    Para ter mais informações, consulte Evitar a fixação de um RDS Proxy.

    Tempo-limite de empréstimo da conexão Se você espera que o proxy use todas as conexões de banco de dados disponíveis, defina o tempo de espera antes que ele gere um erro de tempo-limite. É possível especificar até cinco minutos. Essa configuração só se aplica quando o proxy atingiu o número máximo de conexões e todas as conexões já estão em uso.
    Consulta de inicialização Adicione ou modifique uma consulta de inicialização especificando uma ou mais declarações SQL para serem executadas pelo proxy ao abrir uma nova conexão de banco de dados. Essa configuração geralmente é usada com declarações SET para garantir configurações de conexão consistentes. Verifique se a consulta é válida e use vírgulas para separar as variáveis em uma declaração SET. Por exemplo:
    SET variable1=value1, variable2=value2

    Para várias declarações, separe-as com ponto e vírgula.

    Perfil do AWS Identity and Access Management (IAM)

    Um perfil do IAM com permissão para acessar os segredos do Secrets Manager, que representam as credenciais das contas de usuário do banco de dados que o proxy pode usar. Também é possível criar um perfil do IAM no AWS Management Console.

    Segredos do Secrets Manager. Selecione pelo menos um segredo do Secrets Manager que contenha credenciais de usuário de banco de dados que permita ao proxy acessar a instância de banco de dados do RDS.
    Tipo de autenticação de cliente O tipo de autenticação usada pelo proxy para conexões de clientes. Sua escolha se aplica a todos os segredos do Secrets Manager que você associa a esse proxy. Se você precisar especificar um tipo de autenticação de cliente diferente para cada segredo, crie seu proxy usando a AWS CLI ou a API.
    Autenticação do IAM Se deseja ou não exigir, permitir ou negar a autenticação do IAM para conexões com o proxy. A opção de permissão só é válida para proxies do RDS para SQL Server. Sua escolha se aplica a todos os segredos do Secrets Manager que você associa a esse proxy. Se você precisar especificar um tipo de autenticação do IAM diferente para cada segredo, crie seu proxy usando a AWS CLI ou a API.
    Exigir Transport Layer Security

    Impõe TLS/SSL para todas as conexões de cliente. O proxy usa a mesma configuração de criptografia para sua conexão com o banco de dados subjacente, quer a conexão do cliente seja criptografada ou não criptografada.

    Sub-redes

    Esse campo é pré-preenchido com todas as sub-redes associadas à sua VPC. É possível remover quaisquer sub-redes que não sejam necessárias para o proxy, mas pelo menos duas sub-redes devem ser mantidas.

    Grupo de segurança de VPC

    Escolha um grupo de segurança da VPC existente ou crie um no AWS Management Console. Configure as regras de entrada para possibilitar que suas aplicações acessem o proxy e as regras de saída para permitir o tráfego de seus destinos de banco de dados.

    nota

    O grupo de segurança deve permitir conexões do proxy com o banco de dados. Ele serve para entrada das aplicações para o proxy e saída do proxy para o banco de dados. Por exemplo, se você usar o mesmo grupo de segurança para o banco de dados e o proxy, verifique se os recursos nesse grupo de segurança podem se comunicar entre si.

    Ao usar uma VPC compartilhada, evite usar o grupo de segurança padrão para a VPC ou um associado a outra conta. Em vez disso, escolha um grupo de segurança que pertença à sua conta. Se não houver nenhum, crie um. Para ter mais informações, consulte Trabalhar com VPCs compartilhadas.

    O RDS implanta um proxy em várias zonas de disponibilidade para garantir a alta disponibilidade. Para habilitar a comunicação entre AZs, a lista de controle de acesso (ACL) de rede da sub-rede de proxy deve permitir saída na porta do mecanismo e entrada em todas as portas. Para obter mais informações sobre ACLs de rede, consulte Controlar o tráfego para sub-redes com ACLs de rede. Se a ACL de rede do proxy e do destino for idêntica, você deverá adicionar uma regra de entrada do protocolo TCP em que a Fonte esteja definida como o CIDR da VPC. Você também deve adicionar uma regra de saída de protocolo TCP específica da porta do mecanismo em que o Destino esteja definido como o CIDR da VPC.

    Ativar o registro em log aprimorado

    Habilite essa configuração para solucionar problemas de compatibilidade ou de performance do proxy. Quando habilitado, o RDS Proxy registra em log informações detalhadas de performance para ajudar você a depurar o comportamento do SQL ou a performance e a escalabilidade da conexão do proxy.

    Habilite essa configuração apenas para depuração e garanta que as medidas de segurança adequadas estejam em vigor para proteger as informações confidenciais nos logs. Para minimizar as despesas operacionais, o RDS Proxy desabilita automaticamente essa configuração 24 horas após a ativação. Habilite-a temporariamente para solucionar problemas específicos.

  5. Escolha Create proxy (Criar proxy).

Para criar um proxy utilizando a AWS CLI, chame o comando create-db-proxy com os seguintes parâmetros obrigatórios:

  • --db-proxy-name

  • --engine-family

  • --role-arn

  • --auth

  • --vpc-subnet-ids

O valor --engine-family diferencia letras maiúsculas de minúsculas.

exemplo

Para Linux, macOS ou Unix:

aws rds create-db-proxy \ --db-proxy-name proxy_name \ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \ --auth ProxyAuthenticationConfig_JSON_string \ --role-arn iam_role \ --vpc-subnet-ids space_separated_list \ [--vpc-security-group-ids space_separated_list] \ [--require-tls | --no-require-tls] \ [--idle-client-timeout value] \ [--debug-logging | --no-debug-logging] \ [--tags comma_separated_list]

Para Windows:

aws rds create-db-proxy ^ --db-proxy-name proxy_name ^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --auth ProxyAuthenticationConfig_JSON_string ^ --role-arn iam_role ^ --vpc-subnet-ids space_separated_list ^ [--vpc-security-group-ids space_separated_list] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeout value] ^ [--debug-logging | --no-debug-logging] ^ [--tags comma_separated_list]

Veja a seguir um exemplo do valor JSON da opção --auth. Este exemplo aplica um tipo de autenticação de cliente diferente a cada segredo.

[ { "Description": "proxy description 1", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256" }, { "Description": "proxy description 2", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:secret/1234abcd-12ab-34cd-56ef-1234567890cd", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_MD5" }, { "Description": "proxy description 3", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef", "IAMAuth": "REQUIRED" } ]
dica

Se você ainda não souber os IDs de sub-rede que serão usados para o parâmetro --vpc-subnet-ids, consulte Configurar os pré-requisitos de rede para o RDS Proxy para obter exemplos de como encontrá-los.

nota

O grupo de segurança deve permitir acesso ao banco de dados ao qual o proxy se conecta. O mesmo grupo de segurança é usado para entrada das aplicações para o proxy e para saída do proxy para o banco de dados. Por exemplo, suponha que você use o mesmo grupo de segurança para o banco de dados e o proxy. Nesse caso, especifique que os recursos nesse grupo de segurança podem se comunicar com outros recursos no mesmo grupo de segurança.

Ao usar uma VPC compartilhada, você não pode usar o grupo de segurança padrão para a VPC ou um grupo de segurança pertencente a outra conta. Escolha um grupo de segurança que pertença à sua conta. Se não houver, crie um. Para obter mais informações sobre essa limitação, consulte Trabalhar com VPCs compartilhadas.

Para criar as associações corretas para o proxy, também é possível usar o comando register-db-proxy-targets. Especificar o nome do grupo de destino do default O proxy do RDS cria automaticamente um grupo de destino com este nome ao criar cada proxy.

aws rds register-db-proxy-targets --db-proxy-name value [--target-group-name target_group_name] [--db-instance-identifiers space_separated_list] # rds db instances, or [--db-cluster-identifiers cluster_id] # rds db cluster (all instances)

Para criar um proxy do RDS , chame a operação CreateDBProxy da API do Amazon RDS. Passe um parâmetro com a estrutura de dados AuthConfig.

O proxy do RDS cria automaticamente um grupo de destino chamado default ao criar cada proxy. Associe uma instância de banco de dados do RDS ao grupo de destino chamando a função RegisterDBProxyTargets.