La configuration des comptes d'utilisateurs de base de données pour MariaDB MaxScale et un cluster principal a généralement nécessité un effort en double. En effet, une entrée de compte doit exister à la fois pour l'hôte client réel et l'hôte MaxScale. MaxScale authentifie les utilisateurs entrants par rapport à l'entrée de l'utilisateur avec l'hôte client réel. Lorsque MaxScale crée la session de routage, il utilise le nom d'utilisateur et le mot de passe du client pour authentifier le client auprès du backend. Le backend voit la connexion provenant de la machine exécutant MaxScale. À moins que le nom d'hôte n'utilise des caractères génériques (faible sécurité), des entrées pour les deux hôtes sont requises. Si les comptes utilisateurs sont souvent modifiés, cette duplication peut devenir lourde et entraîner des erreurs.
MariaDB Server 10.3 ajoute la prise en charge du protocole proxy qui permet à une connexion de désigner elle-même son hôte. Le protocole stipule que lorsqu'une connexion a été établie, le client doit d'abord (avant de répondre à la prise de contact MySQL) envoyer un en-tête de protocole proxy. Cet en-tête contient le nom d'hôte dont le serveur doit imaginer l'origine de la connexion au lieu d'utiliser le nom d'hôte réel. Pour des raisons de sécurité, les en-têtes de proxy ne sont autorisés qu'à partir des adresses répertoriées dans la variable de serveur « proxy_protocol_networks ». La fonctionnalité permet ainsi à certaines adresses IP d'agir en tant que proxys sans avoir de comptes d'utilisateurs réels sur le backend de la base de données. Par exemple, l'en-tête "PROXY TCP4 192.168.0.1 192.168.0.2 56324 443" indique au serveur d'authentifier le client comme s'il se connectait depuis 192.168.0.1.
Cette fonctionnalité peut être utilisée pour simplifier la gestion des comptes d'utilisateurs lors de l'utilisation de MaxScale 2.2 et MariaDB Server 10.3. Pour activer la fonctionnalité dans MaxScale, ajoutez la ligne "proxy_protocol=on" à une définition de serveur dans votre fichier de configuration MaxScale (généralement, cela doit être ajouté à toutes les sections de serveur).
Un exemple de définition de serveur MaxScale :
[MyServer1]
type=server
address=123.456.789.0
port=3306
protocol=MariaDBBackend
proxy_protocol=yes
Lorsque MaxScale tente de créer une session client sur le serveur, MaxScale envoie d'abord un en-tête proxy avec le nom d'hôte d'origine du client. Si l'adresse IP MaxScale est trouvée dans le "proxy_protocol_networks" du serveur, l'en-tête est lu et la connexion authentifiée à l'aide de l'adresse réelle du client. Pour le paramètre du serveur, consultez la documentation du serveur pour plus d'informations.
En supposant que MaxScale IP est "111.222.333.4", ajoutez ce qui suit à la section [mysqld] de la configuration du serveur :
proxy_protocol_networks = 111.222.333.4
Avec ces paramètres, un client entrant "normal_user" n'a pas besoin d'avoir une entrée pour l'hôte "111.222.333.4" dans la table mysql.user. Seule une entrée pour l'hôte client réel est requise.
Obtenez MariaDB MaxScale 2.2 et MariaDB Server 10.3 dans le cadre de MariaDB TX 3.0, disponibles en téléchargement dès maintenant.