Criptografar conexões de clientes com instâncias de banco de dados do MariaDB com SSL/TLS - Amazon Relational Database Service

Criptografar conexões de clientes com instâncias de banco de dados do MariaDB com SSL/TLS

O Secure Sockets Layer (SSL) é um protocolo padrão do setor para proteger as conexões de rede entre o cliente e o servidor. Após o SSL versão 3.0, o nome mudou para Transport Layer Security (TLS). O Amazon RDS é compatível com criptografia SSL/TLS para instâncias de banco de dados do MariaDB. Usando o SSL/TLS, você pode criptografar uma conexão entre seu cliente de aplicação e sua instância de banco de dados do MariaDB. A compatibilidade com SSL/TLS está disponível em todas as Regiões da AWS.

Usar o SSL/TLS com uma instância de banco de dados do MariaDB

O Amazon RDS cria um certificado SSL/TLS e instala o certificado na instância de banco de dados quando o Amazon RDS provisionar a instância. Esses certificados são assinados por uma autoridade de certificado. O certificado SSL/TLS inclui o endpoint da instância de banco de dados como o nome comum (CN) do certificado SSL/TLS para se proteger contra ataques de falsificação.

Um certificado SSL/TLS criado pelo Amazon RDS é a entidade raiz confiável e deve funcionar na maioria dos casos, mas poderá falhar se sua aplicação não aceitar cadeias de certificados. Se sua aplicação não aceitar cadeias de certificados, talvez seja necessário usar um certificado intermediário para se conectar à sua Região da AWS. Por exemplo, é necessário usar um certificado intermediário para se conectar às regiões AWS GovCloud (US) usando SSL/TLS.

Para obter informações sobre como baixar certificados, consulte Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados. Para obter mais informações sobre como usar o SSL/TLS com o MySQL, consulte Atualizar aplicações para conexão com instâncias do MariaDB usando novos certificados SSL/TLS.

O Amazon RDS para MariaDB é compatível com o Transport Layer Security (TLS) versões 1.3, 1.2, 1.1 e 1.0. A compatibilidade com o TLS depende da versão secundária do MariaDB. A tabela a seguir mostra a compatibilidade das versões secundárias do MariaDB com o TLS.

Versão do TLS MariaDB 10.11 MariaDB 10.6 MariaDB 10.5 MariaDB 10.4

TLS 1.3

Todas as versões secundárias

Todas as versões secundárias

Todas as versões secundárias

Todas as versões secundárias

TLS 1.2

Todas as versões secundárias

Todas as versões secundárias

Todas as versões secundárias

Todas as versões secundárias

TLS 1.1

10.11.6 e anterior

10.6.16 e anterior

10.5.23 e anterior

10.4.32 e anterior

TLS 1.0

10.11.6 e anterior

10.6.16 e anterior

10.5.23 e anterior

10.4.32 e anterior

É possível exigir conexões SSL/TLS para determinadas contas de usuários. Por exemplo, você pode usar uma das seguintes instruções (dependendo de sua versão do MariaDB) para exigir conexões SSL/TLS na conta de usuário encrypted_user.

Use a instrução a seguir.

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

Para obter mais informações sobre as conexões SSL/TLS com o MariaDB, consulte Securing Connections for Client and Server (Como proteger conexões para cliente e servidor) na documentação do MariaDB.

Exigir SSL/TLS para todas as conexões com uma instância de banco de dados do MariaDB

Use o parâmetro require_secure_transport para exigir que todas as conexões de usuários à sua instância de banco de dados do MariaDB usem SSL/TLS. Por padrão, o parâmetro require_secure_transport é definido como OFF. Você pode definir o parâmetro require_secure_transport como ON para exigir SSL/TLS para conexões com a sua instância de banco de dados.

nota

O parâmetro require_secure_transport só é compatível com o MariaDB versão 10.5 e posterior.

Você pode definir o valor de parâmetro require_secure_transport atualizando o grupo de parâmetros do banco de dados de sua instância de banco de dados. Você não precisa reinicializar sua instância de banco de dados para que a alteração entre em vigor.

Quando o parâmetro require_secure_transport é definido como ON para uma instância de banco de dados, um cliente de banco de dados poderá se conectar a ela se puder estabelecer uma conexão criptografada. Caso contrário, uma mensagem de erro semelhante à seguinte é retornada para o cliente:

ERROR 1045 (28000): Access denied for user 'USER'@'localhost' (using password: YES | NO)

Para obter informações sobre como configurar parâmetros, consulte Modificar parâmetros em um grupo de parâmetros de banco de dados.

Para obter mais informações sobre o parâmetro require_secure_transport, consulte a documentação do MariaDB.

Conectar-se a partir do cliente de linha de comando do MySQL com SSL/TLS (criptografado)

Os parâmetros mysql do programa cliente serão ligeiramente diferentes, se você estiver usando a versão do MySQL 5.7, a versão do MySQL 8.0 ou a versão do MariaDB.

Para descobrir qual versão você tem, execute o comando mysql com a opção --version. No exemplo a seguir, a saída mostra que o programa cliente é do MariaDB.

$ mysql --version mysql Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1

A maioria das distribuições Linux, como o Amazon Linux, CentOS, SUSE e Debian, substituiu o MySQL pelo MariaDB, e a versão do mysql neles é de MariaDB.

Para conectar-se à sua instância de banco de dados usando o SSL/TLS, siga estas etapas:

Como conectar-se a uma instância de banco de dados com o SSL/TLS usando o cliente de linha de comando do MySQL
  1. Você pode baixar um certificado raiz que funciona para todas as Regiões da AWS.

    Para obter informações sobre como baixar certificados, consulte Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados.

  2. Use um cliente da linha de comando do MySQL para conectar-se a uma instância de banco de dados com criptografia SSL/TLS. Para o parâmetro -h, substitua o nome do DNS (endpoint) da instância de banco de dados. Para o parâmetro --ssl-ca, substitua o nome do arquivo de certificado SSL/TLS. Para o parâmetro -P, substitua a porta da sua instância de banco de dados. Para o parâmetro -u, substitua o nome de usuário de um usuário de banco de dados válido, como o usuário principal. Digite a senha do usuário mestre quando lhe for solicitado.

    O exemplo a seguir mostra como iniciar o cliente usando o parâmetro --ssl-ca usando o cliente MariaDB:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p

    Para exigir que a conexão SSL/TLS verifique o endpoint da instância de banco de dados em relação ao endpoint no certificado SSL/TLS, insira o seguinte comando:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-verify-server-cert -P 3306 -u myadmin -p

    O exemplo a seguir mostra como iniciar o cliente usando o parâmetro --ssl-ca com o MySQL 5.7 e versões posteriores.

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p
  3. Digite a senha do usuário mestre quando lhe for solicitado.

Você deve ver saída semelhante ao seguinte:

Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 31 Server version: 10.6.10-MariaDB-log Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>