Conectar-se a um banco de dados pelo RDS Proxy - Amazon Aurora

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.

Conectar-se a um proxy usando autenticação nativa

Use as seguintes etapas para se conectar a um proxy usando autenticação nativa:

  1. 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" } ] ]
  2. 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ção psql -h.

  3. 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 na documentação do PostgreSQL.

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 na documentação do PostgreSQL.

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 menos 9.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 executa SET extra_float_digits = 3.

  • Defina o parâmetro de conexão JDBC ApplicationName como any/your-application-name 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 executa SET application_name = "PostgreSQL JDBC Driver". Observe que o parâmetro JDBC é ApplicationName, mas o parâmetro StartupMessage do PostgreSQL é application_name.

Para ter mais informações, consulte Como evitar fixação. Para ter mais informações sobre como se conectar usando JDBC, consulte Connecting to the Database na documentação do PostgreSQL.