是否可以在 MySQL 中獨佔授予元資料權限?
P粉715274052
P粉715274052 2024-03-21 20:02:42
0
1
364

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學習者快速成長!