Conectar-se a um banco de dados pelo RDS Proxy - Amazon Relational Database Service

Conectar-se a um banco de dados pelo RDS Proxy

A maneira de se conectar a uma instância de banco de dados do RDS por meio de um proxy ou se conectar ao banco de dados, em geral, é a mesma. Para ter mais informações, consulte Visão geral dos endpoints de proxy.

Conectar-se a um banco de dados usando credenciais de banco de dados

Use as seguintes etapas para se conectar a um proxy usando as credenciais de banco de dados:

  1. Localize o endpoint do proxy. No Console de gerenciamento da AWS, 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 banco de dados usando autenticação do IAM

Ao usar a autenticação do IAM com o RDS Proxy, você tem duas opções de autenticação entre o cliente e o proxy:

  • Configure os usuários do banco de dados para fazer a autenticação com nomes de usuário e senhas regulares. O RDS Proxy recupera 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.

  • Você também pode usar a autenticação de ponta a ponta do IAM, que se conecta ao seu banco de dados por meio do proxy usando o IAM sem exigir credenciais de banco de dados.

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 uma instância de banco de dados do RDS. Para obter mais informações sobre como usar a IAM, consulte Segurança no Amazon RDS. Se você estiver usando a autenticação de ponta a ponta do IAM, forneça o plug-in de autenticação do IAM ao seu usuário de banco de dados. Consulte Criar uma conta de banco de dados usando autenticação do IAM.

As principais diferenças no uso do IAM para o proxy do RDS incluem o seguinte:

  • Com a autenticação padrão do IAM, os usuários do banco de dados têm credenciais normais no 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.

  • Com a autenticação de ponta a ponta do IAM, você não precisa configurar segredos do Secrets Manager para credenciais de banco de dados. A autenticação do IAM aplica-se à conexão entre o cliente e o proxy e entre o proxy e o banco de dados.

  • 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 à instância de banco de dados usando a autenticação do IAM.

  • 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"
dica

Ao configurar a autenticação do IAM para conexões do RDS Proxy, siga estas diretrizes importantes para evitar problemas de conexão:

  • Não conceda o perfil rds_iam enquanto mantém a autenticação geral por senha para o mesmo usuário ou perfil do banco de dados.

  • Lembre-se de que, embora os clientes se conectem ao RDS Proxy usando a autenticação do IAM, o RDS Proxy sempre se conecta ao banco de dados usando a autenticação por senha por meio do Secrets Manager.

  • Se você tiver encerramentos e novas conexões frequentes, remova todas as concessões rds_iam existentes do usuário ou do perfil e use somente a autenticação por senha.

  • Garanta que sua política de senha atenda aos requisitos de caracteres seguros SCRAM-SHA-256.

Combinar métodos de autenticação do IAM e senha para o mesmo usuário do banco de dados pode causar instabilidade na conexão.

Considerações sobre como se conectar ao Microsoft SQL Server

Para se conectar a um proxy usando a autenticação do IAM, você não usa o campo de senha. Em vez disso, você fornece a propriedade de token apropriada para cada tipo de driver de banco de dados no campo token. Por exemplo, use a propriedade accessToken para JDBC ou a propriedade sql_copt_ss_access_token para ODBC. Ou use a propriedade AccessToken do driver .NET SqlClient. Você não pode usar a autenticação do IAM com clientes que não sejam compatíveis com as propriedades do token.

Em algumas condições, um proxy não pode compartilhar uma conexão de banco de dados e, em vez disso, fixa a conexão de sua aplicação cliente ao proxy em uma conexão de banco de dados dedicada. Para ter mais informações sobre essas condições, consulte Evitar a fixação de um RDS Proxy.

Considerações sobre como se conectar ao PostgreSQL

Se você criar um usuário de banco de dados PostgreSQL para se conectar ao RDS Proxy, conceda a ele o privilégio CONNECT no banco de dados. Sem isso, o usuário não poderá estabelecer uma conexão. Para ter mais informações, consulte Adicionar um novo usuário de banco de dados a um banco de dados do PostgreSQL ao usar o RDS Proxy.

Quando um cliente inicia uma conexão com um banco de dados 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 meio de 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 Evitar a fixação de um RDS Proxy. Para ter mais informações sobre como se conectar usando JDBC, consulte Connecting to the Database na documentação do PostgreSQL.