SSL/TLS を使用した MariaDB DB インスタンスへのクライアント接続の暗号化 - Amazon Relational Database Service

SSL/TLS を使用した MariaDB DB インスタンスへのクライアント接続の暗号化

Secure Sockets Layer (SSL) は、クライアントとサーバー間のネットワーク接続を安全に保つための業界標準のプロトコルです。SSL バージョン 3.0 以降では、名前が Transport Layer Security (TLS) に変更されています。Amazon RDS は、MariaDB DB インスタンス向けに SSL/TLS での暗号化をサポートしています。SSL/TLS を使用して、アプリケーションクライアントと MariaDB インスタンス間の接続を暗号化できます。SSL/TLS サポートは、すべての AWS リージョン で提供されています。

MariaDB DB インスタンスで SSL/TLS を使用する

Amazon RDS によって、Amazon RDS によるインスタンスのプロビジョニング時、SSL/TLS 証明書が作成され、DB インスタンスにインストールされます。これらの証明書は認証局によって署名されます。SSL/TLS 証明書には、なりすまし攻撃から保護するために、SSL/TLS 証明書の共通名 (CN) として DB インスタンスのエンドポイントが含まれています。

Amazon RDS によって作成された SSL/TLS 証明書は信頼されたルートエンティティであり、ほとんどの場合は使用できますが、アプリケーションが証明書チェーンを受け入れていない場合は使用できない可能性があります。アプリケーションが証明書チェーンを受け入れていない場合は、AWS リージョン に接続している中間証明書の使用が必要になる場合があります。たとえば、SSL/TLS を使用して AWS GovCloud (US) に接続するには、中間証明書を使用する必要があります。

証明書のダウンロードについては、SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化 を参照してください。MySQL での SSL/TLS の使用の詳細については、「新しい SSL/TLS 証明書を使用して MariaDB インスタンスに接続するようにアプリケーションを更新する」を参照してください。

Amazon RDS for MariaDB は、Transport Layer Security (TLS) バージョン 1.3、1.2、1.1、および 1.0 をサポートしています。TLS のサポートは MariaDB のバージョンによって異なります。次の表は、MariaDB バージョンの TLS サポートを示しています。

TLS のバージョン MariaDB 10.11 MariaDB 10.6 MariaDB 10.5 MariaDB 10.4

TLS 1.3

すべてのマイナーバージョン

すべてのマイナーバージョン

すべてのマイナーバージョン

すべてのマイナーバージョン

TLS 1.2

すべてのマイナーバージョン

すべてのマイナーバージョン

すべてのマイナーバージョン

すべてのマイナーバージョン

TLS 1.1

10.11.6 以前

10.6.16 以前

10.5.23 以前

10.4.32 以前

TLS 1.0

10.11.6 以前

10.6.16 以前

10.5.23 以前

10.4.32 以前

特定のユーザーアカウントに対して SSL/TLS 接続を要求できます。例えば、MariaDB バージョンに応じて以下のいずれかのステートメントを使用し、ユーザーアカウント encrypted_user で SSL/TLS 接続を要求できます。

次のステートメントを使用します。

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

MariaDB での SSL/TLS 接続の詳細については、MariaDB ドキュメントの「Securing Connections for Client and Server」(クライアントとサーバーの接続の保護) を参照してください。

MariaDB DB インスタンスへのすべての接続に SSL/TLS を要求する

MariaDB DB インスタンスへのすべてのユーザー接続が SSL/TLS を使用することを、require_secure_transport パラメータを使用して要求します。デフォルトでは、require_secure_transport パラメータが OFF に設定されています。require_secure_transport パラメータを ON に設定すれば、DB インスタンスへの接続で SSL/TLS を必須にすることができます。

注記

require_secure_transport パラメーターは、MariaDB バージョン 10.5 以降でのみサポートされます。

require_secure_transport パラメータの値は、DB インスタンスの DB パラメータグループを更新することで設定できます。変更を有効にするために、DB インスタンスを再起動する必要はありません。

DB インスタンスに対して require_secure_transport パラメータが ON に設定されている場合、データベースクライアントが暗号化された接続を確立できれば、データベースクライアントはそのクラスターに接続できます。それ以外の場合は、次のようなエラーメッセージがクライアントに返されます。

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

パラメータの設定の詳細については、「DB パラメータグループのパラメータの変更」を参照してください。

require_secure_transport パラメータの詳細については、MMariaDB のドキュメントを参照してください。

SSL/TLS を使用した MySQL コマンドラインクライアントからの接続 (暗号化)

MySQL 5.7 バージョン、MySQL 8.0 バージョン、または MariaDB バージョンを使用している場合は、mysql クライアントプログラムのパラメータが若干異なります。

使用しているバージョンを確認するには、--version オプションを指定しながら mysql コマンドを実行します。次の例の出力では、MariaDB のクライアントプログラムが使用されていることが確認できます。

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

Amazon Linux、CentOS、SUSE、Debianなど、ほとんどのLinux ディストリビューションでは、MySQL をMariaDB に置き換えており、mysql バージョンは MariaDB と同じものを使用しています。

SSL/TLS を使用して DB インスタンスに接続するには、以下のステップを実行します。

MySQL コマンドラインクライアントを使用して SSL/TLS で DB インスタンスに接続するには
  1. すべての AWS リージョン で使用できるルート証明書をダウンロードします。

    証明書のダウンロードについては、SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化 を参照してください。

  2. MySQL コマンドラインクライアントを使用して、SSL/TLS 暗号化を使用して DB インスタンスに接続します。-h パラメータは、DB インスタンスの DNS 名 (エンドポイント) に置き換えます。--ssl-ca パラメータは、必要に応じて SSL/TLS 証明書のファイル名に置き換えます。-P パラメータは、使用中の DB インスタンスのポートに置き換えます。-u パラメータでは、マスターユーザーなどの有効なデータベースユーザーのユーザー名に置き換えます。プロンプトが表示されたら、マスターユーザーパスワードを入力します。

    次の例は、MariaDB で --ssl-ca パラメータを使用しながら、クライアントを起動する方法を示しています。

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

    SSL/TLS 接続で DB インスタンスのエンドポイントを SSL/TLS 証明書のエンドポイントと照合することを義務付けるには、次のコマンドを入力します。

    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

    次の例は、MySQL 5.7 以降で --ssl-ca パラメータを使用しながら、クライアントを起動する方法を示しています。

    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. プロンプトが表示されたら、マスターユーザーパスワードを入力します。

次のような出力が表示されます。

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)]>