Est-il possible d'accorder des autorisations de métadonnées exclusivement dans MySQL ?
P粉715274052
P粉715274052 2024-03-21 20:02:42
0
1
429

TLDR;

Objectif :

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 ?

Version

MySQL 8+

Essayez :

Avant cette question,

J'ai essayé ou je sais :

  • Consultez la documentation officielle de MySQL sur les autorisations (veuillez me faire savoir si j'ai manqué une réponse)
  • Rechercher des mots-clés sur SOF : mysqlprivilegemetadataetc.
  • Trouver des solutions avec mes amis DBA
  • Accordez à l'utilisateur showdatabases l'autorisation, mais ne pouvez obtenir que la liste des schémas
  • Comme nous le savons tous, tout le financement pour infomatica_schema est gaspillé
  • SELECT ON *.* est une autre réponse mais mon chef ne veut pas divulguer de données à travers elle

Contexte :

Mon 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.

P粉715274052
P粉715274052

répondre à tous(1)
P粉739706089

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 VIEWComment ça va ? Cela permet uniquement d'afficher les métadonnées, pas d'interroger les tables ou les vues.

Alors j'ai essayé :

mysql> create user 'auditor'@'%';
mysql> grant show view on test.* to 'auditor'@'%';

Ensuite, je me suis connecté en tant qu'utilisateur et j'ai essayé :

mysql> show grants;
+----------------------------------------------+
| Grants for auditor@%                         |
+----------------------------------------------+
| GRANT USAGE ON *.* TO `auditor`@`%`          |
| GRANT SHOW VIEW ON `test`.* TO `auditor`@`%` |
+----------------------------------------------+

mysql> use test

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| Accounts       |
| Bugs           |
| BugsProducts   |
| BugStatus      |
...

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal