Criar um RDS Proxy
Para gerenciar as conexões de um conjunto especificado de instâncias de banco de dados, você pode criar um proxy. É 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
-
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No painel de navegação, escolha Proxies.
-
Escolha Create proxy (Criar proxy).
-
Escolha todas as configurações para seu proxy.
Em Configuração de proxy, forneça informações para o seguinte:
-
Engine family (Família de mecanismos). Essa configuração determina qual protocolo de rede de banco de dados o proxy reconhece quando interpreta o tráfego de rede do banco de dados e para ele. Para RDS para MariaDB ou RDS para MySQL, escolha MariaDB and MySQL (MariaDB e MySQL). Para RDS para PostgreSQL, escolha PostgreSQL. Para RDS para SQL Server, selecione SQL Server.
-
Proxy identifier (Identificador do proxy. Especifique um nome exclusivo no ID da conta da AWS e na região da AWS atual.
-
Idle client connection timeout (Tempo limite de conexão de cliente ociosa. Escolha um período durante o qual uma conexão de cliente pode ficar ociosa até que o proxy a feche. O padrão é de 1.800 segundos (30 minutos). Uma conexão de cliente é considerada ociosa quando a aplicação não envia uma nova solicitação dentro do tempo especificado após a conclusão da solicitação anterior. A conexão de banco de dados subjacente permanece aberta e é retornada ao grupo de conexões. Portanto, ela está disponível para ser reutilizada para novas conexões de cliente.
Para que o proxy remova proativamente as conexões obsoletas, reduza o tempo limite de conexão do cliente ocioso. Se a workload estiver apresentando picos, para economizar o custo de estabelecer conexões, aumente o tempo limite de conexão do cliente ocioso.
Em Configuração do grupo de destino, forneça informações para o seguinte:
-
Database (Banco de dados). Escolha uma 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. E tente criar o proxy novamente.
-
Connection pool maximum connections (Conexões máximas do grupo de conexões. Especifique um valor de 1 a 100. Essa configuração representa a porcentagem do valor de
max_connections
que o proxy do RDS pode usar para suas conexões. Se pretender usar apenas um proxy com esse cluster ou instância de banco de dados, você poderá definir esse valor como 100. Para obter detalhes sobre como o proxy do RDS usa essa configuração, consulte MaxConnectionsPercent. -
Session pinning filters (Filtros de fixação de sessão. (Opcional) Essa opção permite que você force o RDS Proxy a não fixar determinados tipos de estado de sessão detectados. Isso contorna as medidas de segurança padrão para multiplexar conexões de banco de dados entre conexões de clientes. No momento, a configuração não é compatível com o PostgreSQL. A única opção é
EXCLUDE_VARIABLE_SETS
.Habilitar essa configuração pode fazer com que as variáveis da sessão de uma conexão afetem outras conexões. Isso pode causar erros ou problemas de correção se suas consultas dependerem dos valores das variáveis de sessão definidos fora da transação atual. Considere a possibilidade de usar essa opção depois de verificar se é seguro as aplicações compartilharem conexões de banco de dados entre conexões de clientes.
Os seguintes padrões podem ser considerados seguros:
-
Instruções
SET
em que não há alteração no valor efetivo da variável de sessão; isto é, 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.
-
-
Connection borrow timeout (Tempo limite de empréstimo de conexão). Em alguns casos, você pode esperar que o proxy às vezes use todas as conexões de banco de dados disponíveis. Nesses casos, é possível especificar quanto tempo o proxy espera que uma conexão de banco de dados fique disponível antes de retornar um erro de tempo limite. É possível especificar um período de até um máximo de cinco minutos. Essa configuração só se aplica quando o proxy tem o número máximo de conexões abertas e todas as conexões já estão em uso.
-
Consulta de inicialização. (Opcional) Adicione uma consulta de inicialização ou modifique a atual. Você pode especificar uma ou mais instruções SQL para o proxy executar ao abrir cada nova conexão de banco de dados. A configuração normalmente é usada com instruções
SET
para garantir que cada conexão tenha configurações idênticas. Verifique se a consulta adicionada é válida. Para incluir diversas variáveis em uma única instruçãoSET
, use vírgulas como separadores. Por exemplo:SET
variable1
=value1
,variable2
=value2
Para várias instruções, use um ponto e vírgula como separador.
Em Authentication (Autenticação), forneça informações sobre o seguinte:
-
IAM role (Perfil do IAM. Escolha um perfil do IAM que tenha permissão para acessar os segredos do Secrets Manager escolhidos anteriormente. Se preferir, você poderá 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.
-
Client authentication type (Tipo de autenticação de cliente). Selecione 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 o proxy usando a AWS CLI ou a API.
-
IAM Authentication (Autenticação do IAM). Escolha se deseja ou não exigir, permitir ou negar a autenticação do IAM para conexões a seu 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.
Em Conectividade, forneça informações para o seguinte:
-
Require Transport Layer Security (Exigir o Transport Layer Security. Escolha essa configuração se desejar que o proxy aplique TLS/SSL a todas as conexões de cliente. Em uma conexão criptografada ou não criptografada com um proxy, o proxy usa a mesma configuração de criptografia ao estabelecer conexão com o banco de dados subjacente.
-
Subnets (Sub-redes). Esse campo é pré-preenchido com todas as sub-redes associadas à sua VPC. Você pode remover todas as sub-redes que não são necessárias para esse proxy. Você deve manter pelo menos duas sub-redes.
Forneça configuração adicional de conectividade:
-
VPC grupo de segurança (Grupo de segurança da VPC. Escolha um grupo de segurança da VPC existente. Se preferir, você poderá criar um grupo de segurança no AWS Management Console. Você deve configurar as Regras de entrada para possibilitar que suas aplicações acessem o proxy. Você também deve configurar as Regras de saída para possibilitar o tráfego de seus destinos de banco de dados.
nota
Esse grupo de segurança deve permitir conexões do proxy com o banco de dados. 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.
O RDS implanta um proxy em várias zonas de disponibilidade para garantir a alta disponibilidade. Para habilitar a comunicação entre AZs para esse proxy, a lista de controle de acesso (ACL) de rede da sub-rede de proxy deve permitir a saída específica da porta do mecanismo e a entrada de 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.
(Opcional) Forneça configuração avançada:
-
Enable enhanced logging (Habilitar registro em log avançado. Você pode habilitar essa configuração para solucionar problemas de compatibilidade ou de performance do proxy.
Quando essa configuração está habilitada, o RDS Proxy inclui informações detalhadas sobre a performance do proxy nos logs. Essas informações ajudam você a depurar problemas que envolvem o comportamento do SQL ou a performance e a escalabilidade de conexões de proxy. Portanto, somente habilite essa configuração para depuração e quando você tiver medidas de segurança em vigor para proteger todas as informações confidenciais que aparecerem nos logs.
Para minimizar a sobrecarga associada ao proxy, o proxy do RDS desativa automaticamente essa configuração 24 horas após habilitá-la. Habilite-a temporariamente para solucionar um problema específico.
-
-
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 } \ --authProxyAuthenticationConfig_JSON_string
\ --role-arniam_role
\ --vpc-subnet-idsspace_separated_list
\ [--vpc-security-group-idsspace_separated_list
] \ [--require-tls | --no-require-tls] \ [--idle-client-timeoutvalue
] \ [--debug-logging | --no-debug-logging] \ [--tagscomma_separated_list
]
Para Windows:
aws rds create-db-proxy ^ --db-proxy-name
proxy_name
^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --authProxyAuthenticationConfig_JSON_string
^ --role-arniam_role
^ --vpc-subnet-idsspace_separated_list
^ [--vpc-security-group-idsspace_separated_list
] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeoutvalue
] ^ [--debug-logging | --no-debug-logging] ^ [--tagscomma_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-nametarget_group_name
] [--db-instance-identifiersspace_separated_list
] # rds db instances, or [--db-cluster-identifierscluster_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.