A configuração de contas de usuário de banco de dados para MariaDB MaxScale e um cluster de back-end normalmente exigiu um esforço duplicado. Isso ocorre porque uma entrada de conta deve existir tanto para o host do cliente real quanto para o host MaxScale. MaxScale autentica os usuários de entrada em relação à entrada do usuário com o host do cliente real. Quando MaxScale cria a sessão de roteamento, ele usa o nome de usuário e a senha do cliente para autenticar o cliente no back-end. O back-end vê a conexão proveniente da máquina que executa o MaxScale. A menos que o nome do host use curingas (baixa segurança), são necessárias entradas para ambos os hosts. Se as contas de usuário forem modificadas com frequência, essa duplicação pode ser complicada e levar a erros.
O MariaDB Server 10.3 adiciona suporte para o protocolo proxy que permite que uma conexão auto-designe seu host. O protocolo afirma que quando uma conexão for estabelecida, o cliente deve primeiro (antes de responder ao handshake do MySQL) enviar um cabeçalho de protocolo proxy. Este cabeçalho contém o nome do host que o servidor deve imaginar a conexão originada em vez de usar o nome do host real. Por motivos de segurança, os cabeçalhos de proxy só são permitidos a partir de endereços listados na variável do servidor “proxy_protocol_networks”. O recurso permite, portanto, selecionar endereços IP para atuar como proxies sem ter contas de usuário reais no back-end do banco de dados. Como exemplo, o cabeçalho “PROXY TCP4 192.168.0.1 192.168.0.2 56324 443” instrui o servidor a autenticar o cliente como se o cliente estivesse se conectando de 192.168.0.1.
Esse recurso pode ser usado para simplificar o gerenciamento de contas de usuários ao usar MaxScale 2.2 e MariaDB Server 10.3. Para habilitar o recurso no MaxScale, adicione a linha “proxy_protocol=on” a uma definição de servidor no arquivo de configuração do MaxScale (normalmente, isso deve ser adicionado a todas as seções do servidor).
Um exemplo de uma definição de servidor MaxScale:
[MyServer1]
type=server
address=123.456.789.0
port=3306
protocol=MariaDBBackend
proxy_protocol=yes
Quando MaxScale tenta criar uma sessão de cliente no servidor, MaxScale primeiro envia um cabeçalho de proxy com o nome de host original do cliente. Se o IP MaxScale for encontrado dentro do “proxy_protocol_networks” do servidor, o cabeçalho é lido e a conexão autenticada usando o endereço real do cliente. Para a configuração do servidor, consulte a documentação do servidor para obter mais informações.
Supondo que o IP do MaxScale seja “111.222.333.4”, adicione o seguinte à seção [mysqld] da configuração do servidor:
proxy_protocol_networks = 111.222.333.4
Com essas configurações, um cliente de entrada “normal_user” não precisa ter uma entrada para o host “111.222.333.4” na tabela mysql.user. Apenas uma entrada para o host do cliente real é necessária.
Obtenha o MariaDB MaxScale 2.2 e o MariaDB Server 10.3 como parte do MariaDB TX 3.0, disponível para download agora.