3.4.3. 特定のユーザーアカウントに TLS で暗号化された接続を要求する
機密データの送信を保護するために、特定の MySQL アカウントに対して TLS 暗号化接続を必須とするように設定できます。
すべての接続にセキュアなトランスポートが必要なサーバーで設定できない場合は (require_secure_transport = on)、TLS 暗号化を必要とするように個別のユーザーアカウントを設定します。
前提条件
- MySQL サーバーで TLS サポートが有効になっている。
- セキュアなトランスポートを必要とするように設定するユーザーが存在する。
- CA 証明書がクライアントに保存されている。
手順
管理ユーザーとして MySQL サーバーに接続します。
# mysql -u root -p -h server.example.com管理ユーザーがリモートでサーバーにアクセスするパーミッションを持たない場合は、MySQL サーバーでコマンドを実行し、
localhostに接続します。REQUIRE SSL句を使用して、ユーザーが TLS 暗号化接続を使用して接続する必要があるよう強制します。MySQL [(none)]> ALTER USER 'example'@'%' REQUIRE SSL;
検証
TLS 暗号化を使用して、
exampleユーザーとしてサーバーに接続します。# mysql -u example -p -h server.example.com ... MySQL [(none)]>エラーが表示されず、インタラクティブな MySQL コンソールにアクセスできる場合は、TLS による接続は成功しています。
デフォルトでは、サーバーが TLS 暗号化を提供している場合、クライアントは自動的にその TLS 暗号化を使用します。したがって、
--ssl-ca=ca.crt.pemおよび--ssl-mode=VERIFY_IDENTITYオプションは必須ではありません。ただし、これらのオプションを使用するとクライアントはサーバーの ID を検証するため、セキュリティーが向上します。TLS を無効にして、
exampleユーザーとして接続を試みます。# mysql -u example -p -h server.example.com --ssl-mode=DISABLED ERROR 1045 (28000): Access denied for user 'example'@'server.example.com' (using password: YES)このユーザーには TLS が必要なのにもかかわらず無効になっているため、サーバーはログインの試行を拒否しました (
--ssl-mode=DISABLED)。