Contrôle d'accès, étape 1 : Vérification de la connexion <<< |
Contrôle d'accès, étape 2 : Vérification de la requête | Quand les modifications de privilèges prennent-ils effets ? >>> |
5.4 Règles de sécurité et droits d'accès au serveur MySQL 5 Administration du serveur Manuel de Référence MySQL 4.1 : Version Française . Rôle du système de privilèges . Comment fonctionne le système de droits . Droits fournis par MySQL . Se connecter au serveur MySQL . Contrôle d'accès, étape 1 : Vérification de la connexion ->Contrôle d'accès, étape 2 : Vérification de la requête . Quand les modifications de privilèges prennent-ils effets ? . Causes des erreurs Access denied . Hashage de mots de passe en MySQL 4.1 |
5.4.6 Contrôle d'accès, étape 2 : Vérification de la requêteUne fois que vous avez établi la connexion, le serveur passe à l'étape 2. Pour chaque requête qui est fournie avec la connexion, le serveur vérifie si vous avez les droits suffisants pour exécuter une commande, en fonction du type de commande. C'est à ce moment que les colonnes de droits des tables d'administration entrent en scène. Ces droits peuvent provenir de la table user , db , host , tables_priv ou columns_priv . Les tables d'administration sont manipulées avec les commandes GRANT et REVOKE . (Vous pouvez aussi vous reporter à la section Comment le système de droits fonctionne qui liste les champs présents dans chaque table d'administration). La table d'administration user donne les droits aux utilisateurs au niveau global, c'est à dire que ces droits s'appliquent quelle que soit la base de données courante. Par exemple, si la table user vous donne le droit d'effacement , DELETE , vous pouvez effacer des données dans n'importe quelle base de ce serveur. En d'autres termes, les droits stockés dans la table user sont des droits de super utilisateur. Il est recommandé de ne donner des droits via la table user uniquement aux super utilisateurs, ou aux administrateurs de bases. Pour les autres utilisateurs, il vaut mieux laisser les droits dans la table user à 'N' et donner des droits au niveau des bases uniquement, avec les tables db et host . Les tables db et host donnent des droits au niveau des bases. Les droits peuvent être spécifiés dans ces tables comme ceci :
Les tables tables_priv et columns_priv spécifient les droits au niveau des tables et des colonnes. Les valeurs des droits dans ces tables peuvent être spécifiés avec les caractères spéciaux suivants :
Les tables tables_priv et columns_priv sont triées en fonction des colonnes Host , Db et User . Ce tri est similaire à celui du tri de la table db , même si le tri est bien plus simple, car seul le champ Host peut contenir des caractères jokers. Le processus de vérification est décrit ci-dessous. Si vous êtes familier avec le code source de contrôle d'accès, vous noterez que la description diffère légèrement de l'algorithme utilisé. La description est équivalente à ce que fait en réalité le code. La différence permet une meilleure approche pédagogique.Pour les requêtes d'administration comme SHUTDOWN , RELOAD , etc., le serveur vérifie uniquement l'entrée dans la table user , car c'est la seule table qui spécifie des droits d'administration. Le droit est donné si la ligne utilisée dans la connexion courante dans la table user donne le droit, et sinon, ce droit est interdit. Par exemple, si vous souhaitez exécuter la commande mysqladmin shutdown mais que votre ligne dans la table user ne vous en donne pas le droit ( SHUTDOWN ), vous n'aurez pas le droit sans même vérifier les tables db ou host : ces tables ne contiennent pas de colonne Shutdown_priv , ce qui évite qu'on en ait besoin. Pour les requêtes exploitant une base de données, comme INSERT , UPDATE , etc., le serveur vérifie d'abord les droits globaux de l'utilisateur (droits de super utilisateur), en regardant dans la table user . Si la ligne utilisée dans cette table donne droit à cette opération, le droit est donné. Si les droits globaux dans user sont insuffisants, le serveur déterminera les droits spécifiques à la base avec les tables db et host :
Exprimée en termes booléens, la description précédente du calcul des droits peut être résumé comme ceci :
La table host sert à gérer une liste d'hôtes reconnus et sécuritaires. Chez TcX, la table host contient une liste de toutes les machines du réseau local. Ces machines reçoivent tous les droits. Vous pouvez aussi utiliser la table host pour spécifier les hôtes qui ne sont pas sécuritaires. Supposons que la machine public.votre.domaine t est placée dans une zone publique que vous considérez comme peu sûre. Vous pouvez autoriser l'accès de toutes les machines, hormis celle-ci, grâce à la table host configurée comme ceci :
|
<< | Contrôle d'accès, étape 2 : Vérification de la requête | >> |
Contrôle d'accès, étape 1 : Vérification de la connexion | Règles de sécurité et droits d'accès au serveur MySQL | Quand les modifications de privilèges prennent-ils effets ? |