recherche

Maison  >  Questions et réponses  >  le corps du texte

Est-il possible d'accorder des autorisations de métadonnées exclusivement dans MySQL ?

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 :

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粉715274052P粉715274052295 Il y a quelques jours442

répondre à tous(1)je répondrai

  • P粉739706089

    P粉7397060892024-03-22 18:38:15

    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.

    répondre
    0
  • Annulerrépondre