Ist es möglich, Metadatenberechtigungen ausschließlich in MySQL zu erteilen?
P粉715274052
P粉715274052 2024-03-21 20:02:42
0
1
393

TLDR;

Ziel:

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?

Version

MySQL 8+

Versuchen Sie:

Vor dieser Frage,

Ich habe es versucht oder weiß:

  • Schauen Sie sich die offizielle MySQL-Dokumentation zu Berechtigungen an (bitte lassen Sie mich wissen, wenn ich dort eine Antwort verpasst habe)
  • Suchschlüsselwörter auf SOF: mysqlprivilegemetadataetc.
  • Mit meinen DBA-Freunden Lösungen finden
  • Gewähren Sie dem Benutzer showdatabases die Berechtigung, kann aber nur die Schemaliste abrufen
  • Wie wir alle wissen, sind alle Mittel für infomatica_schema verschwendet
  • SELECT ON *.* ist eine andere Antwort, aber mein Anführer möchte keine Daten dadurch preisgeben

Hintergrund:

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粉715274052
P粉715274052

Antworte allen(1)
P粉739706089

我想我找到了解决这个问题的方法,但这只是一种黑客行为,而不是真正的解决方案。

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 权限才能查看存储过程或函数的主体。但您在问题中没有提到审计员查看例程。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage