Conectar-se à instância de banco de dados usando a autenticação do IAM e o AWS SDK for .NET - Amazon Relational Database Service

Conectar-se à instância de banco de dados usando a autenticação do IAM e o AWS SDK for .NET

Você pode se conectar a uma instância de banco de dados do RDS para MariaDB, RDS para MySQL ou RDS para PostgreSQL com a AWS SDK for .NET, conforme descrito a seguir.

Pré-requisitos

Veja a seguir os pré-requisitos para se conectar à instância de banco de dados usando a autenticação do IAM:

Exemplos

O exemplo de código a seguir mostra como gerar um token de autenticação e usá-lo para se conectar a uma instância de banco de dados.

Para executar esse exemplo de código, você precisa do AWS SDK for .NET, encontrado no site AWS. Os pacotes AWSSDK.CORE e AWSSDK.RDS são necessários. Para se conectar a uma instância de banco de dados, use o conector de banco de dados .NET para o mecanismo de banco de dados, como MySqlConnector para MariaDB ou MySQL ou Npgsql para PostgreSQL.

Esse código se conecta a uma instância de banco de dados MariaDB ou MySQL. Modifique os valores das seguintes variáveis, conforme necessário:

  • server: o endpoint da instância de banco de dados que você deseja acessar

  • user: a conta de banco de dados que você deseja acessar

  • database: o banco de dados que você deseja acessar

  • port: o número da porta usada para se conectar à instância de banco de dados

  • SslMode: o modo SSL a ser usado

    Quando você usa SslMode=Required, a conexão SSL verifica o endpoint da instância de banco de dados em relação ao endpoint no certificado SSL.

  • SslCa: o caminho completo para o certificado SSL do Amazon RDS

    Para baixar um certificado, consulte Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados.

nota

Não é possível usar um registro DNS personalizado do Route 53 em vez do endpoint da instância de banco de dados para gerar o token de autenticação.

using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; using Amazon; namespace ubuntu { class Program { static void Main(string[] args) { var pwd = Amazon.RDS.Util.RDSAuthTokenGenerator.GenerateAuthToken(RegionEndpoint.USEast1, "mysqldb.123456789012.us-east-1.rds.amazonaws.com", 3306, "jane_doe"); // for debug only Console.Write("{0}\n", pwd); //this verifies the token is generated MySqlConnection conn = new MySqlConnection($"server=mysqldb.123456789012.us-east-1.rds.amazonaws.com;user=jane_doe;database=mydB;port=3306;password={pwd};SslMode=Required;SslCa=full_path_to_ssl_certificate"); conn.Open(); // Define a query MySqlCommand sampleCommand = new MySqlCommand("SHOW DATABASES;", conn); // Execute a query MySqlDataReader mysqlDataRdr = sampleCommand.ExecuteReader(); // Read all rows and output the first column in each row while (mysqlDataRdr.Read()) Console.WriteLine(mysqlDataRdr[0]); mysqlDataRdr.Close(); // Close connection conn.Close(); } } }

Esse código se conecta a uma instância de banco de dados PostgreSQL.

Modifique os valores das seguintes variáveis, conforme necessário:

  • Server: o endpoint da instância de banco de dados que você deseja acessar

  • User ID: a conta de banco de dados que você deseja acessar

  • Database: o banco de dados que você deseja acessar

  • Port: o número da porta usada para se conectar à instância de banco de dados

  • SSL Mode: o modo SSL a ser usado

    Quando você usa SSL Mode=Required, a conexão SSL verifica o endpoint da instância de banco de dados em relação ao endpoint no certificado SSL.

  • Root Certificate: o caminho completo para o certificado SSL do Amazon RDS

    Para baixar um certificado, consulte Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados.

nota

Não é possível usar um registro DNS personalizado do Route 53 em vez do endpoint da instância de banco de dados para gerar o token de autenticação.

using System; using Npgsql; using Amazon.RDS.Util; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var pwd = RDSAuthTokenGenerator.GenerateAuthToken("postgresmydb.123456789012.us-east-1.rds.amazonaws.com", 5432, "jane_doe"); // for debug only Console.Write("{0}\n", pwd); //this verifies the token is generated NpgsqlConnection conn = new NpgsqlConnection($"Server=postgresmydb.123456789012.us-east-1.rds.amazonaws.com;User Id=jane_doe;Password={pwd};Database=mydb;SSL Mode=Require;Root Certificate=full_path_to_ssl_certificate"); conn.Open(); // Define a query NpgsqlCommand cmd = new NpgsqlCommand("select count(*) FROM pg_user", conn); // Execute a query NpgsqlDataReader dr = cmd.ExecuteReader(); // Read all rows and output the first column in each row while (dr.Read()) Console.Write("{0}\n", dr[0]); // Close connection conn.Close(); } } }

Se você quiser se conectar a uma instância de banco de dados por meio de um proxy, consulte Conectar-se a um proxy usando autenticação do IAM.