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 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 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.

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 à instância 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 se conectar a um proxy com o 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 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 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.