Conectar-se a um banco de dados pelo RDS Proxy
Você se conecta a um cluster de banco de dados do Aurora ou a um cluster que usa o Aurora Serverless v2 por meio de um proxy, em geral da mesma maneira como se conecta diretamente ao banco de dados. A principal diferença é que você especifica o endpoint do proxy em vez do endpoint do cluster. Por padrão, 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 ter 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 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 o endpoint como o parâmetro host na string de conexão da 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 conectar-se ao RDS Proxy usando a autenticação do IAM, siga o mesmo procedimento de conexão geral utilizado na autenticação do IAM com um cluster de banco de dados do Aurora. Para obter mais informações sobre como usar a IAM, 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
A mensagem de inicialização também pode incluir os seguintes parâmetros de tempo de execução adicionais:
Para ter 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
.
Para ter mais informações, consulte Evitar a fixação de um RDS Proxy. Para ter mais informações sobre como se conectar usando JDBC, consulte Connecting to the Database