首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 權限傳遞機制:WITH GRANT OPTION 詳解與風險控制

     編輯:MySQL 資料庫相關知識

WITH GRANT OPTION 運作原理

當帳號擁有 WITH GRANT OPTION 時,可將自身擁有的權限授予其他帳號,形成權限鏈:

-- host 帳號擁有 UPDATE, DELETE 權限並帶 GRANT OPTION
GRANT DELETE, UPDATE ON *.* TO 'admin2'@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;

執行後,admin2 同樣擁有 DELETE, UPDATE 且可進一步轉授。

權限傳遞鏈路示意

root (ALL PRIVILEGES + GRANT OPTION)
   └── grant → dba_user (SELECT, INSERT, UPDATE + GRANT OPTION)
                └── grant → dev_user (SELECT, INSERT)
                            └── grant → readonly_user (SELECT)  -- dev_user 無 GRANT OPTION,鏈路終止

風險與控制策略

1. 權限無限擴散

  • 若中間帳號被攻破,攻擊者可級聯建立大量高權限帳號。
  • 對策:嚴格審核 WITH GRANT OPTION 授予對象,僅限核心 DBA。

2. 權限回收困難

  • REVOKE 僅移除直接授予的權限,不會級聯回收下游帳號權限。
  • 對策:建立權限清單資料庫,定期掃描 mysql.user、mysql.db 異常授權。

3. 審計合規

  • 合規要求(如等保、GDPR)需證明權限最小化、可追溯。
  • 對策:啟用 audit_log 記錄所有 GRANT/REVOKE 操作。

最佳實踐建議

  1. 原則:預設不授予 WITH GRANT OPTION,確有跨部門授權需求時,走變更流程、限時、事後回收。
  2. 角色化管理:MySQL 8.0+ 支援 CREATE ROLE,建立角色統一授權,帳號僅 GRANT role TO user,避免直接操作細粒度權限。
  3. 自動化巡檢:腳本定期檢查 SELECT * FROM mysql.user WHERE Grant_priv = 'Y'; 產出報表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved