首頁  >  問答  >  主體

是否可以在 MySQL 中獨佔授予元資料權限?

TLDR;

目標:

是否可以授予某個「審核」使用者僅存取 MySQL 元資料(至少是架構、表、列)的權限,而不存取表中的確切資料?

版本

MySQL 8

嘗試:

在此問題之前,

我已經嘗試過或知道:

背景:

我的公司命令 devops 收集 MySQL 元數據,以用於審計或安全監控或其他問題(我不知道整個故事的細節)。我的領導層預計不會發生不必要的資料外洩。 順便說一句,我不知道他們(也許是審計部門)將收集元資料的具體方法。我所要做的就是為他們創建一個授權使用者。

P粉715274052P粉715274052211 天前367

全部回覆(1)我來回復

  • P粉739706089

    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 權限才能查看預存程序或函數的主體。但您在問題中沒有提到審計員查看例程。

    回覆
    0
  • 取消回覆