Heim > Fragen und Antworten > Hauptteil
TLDR;
Ist es möglich, einem „Audit“-Benutzer Zugriff nur auf die MySQL-Metadaten (zumindest das Schema, die Tabellen, Spalten) und nicht auf die genauen Daten in der Tabelle zu gewähren?
MySQL 8+
Vor dieser Frage,
Ich habe es versucht oder weiß:
mysql
、privilege
、metadata
etc.showdatabases
die Berechtigung, kann aber nur die Schemaliste abrufeninfomatica_schema
verschwendetSELECT ON *.*
ist eine andere Antwort, aber mein Anführer möchte keine Daten dadurch preisgeben Mein Unternehmen befiehlt Entwicklern, MySQL-Metadaten für Audits, Sicherheitsüberwachung oder andere Probleme zu sammeln (ich kenne die Details der ganzen Geschichte nicht). Meine Führung geht davon aus, dass es nicht zu unnötigen Datenschutzverletzungen kommt. Übrigens weiß ich nicht, mit welcher spezifischen Methode sie (vielleicht die Prüfungsabteilung) die Metadaten sammeln. Ich muss lediglich einen autorisierten Benutzer für sie erstellen.
P粉7397060892024-03-22 18:38:15
我想我找到了解决这个问题的方法,但这只是一种黑客行为,而不是真正的解决方案。
https://dev.mysql.com/doc /refman/8.0/en/show-tables.html 说:
也就是说,您不能使用 SHOW TABLES,也不能在针对 INFORMATION_SCHEMA 的查询中查看表(因为 SHOW TABLES 实际上只是针对这些系统视图的查询)。
但是“没有特权”的语言让我思考。是否存在用户可以拥有但不允许读取或写入数据的权限?
https://dev.mysql.com/doc/refman /8.0/en/grant.html 说:
SHOW VIEW
怎么样?这仅允许查看元数据,而不允许查询表或视图。
所以我尝试了一下:
mysql> create user 'auditor'@'%'; mysql> grant show view on test.* to 'auditor'@'%';
然后我以该用户身份登录并尝试:
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 | ...
我还可以查看列等。
需要明确的是,这些是具体的表,而不是视图。但由于我的审核员用户对表没有任何权限(甚至是不相关的权限),因此它符合让他们查看有关表的元数据的目的。
在 MySQL 8.0.20 中,他们添加了 SHOW ROUTINES
权限。在此之前,您需要 SELECT
权限才能查看存储过程或函数的主体。但您在问题中没有提到审计员查看例程。