TLDR;
Est-il possible d'accorder à un utilisateur « d'audit » l'accès uniquement aux métadonnées MySQL (au moins le schéma, les tables, les colonnes) et non aux données exactes de la table ?
MySQL 8+
Avant cette question,
J'ai essayé ou je sais :
mysql
、privilege
、metadata
etc.showdatabases
l'autorisation, mais ne pouvez obtenir que la liste des schémasinfomatica_schema
est gaspilléSELECT ON *.*
est une autre réponse mais mon chef ne veut pas divulguer de données à travers elleMon entreprise commande à Devops de collecter des métadonnées MySQL à des fins d'audit, de surveillance de la sécurité ou d'autres problèmes (je ne connais pas les détails de toute l'histoire). Mes dirigeants prévoient qu’aucune violation inutile des données ne se produira. BTW, je ne connais pas la méthode spécifique par laquelle ils (peut-être le service d'audit) collecteront les métadonnées. Tout ce que j'ai à faire est de créer un utilisateur autorisé pour eux.
Je pense avoir trouvé une solution à ce problème, mais ce n'est qu'un hack et pas une vraie solution.
https://dev.mysql.com/doc /refman/8.0/en/show-tables.html a dit :
Autrement dit, vous ne pouvez pas utiliser SHOW TABLES, ni afficher la table dans une requête sur INFORMATION_SCHEMA (puisque SHOW TABLES n'est en réalité qu'une requête sur ces vues système).
Mais le langage « pas de privilège » m'a fait réfléchir. Existe-t-il des autorisations qu'un utilisateur peut avoir mais qui ne sont pas autorisées à lire ou à écrire des données ?
https://dev.mysql.com/doc/refman /8.0/en/grant.html a dit :
SHOW VIEW
Comment ça va ? Cela permet uniquement d'afficher les métadonnées, pas d'interroger les tables ou les vues.Alors j'ai essayé :
Ensuite, je me suis connecté en tant qu'utilisateur et j'ai essayé :
Je peux également afficher les colonnes, etc.
Pour être clair, ce sont des tableaux spécifiques, pas des vues. Mais comme mon utilisateur auditeur ne dispose d'aucune autorisation sur la table (pas même d'autorisations non pertinentes), cela a pour but de lui permettre de voir les métadonnées sur la table.
Dans MySQL 8.0.20, ils ont ajouté l'autorisation
SHOW ROUTINES
权限。在此之前,您需要SELECT
pour afficher le corps d'une procédure ou d'une fonction stockée. Mais vous n'avez pas mentionné la routine de visualisation des auditeurs dans votre question.