MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL接続を安全なトランスポートに制限する方法

MySQLでは、MySQL CommunityとMySQL Enterpriseの両方において鍵生成プロセスが簡素化され、セキュアな接続の確立がこれまでよりも容易になりました。TLSv1.1およびTLSv1.2へのサポート拡充により、通信のセキュリティが大幅に強化されています。さらに、接続タイプを詳細に把握できるようになったことで、管理者は各クライアントが安全な方法で接続しているかどうかを容易に確認できるようになりました。

こうしたセキュアな接続への注目の高まりを受け、MySQLサーバーには新しいサーバーサイド設定オプションが導入されました。このオプションを使用すると、管理者は「安全なトランスポート」を使用するクライアントからの接続のみを許可するようサーバーを設定できます。ここで重要になるのが、そもそもどのような接続方式が「安全」とみなされるのかという点です。

安全なトランスポートとは

MySQLにおいて「安全」とみなされるトランスポート(接続方式)は、以下の3種類です。

  • SSL/TLS
  • ソケット(Socket)
  • 共有メモリ(Shared Memory)

一方、Windows環境で利用される名前付きパイプ(named pipe)による接続は、安全なトランスポートとしては扱われません。名前付きパイプ接続は主にローカルで使用されますが、リモートからも接続が可能であり、ネットワーク上を流れるデータ(ペイロード)を暗号化して保護する仕組みを持たないためです。

--require_secure_transport オプション

新しく追加されたのが --require_secure_transport 設定オプションです。これはブール型のオプションで、デフォルト値はOFFに設定されています。デフォルト状態では、従来の動作と同様に、上記のサポート対象プロトコルを使用する接続であればすべて受け入れられます。

一方、--require_secure_transport=ON を設定すると、サーバーはSSL/TLS・ソケット・共有メモリのいずれか以外の接続方式を使う新しい接続を拒否するようになります。

安全でない接続が拒否された場合

安全でない接続によって拒否されたクライアントには、次のようなエラーが返されます。

実行例

D:\mysql-advanced-5.7.10-winx64>bin\mysql -uroot -P3310 --skip-ssl

出力結果

ERROR 3159 (HY000): Connections using insecure transport are prohibited while
--require_secure_transport=ON.

アカウントレベルの要件との連携

MySQLでは、特定のアカウントに対してTLS接続を必須にすることも可能です。これは、CREATE USER文やALTER USER文にREQUIRE SSL句を含めることで実現できます。新しく追加された --require_secure_transport オプションは、こうしたアカウントレベルでの要件を補完するものであり、サーバー全体(グローバルレベル)で安全なトランスポートの使用を強制します。両者を組み合わせることで、柔軟かつ堅牢な接続セキュリティポリシーを構築できます。

  1. MySQLでリモート接続を許可する方法|セキュリティ対策とOS別設定手順を徹底解説

    MySQLデータベースを運用している方なら、セキュリティの維持がいかに大変かを実感されていることでしょう。SQLインジェクションによる不正アクセスやブルートフォース(総当たり)攻撃など、特にリモートでデータベースを扱う場合、データを安全に守るのは決して簡単ではありません。SQLサーバーでリモート接続を許可する設定方法はいくつかありますが、慎重に行う必要があります。MySQLサーバーでリモート接続を許可すると、ハッカーにとって格好の標的になる可能性があるからです。MySQLデータベースへの安全なリモート接続を実現するために、知っておくべきポイントを詳しく解説します。作業を始める前にMySQLデー

  2. JavaでRedis Enterprise CloudへのSSL接続を有効化する方法

    サーバーとの安全な接続を利用したソフトウェア開発は、すべての開発者が身につけておくべきスキルです。特定の本番環境でSSLを有効にしないと決めたとしても、扱うすべてのサーバーへの接続を保護する方法は知っておくべきでしょう。この記事は、Python向けの「Redis Enterprise Cloudへの安全な接続の有効化」の記事をお約束どおり、Javaユーザーの方向けにフォローアップしたものです。 この記事では、SSLを使用してRedis Enterprise CloudとJavaクライアントプログラム間の暗号化接続を有効化し、テストおよび構成するための簡単なプロセスを解説します。Javaプログラ