Conceitos básicos do RDS Proxy
Para saber como configurar o RDS Proxy, leia as seções a seguir. Você também pode descobrir como definir as opções de segurança relacionadas. Elas controlam quem pode acessar cada proxy e como cada proxy se conecta a instâncias de banco de dados.
Tópicos
Configuração de pré-requisitos de rede
O uso do proxy do RDS requer que você tenha uma nuvem virtual privada (VPC) comum entre o cluster de bancos de dados Aurora ou a instância de banco de dados do RDS e o RDS Proxy. Essa VPC deve ter um mínimo de duas sub-redes em zonas de disponibilidade diferentes. Sua conta pode possuir essas sub-redes ou compartilhá-las com outras contas. Para obter informações sobre compartilhamento de VPC, consulte Trabalhar com VPCs compartilhadas. Seus recursos de aplicações cliente, como Amazon EC2, Lambda ou Amazon ECS, podem estar na mesma VPC que o proxy. Ou podem estar em uma VPC separada do proxy. Se você se conectou com êxito a quaisquer instâncias de banco de dados do RDS ou clusters de banco de dados do Aurora, você já terá os recursos de rede necessários.
Obter informações sobre suas sub-redes
Se você está apenas começando no RDS ou Aurora, aprenda o básico sobre a conexão com um banco de dados seguindo os procedimentos em Configuração de seu ambiente para Amazon Aurora. Você também pode seguir o tutorial em Conceitos básicos do Amazon Aurora.
O exemplo do Linux a seguir mostra comandos da AWS CLI que examinam as VPCs e as sub-redes pertencentes à sua Conta da AWS. Em particular, você passa IDs de sub-rede como parâmetros quando cria um proxy usando o CLI.
aws ec2 describe-vpcs aws ec2 describe-internet-gateways aws ec2 describe-subnets --query '*[].[VpcId,SubnetId]' --output text | sort
O exemplo do Linux a seguir mostra comandos da AWS CLI para determinar as IDs de sub-rede correspondentes a um cluster de banco de dados específico do Aurora ou uma instância de banco de dados específica do RDS. Para um cluster do Aurora, primeiro você encontra o ID de uma das instâncias de banco de dados associadas. Você pode extrair os IDs de sub-rede usados por essa instância de banco de dados. Para isso, examine os campos aninhados nos atributos DBSubnetGroup
e Subnets
na saída de descrição da instância de banco de dados. Você especifica alguns ou todos esses IDs de sub-rede ao configurar um proxy para esse servidor de banco de dados.
$
# Optional first step, only needed if you're starting from an Aurora cluster. Find the ID of any DB instance in the cluster.$
aws rds describe-db-clusters --db-cluster-identifiermy_cluster_id
--query '*[].[DBClusterMembers]|[0]|[0][*].DBInstanceIdentifier' --output textmy_instance_id
instance_id_2
instance_id_3
...$
# From the DB instance, trace through the DBSubnetGroup and Subnets to find the subnet IDs. $ aws rds describe-db-instances --db-instance-identifiermy_instance_id
--query '*[].[DBSubnetGroup]|[0]|[0]|[Subnets]|[0]|[*].SubnetIdentifier' --output text
subnet_id_1
subnet_id_2
subnet_id_3
...
Você também pode primeiro encontrar o ID da VPC para a instância de banco de dados. Em seguida, você pode examinar a VPC para encontrar suas sub-redes. O exemplo do Linux a seguir mostra como fazer isso.
$
# From the DB instance, find the VPC.$
aws rds describe-db-instances --db-instance-identifiermy_instance_id
--query '*[].[DBSubnetGroup]|[0]|[0].VpcId' --output textmy_vpc_id
$
aws ec2 describe-subnets --filters Name=vpc-id,Values=my_vpc_id
--query '*[].[SubnetId]' --output text
subnet_id_1
subnet_id_2
subnet_id_3
subnet_id_4
subnet_id_5
subnet_id_6
Planejar a capacidade de endereços IP
Um RDS Proxy ajusta automaticamente sua capacidade conforme necessário com base no tamanho e no número de instâncias de banco de dados registradas nele. Certas operações também podem exigir capacidade adicional de proxy. Alguns exemplos estão aumentando o tamanho de um banco de dados registrado ou operações internas de manutenção do RDS Proxy. Durante essas operações, seu proxy pode precisar de mais endereços IP para provisionar a capacidade extra. Esses endereços adicionais possibilitam que seu proxy se expanda sem afetar a workload. A falta de endereços IP gratuitos em suas sub-redes impede que um proxy aumente a escala verticalmente. Isso pode ocasionar maiores latências de consulta ou falhas na conexão do cliente. O RDS notifica você por meio de um evento RDS-EVENT-0243
quando não há endereços IP livres suficientes em suas sub-redes. Para obter informações sobre esse evento, consulte Trabalhar com eventos do RDS Proxy.
Veja a seguir o número mínimo recomendado de endereços IP para deixar livres em suas sub-redes para seu proxy com base no tamanho das classes de instâncias de banco de dados.
Classe de instância de banco de dados | Mínimo de endereços IP livres |
---|---|
db.*.xlarge ou menor |
10 |
db.*.2xlarge |
15 |
db.*.4xlarge |
25 |
db.*.8xlarge |
45 |
db.*.12xlarge |
60 |
db.*.16xlarge |
75 |
db.*.24xlarge |
110 |
Esses números de endereços IP recomendados são estimativas para um proxy com apenas o endpoint padrão. Um proxy com endpoints adicionais ou réplicas de leitura pode precisar de mais endereços IP livres. Para cada endpoint adicional, recomendamos que você reserve mais três endereços IP. Para cada réplica de leitura, recomendamos que você reserve endereços IP adicionais conforme especificado na tabela com base no tamanho dessa réplica de leitura.
O RDS Proxy nunca usa mais de 215 endereços IP em uma VPC.
Por exemplo, suponha que você queira estimar os endereços IP necessários para um proxy que está associado a um cluster de banco de dados do Aurora.
Nesse caso, suponha o seguinte:
Seu cluster de banco de dados do Aurora tem uma instância do gravador de tamanho db.r5.8xlarge e uma instância do leitor de tamanho db.r5.2xlarge.
O proxy conectado a esse cluster de banco de dados tem o endpoint padrão e um endpoint personalizado com a função de somente leitura.
Nesse caso, o proxy precisa de aproximadamente 63 endereços IP livres (45 para a instância do gravador, 15 para a instância do leitor e três para o endpoint personalizado adicional).
Configuração de credenciais de banco de dados no AWS Secrets Manager
Para cada proxy criado, use primeiro o serviço Secrets Manager para armazenar conjuntos de credenciais de nome de usuário e senha. Você cria um segredo separado do Secrets Manager para cada conta de usuário de banco de dados ao qual o proxy se conecta na instância de banco de dados do RDS ou no cluster de bancos de dados Aurora.
No Secrets Manager, crie esses segredos com valores para os campos username
e password
. Isso permite que o proxy se conecte aos usuários de banco de dados correspondentes em instâncias de banco de dados do RDS ou clusters de bancos de dados do Aurora que você associar ao proxy. Para fazer isso, você pode usar a configuração Credentials for other database (Credenciais para outro banco de dados), Credentials for RDS database (Credenciais para o banco de dados do RDS) ou Other type of secrets (Outros tipos de segredos). Preencha os valores apropriados nos campos Nome de usuário e Senha e valores de espaço reservado em outros campos obrigatórios. O proxy ignorará outros campos, como Host e Porta, se eles estiverem presentes no segredo. Esses detalhes são fornecidos automaticamente pelo proxy.
Também é possível escolher Outro tipo de segredos. Nesse caso, crie o segredo com chaves chamadas username
e password
.
Como os segredos usados pelo seu proxy não estão vinculados a um servidor de banco de dados específico, é possível reutilizar um segredo entre vários proxies. Para isso, use as mesmas credenciais em vários servidores de banco de dados. Por exemplo, você pode usar as mesmas credenciais entre um grupo de servidores de desenvolvimento e teste.
Para se conectar pelo proxy como um usuário específico, verifique se a senha associada a um segredo corresponde à senha do banco de dados desse usuário. Se houver uma incompatibilidade, você poderá atualizar o segredo associado no Secrets Manager. Nesse caso, você ainda pode se conectar a outras contas nas quais as credenciais do segredo e as senhas do banco de dados coincidem.
Ao criar um proxy por meio da AWS CLI ou da API do RDS, você especifica os nomes dos recursos da Amazon (ARNs) dos segredos correspondentes. Você faz isso para todas as contas de usuário do banco de dados que o proxy pode acessar. No AWS Management Console, escolha os segredos por seus nomes descritivos.
Para obter instruções sobre como criar segredos no Secrets Manager, consulte a página Creating a secret (Criar um segredo) na documentação do Secrets Manager. Use uma das seguintes técnicas:
-
Use o Secrets Manager
no console. -
Para usar a CLI para criar um segredo do Secrets Manager para uso com o RDS Proxy, use um comando como o seguinte.
aws secretsmanager create-secret --name "
secret_name
" --description "secret_description
" --regionregion_name
--secret-string '{"username":"db_user","password":"db_user_password"}'
Por exemplo, os comandos a seguir criam segredos do Secrets Manager para dois usuários de banco de dados, um chamado admin
e o outro chamado app-user
aws secretsmanager create-secret \ --name
admin_secret_name
--description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password
"}' aws secretsmanager create-secret \ --nameproxy_secret_name
--description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password
"}'
Para ver os segredos de propriedade da sua conta da AWS, use um comando como a seguir.
aws secretsmanager list-secrets
Ao criar um proxy utilizando a CLI, você transmite os nomes de recursos da Amazon (ARNs) de um ou mais segredos ao parâmetro --auth
. O exemplo do Linux a seguir mostra como preparar um relatório com apenas o nome e o ARN de cada segredo de propriedade da sua conta da AWS. Este exemplo usa o parâmetro --output table
que está disponível na AWS CLI versão 2. Se você estiver usando a AWS CLI versão 1, use --output text
em vez disso.
aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table
Para verificar se você armazenou as credenciais corretas e no formato correto em um segredo, use um comando como o seguinte. Substitua o nome abreviado ou o ARN do segredo por
. your_secret_name
aws secretsmanager get-secret-value --secret-id
your_secret_name
A saída deve incluir uma linha exibindo um valor codificado por JSON como o seguinte.
"SecretString": "{\"username\":\"
your_username
\",\"password\":\"your_password
\"}",
Configuração de políticas do AWS Identity and Access Management (IAM)
Depois de criar os segredos no Secrets Manager, crie uma política do IAM que possa acessar esses segredos. Para obter informações gerais sobre como usar o IAM com o RDS e o Aurora, consulte Gerenciamento de identidade e acesso no Amazon Aurora.
O procedimento a seguir se aplicará se você usar o console do IAM. Se você usar o AWS Management Console para RDS, o RDS poderá criar a política do IAM para você automaticamente. Nesse caso, você pode ignorar o procedimento a seguir.
Como criar uma política do IAM que acessa os segredos do Secrets Manager para uso com o proxy
-
Faça login no console do IAM. Siga o processo Create role (Criar perfil), conforme descrito em Criar perfis do IAM. Inclua a etapa Add Role to Database (Adicionar perfil ao banco de dados).
-
Para a nova função, execute a etapa Add inline policy (Adicionar política em linha). Use os mesmos procedimentos gerais que em Editar políticas do IAM. Cole o seguinte JSON na caixa de texto JSON. Substitua o ID da sua própria conta. Substitua sua região da AWS por
us-east-2
. Substitua os nomes de recurso da Amazon (ARNs) pelos segredos criados. Para a açãokms:Decrypt
, substitua o ARN da chave padrão AWS KMS key ou sua própria chave do KMS. O que você usa depende de qual deles você usou para criptografar os segredos do Secrets Manager.{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:
account_id
:secret:secret_name_1
", "arn:aws:secretsmanager:us-east-2:account_id
:secret:secret_name_2
" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id
:key/key_id
", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] } -
Edite a política de confiança desse perfil do IAM. Cole o seguinte JSON na caixa de texto JSON.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
O comando a seguir executa a mesma operação na AWS CLI.
PREFIX=
my_identifier
aws iam create-role --role-namemy_role_name
\ --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}' aws iam put-role-policy --role-namemy_role_name
\ --policy-name $PREFIX-secret-reader-policy --policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}' aws kms create-key --description "$PREFIX-test-key" --policy '{ "Id":"$PREFIX-kms-policy", "Version":"2012-10-17", "Statement": [ { "Sid":"Enable IAM User Permissions", "Effect":"Allow", "Principal":{"AWS":"arn:aws:iam::account_id
:root"}, "Action":"kms:*","Resource":"*" }, { "Sid":"Allow access for Key Administrators", "Effect":"Allow", "Principal": { "AWS": ["$USER_ARN","arn:aws:iam::account_id:role/Admin"] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource":"*" }, { "Sid":"Allow use of the key", "Effect":"Allow", "Principal":{"AWS":"$ROLE_ARN"}, "Action":["kms:Decrypt","kms:DescribeKey"], "Resource":"*" } ] }'
Criar um RDS Proxy
Para gerenciar as conexões de um cluster de banco de dados, crie um proxy. É possível associar um proxy a um cluster de banco de dados do Aurora MySQL ou Aurora 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 Aurora MySQL, escolha MariaDB and MySQL (MariaDB e MySQL). Para Aurora PostgreSQL, escolha PostgreSQL.
-
Proxy identifier (Identificador do proxy. Especifique um nome de sua escolha, exclusivo no ID de sua 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 em que uma conexão de cliente possa ficar ociosa até que o proxy possa fechá-la. 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.
Considere reduzir o tempo limite de conexão do cliente ocioso se desejar que o proxy remova proativamente as conexões obsoletas. Se a workload estiver apresentando picos, considere aumentar o tempo limite de conexão do cliente ocioso para economizar o custo de estabelecer conexões.
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 ou um cluster de bancos de dados Aurora 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 um cluster de bancos de dados do Amazon Aurora. 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 é uma configuração avançada para solucionar problemas de performance com aplicações específicas. Atualmente, a configuração não é compatível com o PostgreSQL e a única opção é
EXCLUDE_VARIABLE_SETS
. Selecione um filtro somente se ambas as afirmações forem verdadeiras: primeiro, a aplicação não está reutilizando conexões devido a certos tipos de declaração SQL. Além disso, você pode verificar se a reutilização de conexões com essas declarações SQL não afeta a exatidão da aplicação. Para obter mais informações, consulte Como evitar fixação. -
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) 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, como fuso horário e conjunto de caracteres. Para várias instruções, use um ponto e vírgula como separador. Também é possível incluir diversas variáveis em uma única instruçãoSET
, comoSET x=1, y=2
. No momento, não há suporte à consulta de inicialização no PostgreSQL.
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. Também é possível escolher o AWS Management Console para criar um perfil do IAM para você e usá-lo.
-
Segredos do Secrets Manager. Selecione pelo menos um segredo do Secrets Manager que contenha credenciais de usuário de banco de dados para a instância de banco de dados do RDS ou cluster de banco de dados do Aurora a ser acessado com esse proxy.
-
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 seu proxy usando a AWS CLI ou a API.
-
IAM Authentication (Autenticação do IAM). Escolha se deseja ou não exigir ou negar a autenticação do IAM para conexões a seu proxy. 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. Também é possível escolher o AWS Management Console para criar um grupo de segurança para você e usá-lo.
nota Esse grupo de segurança deve permitir o acesso ao banco de dados ao qual o proxy se conecta. O mesmo grupo de segurança é usado para entrada dos aplicativos 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.
(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 proxy do RDS inclui informações detalhadas sobre as instruções SQL em seus 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. As informações de depuração incluem o texto das instruções SQL que você envia por meio do proxy. Portanto, habilite essa configuração somente quando necessário para depuração. Além disso, habilite essa configuração somente quando você tiver medidas de segurança em vigor para proteger todas as informações confidenciais que aparecem 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, use o comando create-db-proxy da AWS CLI. 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
]
Se você ainda não souber os IDs de sub-rede que serão usados para o parâmetro --vpc-subnet-ids
, consulte Configuração de pré-requisitos de rede para obter exemplos de como encontrá-los.
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 informações e associações necessárias 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), or [--db-cluster-endpointendpoint_name
] # rds db cluster endpoint (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 ou cluster de bancos de dados Aurora ao grupo de destino chamando a função RegisterDBProxyTargets.
Como visualizar um RDS Proxy
Depois de criar um ou mais proxies do RDS, você pode visualizá-los. Isso possibilita examinar os detalhes de configuração e escolher quais deseja modificar, excluir etc.
Qualquer aplicação de banco de dados que usa o proxy exige que o endpoint do proxy seja usado na string de conexão.
Como visualizar o proxy
Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/
. -
No canto superior direito do AWS Management Console, escolha a região da AWS em que você criou os clusters de banco de dados do RDS Proxy.
-
No painel de navegação, escolha Proxies.
-
Escolha o nome de um proxy do RDS para exibir seus detalhes.
-
Na página de detalhes, a seção Target groups (Grupos de destino) mostra como o proxy está associado a uma instância de banco de dados específica do RDS ou cluster de bancos de dados Aurora. Você pode seguir o link para a página do grupo de destino default (padrão) para ver mais detalhes sobre a associação entre o proxy e o banco de dados. Nessa página você vê as configurações especificadas ao criar o proxy. Isso inclui porcentagem máxima de conexão, tempo limite de empréstimo de conexão, família de mecanismos e filtros de fixação de sessão.
Para visualizar o proxy usando a CLI, use o comando describe-db-proxies. Por padrão, ele exibe todos os proxies pertencentes à sua conta da AWS. Para ver detalhes de um único proxy, especifique o nome dele com o parâmetro --db-proxy-name
.
aws rds describe-db-proxies [--db-proxy-name
proxy_name
]
Para visualizar as outras informações associadas ao proxy, use os comandos a seguir.
aws rds describe-db-proxy-target-groups --db-proxy-name
proxy_name
aws rds describe-db-proxy-targets --db-proxy-nameproxy_name
Use a seguinte sequência de comandos para ver mais detalhes sobre as coisas associadas ao proxy:
-
Para obter uma lista de proxies, execute describe-db-proxies.
-
Para mostrar parâmetros de conexão, como a porcentagem máxima de conexões que o proxy pode usar, execute describe-db-proxy-target-groups
--db-proxy-name
. Use o nome do proxy como o valor do parâmetro. -
Para ver os detalhes da instância de banco de dados do RDS ou do cluster de bancos de dados Aurora associado ao grupo de destino retornado, execute describe-db-proxy-targets.
Para visualizar seus proxies usando a API do RDS, use a operação DescribeDBProxies. Ela retorna valores do tipo de dados DBProxy.
Para ver detalhes das configurações de conexão do proxy, use os identificadores de proxy desse valor de retorno com a operação DescribeDBProxyTargetGroups. Ela retorna valores do tipo de dados DBProxyTargetGroup.
Para ver a instância do RDS ou o cluster de bancos de dados Aurora associado ao proxy, use a operação DescribeDBProxyTargets. Ela retorna valores do tipo de dados DBProxyTarget.
Conectar-se a um banco de dados pelo RDS Proxy
Você se conecta a uma instância de banco de dados do RDS ou cluster de bancos de dados Aurora por meio de um proxy, geralmente da mesma maneira como você se conecta diretamente ao banco de dados. A principal diferença é que você especifica o endpoint do proxy em vez do endpoint da instância ou do cluster. Para um cluster de bancos de dados Aurora, todas as conexões de proxy têm capacidade de leitura/gravação e usam a instância de gravação. Se você normalmente usa o endpoint do leitor para conexões somente leitura, poderá criar um endpoint adicional somente leitura para o proxy. Você pode usar esse endpoint da mesma forma. Para obter mais informações, consulte Visão geral dos endpoints de proxy.
Tópicos
Conectar-se a um proxy usando autenticação nativa
Use as seguintes etapas básicas para se conectar a um proxy usando autenticação nativa:
-
Localize o endpoint do proxy. No AWS Management Console, você pode encontrar o endpoint na página de detalhes do proxy correspondente. Com a AWS CLI, é possível usar o comando describe-db-proxies. O exemplo a seguir mostra como.
# Add --output text to get output as a simple tab-separated list. $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}' [ [ { "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy" }, { "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-other-secret" }, { "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-rds-secret" }, { "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-t3" } ] ]
-
Especifique esse endpoint como o parâmetro host na string de conexão de sua aplicação cliente. Por exemplo, especifique o endpoint do proxy como o valor da opção
mysql -h
ou da opçãopsql -h
. -
Forneça o mesmo nome de usuário e senha do banco de dados como o faz normalmente.
Conectar-se a um proxy usando autenticação do IAM
Ao usar a autenticação do IAM com o RDS Proxy, configure os usuários do banco de dados para fazer a autenticação com nomes de usuário e senhas regulares. A autenticação do IAM se aplica ao proxy do RDS recuperando as credenciais de nome de usuário e senha do Secrets Manager. A conexão do proxy do RDS com o banco de dados subjacente não passa pelo IAM.
Para se conectar ao RDS Proxy usando a autenticação do IAM, siga o mesmo procedimento de conexão geral utilizado na autenticação IAM com uma instância de banco de dados do RDS ou a um cluster do Aurora. Para obter informações gerais sobre como usar o IAM com o RDS e o Aurora, consulte Segurança no Amazon Aurora.
As principais diferenças no uso do IAM para o proxy do RDS incluem o seguinte:
-
Não configure cada usuário de banco de dados individual com um plug-in de autorização. Os usuários do banco de dados ainda têm nomes de usuário e senhas regulares dentro do banco de dados. Você configura segredos do Secrets Manager contendo esses nomes de usuário e senhas e autoriza o proxy do RDS a recuperar as credenciais do Secrets Manager.
A autenticação do IAM aplica-se à conexão entre o programa cliente e o proxy. Depois, o proxy faz a autenticação no banco de dados usando as credenciais de nome de usuário e senha recuperadas pelo Secrets Manager.
-
Em vez da instância, do cluster ou do endpoint de leitor, especifique o endpoint do proxy. Para obter detalhes sobre o endpoint do proxy, consulte Conectar-se ao cluster de banco de dados usando a autenticação do IAM.
-
No caso da autenticação do IAM direta do banco de dados, você escolhe os usuários do banco de dados seletivamente e os configura para que sejam identificados com um plug-in de autenticação especial. Em seguida, pode se conectar a esses usuários com a autenticação do IAM.
No caso de uso do proxy, é necessário fornecer a esse proxy segredos que contenham o nome de usuário e a senha de algum usuário (autenticação nativa). Em seguida, você se conecta ao proxy com a autenticação do IAM. Isso é feito gerando um token de autenticação com o endpoint do proxy, e não com o endpoint do banco de dados. Você também utiliza um nome de usuário que corresponde a um dos nomes de usuários dos segredos fornecidos.
-
Certifique-se de usar os protocolos Transport Layer Security (TLS)/Secure Sockets Layer (SSL) ao se conectar a um proxy usando a autenticação do IAM.
É possível conceder a um usuário específico acesso ao proxy modificando a política do IAM. Veja a seguir um exemplo.
"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"
Considerações sobre como e conectar a um proxy com o PostgreSQL
Para o PostgreSQL, quando um cliente inicia uma conexão com um banco de dados do PostgreSQL, ele envia uma mensagem de inicialização. Essa mensagem inclui pares de strings de caracteres de nome e valor do parâmetro. Para obter mais detalhes, consulte o StartupMessage
em PostgreSQL Message Formats
Ao se conectar por um proxy do RDS , a mensagem de inicialização pode incluir os seguintes parâmetros reconhecidos atualmente:
-
user
-
database
-
replication
A mensagem de inicialização também pode incluir os seguintes parâmetros de tempo de execução adicionais:
Para obter mais informações sobre sistemas de mensagens PostgreSQL, consulte Frontend/Backend Protocol
Para o PostgreSQL, se você usar JDBC, recomendamos o seguinte para evitar a fixação:
-
Defina o parâmetro de conexão JDBC
assumeMinServerVersion
como pelo menos9.0
para evitar a fixação. Isso impede que o driver JDBC execute uma viagem de ida e volta adicional durante a inicialização da conexão quando ele executaSET extra_float_digits = 3
. -
Defina o parâmetro de conexão JDBC
ApplicationName
como
para evitar a fixação. Isso impede que o driver JDBC execute uma viagem de ida e volta adicional durante a inicialização da conexão quando ele executaany/your-application-name
SET application_name = "PostgreSQL JDBC Driver"
. Observe que o parâmetro JDBC éApplicationName
, mas o parâmetroStartupMessage
do PostgreSQL éapplication_name
. -
Defina o parâmetro de conexão JDBC
preferQueryMode
comoextendedForPrepared
para evitar a fixação. OextendedForPrepared
garante que o modo estendido é usado apenas para instruções preparadas.O padrão para o parâmetro
preferQueryMode
éextended
, que usa o modo estendido para todas as consultas. O modo estendido usa uma série de solicitaçõesPrepare
,Bind
,Execute
eSync
e respostas correspondentes. Esse tipo de série causa fixação de conexão em um proxy do RDS .
Para obter mais informações, consulte Como evitar fixação. Para obter mais informações sobre como se conectar usando JDBC, consulte Connecting to the Database