是否可以在 MySQL 中独占地授予元数据权限?
P粉715274052
P粉715274052 2024-03-21 20:02:42
0
1
363

TLDR;

目标:

是否可以向某个“审核”用户授予仅访问 MySQL 元数据(至少是架构、表、列)的权限,而不访问表中的确切数据?

版本

MySQL 8+

尝试:

在此问题之前,

我已经尝试过或知道:

  • 查看有关权限的 MySQL 官方文档(如果我错过了其中的答案,请通知我)
  • SOF上搜索关键词:mysqlprivilegemetadata
  • 与我的 DBA 朋友一起寻找解决方案
  • 授予用户showdatabases权限,但只能获取schema列表
  • 众所周知,对 infomatica_schema 的所有资助都白费了
  • SELECT ON *.* 是另一个答案,但我的领导不想通过它泄漏数据

背景:

我的公司命令 devops 收集 MySQL 元数据,以用于审计或安全监控或其他问题(我不知道整个故事的细节)。我的领导预计不会发生不必要的数据泄露。 顺便说一句,我不知道他们(也许是审计部门)将收集元数据的具体方法。我所要做的就是为他们创建一个授权用户。

P粉715274052
P粉715274052

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!