

# SSL/TLS を使用した Amazon RDS 上の MariaDB DB インスタンスへのクライアント接続の暗号化
<a name="mariadb-ssl-connections"></a>

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

Amazon RDS を使用すると、SSL/TLS を使用して MariaDB DB インスタンスへのクライアント接続を暗号化し、MariaDB DB インスタンスへのすべての接続に SSL/TLS を要求し、MySQL コマンドラインクライアントから SSL/TLS (暗号化) を使用して接続することで、転送中のデータを保護できます。以下のセクションでは、Amazon RDS 上の MariaDB DB インスタンスの SSL/TLS 暗号化の設定と使用に関するガイダンスを提供します。

**Topics**
+ [Amazon RDS 上の MariaDB DB インスタンスの SSL/TLS サポート](MariaDB.Concepts.SSLSupport.md)
+ [Amazon RDS の MariaDB DB インスタンスへの特定のユーザーアカウントに SSL/TLS を要求する](MariaDB-ssl-connections.require-ssl-users.md)
+ [Amazon RDS 上の MariaDB DB インスタンスへのすべての接続に SSL/TLS を要求する](mariadb-ssl-connections.require-ssl.md)
+ [MySQL コマンドラインクライアントからの SSL/TLS による Amazon RDS 上の MariaDB DB インスタンスへの接続 (暗号化）](USER_ConnectToMariaDBInstanceSSL.CLI.md)

# Amazon RDS 上の MariaDB DB インスタンスの SSL/TLS サポート
<a name="MariaDB.Concepts.SSLSupport"></a>

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 インスタンスまたはクラスターへの接続の暗号化](UsingWithRDS.SSL.md) を参照してください。MySQL での SSL/TLS の使用の詳細については、「[新しい SSL/TLS 証明書を使用して MariaDB インスタンスに接続するようにアプリケーションを更新する](ssl-certificate-rotation-mariadb.md)」を参照してください。

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


| TLS バージョン | MariaDB 11.8 | MariaDB 11.4 | MariaDB 10.11 | MariaDB 10.6 | MariaDB 10.5 | MariaDB 10.4 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  TLS 1.3  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  | 
|  TLS 1.2  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  |  すべてのマイナーバージョン  | 
|  TLS 1.1  |  サポートされません  |  サポートされません  |  サポートされません  |  10.6.16 以前  |  10.5.23 以前  |  10.4.32 以前  | 
|  TLS 1.0  |  サポートされません  |  サポートされません  | サポートされません | 10.6.16 以前 |  10.5.23 以前  |  10.4.32 以前  | 

# Amazon RDS の MariaDB DB インスタンスへの特定のユーザーアカウントに SSL/TLS を要求する
<a name="MariaDB-ssl-connections.require-ssl-users"></a>

Amazon RDS 上の MariaDB DB インスタンスへの特定のユーザーアカウント接続に SSL/TLS 暗号化を要求できます。機密情報を不正アクセスや傍受から保護することは、データの機密性が懸念される場合にセキュリティポリシーを適用する上で非常に重要です。

特定のユーザーのアカウントに SSL/TLS 接続を要求するには、MySQL のバージョンに応じて、次のいずれかのステートメントを使用して、ユーザーアカウントの `encrypted_user` に SSL/TLS 接続を要求します。

これを行うには、以下のステートメントを実行します。

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

MariaDB での SSL/TLS 接続の詳細については、MariaDB ドキュメントの「[Securing Connections for Client and Server](https://mariadb.com/kb/en/securing-connections-for-client-and-server/)」(クライアントとサーバーの接続の保護) を参照してください。

# Amazon RDS 上の MariaDB DB インスタンスへのすべての接続に SSL/TLS を要求する
<a name="mariadb-ssl-connections.require-ssl"></a>

MariaDB DB インスタンスへのすべてのユーザー接続が SSL/TLS を使用することを、`require_secure_transport` パラメータを使用して要求します。バージョン 11.4 以前では、`require_secure_transport` パラメータはデフォルトで `OFF` に設定されています。11.8 以降のバージョンでは、デフォルト値は `ON` に設定され、DB インスタンスへの接続に SSL/TLS が適用されます。非セキュア接続が必要な場合は、`require_secure_transport` パラメータを `OFF` に変更できます。

**注記**  
`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)
```

パラメータの設定の詳細については、「[Amazon RDS の DB パラメータグループのパラメータの変更](USER_WorkingWithParamGroups.Modifying.md)」を参照してください。

`require_secure_transport` パラメータの詳細については、[MMariaDB のドキュメント](https://mariadb.com/docs/ent/ref/mdb/system-variables/require_secure_transport/)を参照してください。

# MySQL コマンドラインクライアントからの SSL/TLS による Amazon RDS 上の MariaDB DB インスタンスへの接続 (暗号化）
<a name="USER_ConnectToMariaDBInstanceSSL.CLI"></a>

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 インスタンスまたはクラスターへの接続の暗号化](UsingWithRDS.SSL.md) を参照してください。

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

1. プロンプトが表示されたら、マスターユーザーパスワードを入力します。

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

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