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 インスタンスに接続するには
-
すべての AWS リージョン で使用できるルート証明書をダウンロードします。
証明書のダウンロードについては、SSL/TLS を使用した DB インスタンスまたはクラスターへの接続の暗号化 を参照してください。
-
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 -umyadmin
-pSSL/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 -umyadmin
-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 -umyadmin
-p プロンプトが表示されたら、マスターユーザーパスワードを入力します。
次のような出力が表示されます。
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)]>