MariaDB MaxScaleとバックエンドクラスターのデータベースユーザーアカウントを構成するには、通常、重複した作業が必要でした。これは、実際のクライアントホストとMaxScaleホストの両方にアカウントエントリが存在する必要があるためです。 MaxScaleは、実際のクライアントホストのユーザーエントリに対して着信ユーザーを認証します。 MaxScaleがルーティングセッションを作成するとき、クライアントのユーザー名とパスワードのスクランブルを使用して、クライアントをバックエンドに対して認証します。バックエンドは、MaxScaleを実行しているマシンからの接続を確認します。ホスト名でワイルドカード(セキュリティが低い)を使用していない限り、両方のホストのエントリが必要です。ユーザーアカウントが頻繁に変更されると、この複製が煩雑になり、エラーが発生する可能性があります。
MariaDB Server 10.3は、接続がホストを自己指定できるようにするプロキシプロトコルのサポートを追加します。プロトコルは、接続が確立されたら、クライアントは最初に(MySQLハンドシェイクに応答する前に)プロキシプロトコルヘッダーを送信する必要があると述べています。このヘッダーには、実際のホスト名を使用する代わりに、サーバーが接続元の接続を想定する必要があるホスト名が含まれています。セキュリティ上の理由から、プロキシヘッダーは、サーバー変数「proxy_protocol_networks」にリストされているアドレスからのみ許可されます。したがって、この機能により、データベースのバックエンドに実際のユーザーアカウントがなくても、選択したIPアドレスをプロキシとして機能させることができます。例として、ヘッダー「PROXY TCP4 192.168.0.1 192.168.0.2 56324 443」は、クライアントが192.168.0.1から接続しているかのようにクライアントを認証するようにサーバーに指示します。
この機能は、MaxScale2.2およびMariaDBServer10.3を使用するときにユーザーアカウント管理を簡素化するために使用できます。 MaxScaleでこの機能を有効にするには、MaxScale構成ファイルのサーバー定義に「proxy_protocol =on」という行を追加します(通常、これはすべてのサーバーセクションに追加する必要があります)。
MaxScaleサーバー定義の例:
[MyServer1]
type=server
address=123.456.789.0
port=3306
protocol=MariaDBBackend
proxy_protocol=yes
MaxScaleがサーバー上にクライアントセッションを作成しようとすると、MaxScaleは最初にクライアントの元のホスト名でプロキシヘッダーを送信します。 MaxScale IPがサーバーの「proxy_protocol_networks」内で見つかった場合、ヘッダーが読み取られ、実際のクライアントアドレスを使用して接続が認証されます。サーバーの設定については、サーバーのドキュメントを参照してください。
MaxScale IPが「111.222.333.4」であると仮定して、サーバー構成の[mysqld]セクションに以下を追加します。
proxy_protocol_networks = 111.222.333.4
これらの設定では、着信クライアント「normal_user」は、mysql.user-tableにホスト「111.222.333.4」のエントリを持っている必要はありません。実際のクライアントホストのエントリのみが必要です。
今すぐダウンロードできるMariaDBTX3.0の一部としてMariaDBMaxScale2.2とMariaDBServer10.3を入手してください。