

# Conectar-se a um banco de dados pelo RDS Proxy
<a name="rds-proxy-connecting"></a>

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 obter mais informações, consulte [Visão geral dos endpoints de proxy](rds-proxy-endpoints.md#rds-proxy-endpoints-overview). 

**Topics**
+ [Conectar-se a um banco de dados usando credenciais de banco de dados](#rds-proxy-connecting-native)
+ [Conectar-se a um banco de dados usando autenticação do IAM](#rds-proxy-connecting-iam)
+ [Considerações sobre como se conectar ao PostgreSQL](#rds-proxy-connecting-postgresql)

## Conectar-se a um banco de dados usando credenciais de banco de dados
<a name="rds-proxy-connecting-native"></a>

 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](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-proxies.html). 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"
           }
       ]
   ]
   ```

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

1.  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
<a name="rds-proxy-connecting-iam"></a>

 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 um cluster de banco de dados do Aurora. Para obter mais informações sobre como usar a IAM, consulte [Segurança no Amazon Aurora](UsingWithRDS.md). 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](UsingWithRDS.IAMDBAuth.DBAccounts.md).

 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 ao cluster de banco de dados usando a autenticação do IAM](UsingWithRDS.IAMDBAuth.Connecting.md).
+ 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 PostgreSQL
<a name="rds-proxy-connecting-postgresql"></a>

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 obter 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](rds-proxy-new-db-user.md#rds-proxy-new-db-user-pg).

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](https://www.postgresql.org/docs/current/protocol-message-formats.html) 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: 
+ `[application\_name](https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-APPLICATION-NAME) `
+ `[client\_encoding](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-CLIENT-ENCODING) `
+ `[DateStyle](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-DATESTYLE) `
+ `[TimeZone](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-TIMEZONE) `
+  `[extra\_float\_digits](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-EXTRA-FLOAT-DIGITS) `
+  `[ search\_path ](https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-SEARCH-PATH)` 

 Para ter mais informações sobre sistemas de mensagens PostgreSQL, consulte [Frontend/Backend Protocol](https://www.postgresql.org/docs/current/protocol.html) 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 obter mais informações, consulte [Evitar a fixação de um RDS Proxy](rds-proxy-pinning.md). Para ter mais informações sobre como se conectar usando JDBC, consulte [Connecting to the Database](https://jdbc.postgresql.org/documentation/setup/) na documentação do PostgreSQL.