文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  MySQL Enterprise Firewall 參考

8.4.7.4 MySQL Enterprise Firewall 參考

以下章節提供 MySQL Enterprise Firewall 元素的參考

MySQL Enterprise Firewall 表格

MySQL Enterprise Firewall 會以每個群組和每個帳戶為基礎維護設定檔資訊。它使用防火牆資料庫中的表格進行持久性儲存,並使用 INFORMATION_SCHEMA 或 Performance Schema 表格來提供記憶體內快取資料的檢視。啟用後,防火牆會以快取資料為依據來做出操作決策。防火牆資料庫可以是 mysql 系統資料庫或自訂綱要 (請參閱安裝 MySQL Enterprise Firewall)。

防火牆群組設定檔表格

MySQL Enterprise Firewall 使用防火牆資料庫 ( mysql 或自訂) 中的表格來維護群組設定檔資訊,以進行持久性儲存,並使用 Performance Schema 表格來提供記憶體內快取資料的檢視。

每個系統和 Performance Schema 表格僅可由擁有其 SELECT 權限的帳戶存取。

預設資料庫.firewall_groups 表格列出已註冊的防火牆群組設定檔的名稱和運作模式。此表格包含以下欄位 (對應的 Performance Schema firewall_groups 表格具有相似但不一定相同的欄位)

  • 名稱 (NAME)

    群組設定檔的名稱。

  • 模式 (MODE)

    設定檔目前的運作模式。允許的模式值為 OFFDETECTINGPROTECTINGRECORDING。關於這些模式意義的詳細資訊,請參閱 防火牆概念

  • 使用者主機 (USERHOST)

    群組設定檔的訓練帳戶,當設定檔處於 RECORDING 模式時使用。此值為 NULL,或格式為 使用者名稱@主機名稱 的非 NULL 帳戶。

    • 如果值為 NULL,則防火牆會記錄來自任何屬於該群組的帳戶的陳述式允許清單規則。

    • 如果值為非 NULL,則防火牆只會記錄來自指定帳戶(應為群組成員)的陳述式允許清單規則。

預設資料庫.firewall_group_allowlist 表格列出已註冊的防火牆群組設定檔的允許清單規則。此表格包含以下欄位 (對應的 Performance Schema firewall_group_allowlist 表格具有相似但不一定相同的欄位)

  • 名稱 (NAME)

    群組設定檔的名稱。

  • 規則 (RULE)

    一個標準化的陳述式,表示該設定檔可接受的陳述式模式。設定檔允許清單是其規則的聯集。

  • ID

    一個整數欄位,是表格的主索引鍵。

預設資料庫.firewall_membership 表格列出已註冊的防火牆群組設定檔的成員 (帳戶)。此表格包含以下欄位 (對應的 Performance Schema firewall_membership 表格具有相似但不一定相同的欄位)

  • 群組 ID (GROUP_ID)

    群組設定檔的名稱。

  • 成員 ID (MEMBER_ID)

    屬於該設定檔成員的帳戶名稱。

防火牆帳戶設定檔表格

MySQL Enterprise Firewall 使用防火牆資料庫中的表格來維護帳戶設定檔資訊,以進行持久性儲存,並使用 INFORMATION_SCHEMA 表格來提供對記憶體中快取資料的檢視。防火牆資料庫可以是 mysql 系統資料庫或自訂綱要 (請參閱 安裝 MySQL Enterprise Firewall)。

每個預設資料庫表格僅可由具有該表格的 SELECT 權限的帳戶存取。INFORMATION_SCHEMA 表格可由任何人存取。

這些表格已被棄用,並可能在未來的 MySQL 版本中移除。請參閱 將帳戶設定檔移轉至群組設定檔

預設資料庫.firewall_users 表格列出已註冊的防火牆帳戶設定檔的名稱和運作模式。此表格包含以下欄位 (對應的 MYSQL_FIREWALL_USERS 表格具有相似但不一定相同的欄位)

  • 使用者主機 (USERHOST)

    帳戶設定檔名稱。每個帳戶名稱的格式為 使用者名稱@主機名稱

  • 模式 (MODE)

    設定檔目前的運作模式。允許的模式值為 OFFDETECTINGPROTECTINGRECORDINGRESET。關於這些模式意義的詳細資訊,請參閱 防火牆概念

防火牆資料庫.firewall_whitelist 表格列出已註冊的防火牆帳戶設定檔的允許清單規則。此表格包含以下欄位 (對應的 MYSQL_FIREWALL_WHITELIST 表格具有相似但不一定相同的欄位)

  • 使用者主機 (USERHOST)

    帳戶設定檔名稱。每個帳戶名稱的格式為 使用者名稱@主機名稱

  • 規則 (RULE)

    一個標準化的陳述式,表示該設定檔可接受的陳述式模式。設定檔允許清單是其規則的聯集。

  • ID

    一個整數欄位,是表格的主索引鍵。

MySQL Enterprise Firewall 預存程序

MySQL Enterprise Firewall 預存程序會執行諸如向防火牆註冊設定檔、建立其運作模式以及管理快取和持久性儲存之間防火牆資料傳輸等工作。這些程序會呼叫管理功能,這些功能提供用於較低層級工作的 API。

防火牆預存程序是在防火牆資料庫中建立的。防火牆資料庫可以是 mysql 系統資料庫或自訂綱要 (請參閱 安裝 MySQL Enterprise Firewall)。

若要呼叫防火牆預存程序,請在指定的防火牆資料庫是預設資料庫時執行呼叫,或使用資料庫名稱限定程序名稱。例如,如果 mysql 是防火牆資料庫

CALL mysql.sp_set_firewall_group_mode(group, mode);

在 MySQL 9.0 中,防火牆預存程序是交易式的;如果在執行防火牆預存程序期間發生錯誤,則會復原到該點為止所做的所有變更,並報告錯誤。

注意事項

如果您已在自訂綱要中安裝 MySQL Enterprise Firewall,請針對您的系統進行適當的替換。例如,如果防火牆安裝在 fwdb 綱要中,則像這樣執行預存程序

CALL fwdb.sp_set_firewall_group_mode(group, mode);

防火牆群組設定檔預存程序

這些預存程序會對防火牆群組設定檔執行管理作業

  • sp_firewall_group_delist(群組, 使用者)

    此預存程序會從防火牆群組設定檔中移除帳戶。

    如果呼叫成功,則會對記憶體中快取和持久性儲存進行群組成員資格的變更。

    引數

    • 群組:受影響群組設定檔的名稱。

    • 使用者:要移除的帳戶,格式為 使用者名稱@主機名稱 字串。

    範例

    CALL mysql.sp_firewall_group_delist('g', 'fwuser@localhost');
  • sp_firewall_group_enlist(群組, 使用者)

    此預存程序會將帳戶新增至防火牆群組設定檔。在將帳戶新增至群組之前,不需要向防火牆註冊帳戶本身。

    如果呼叫成功,則會對記憶體中快取和持久性儲存進行群組成員資格的變更。

    引數

    • 群組:受影響群組設定檔的名稱。

    • 使用者:要新增的帳戶,格式為 使用者名稱@主機名稱 字串。

    範例

    CALL mysql.sp_firewall_group_enlist('g', 'fwuser@localhost');
  • sp_reload_firewall_group_rules(群組)

    此預存程序提供對個別群組設定檔的防火牆運作控制。此程序會使用防火牆管理功能,從 防火牆資料庫.firewall_group_allowlist 表格中儲存的規則重新載入群組設定檔的記憶體中規則。

    引數

    • 群組:受影響群組設定檔的名稱。

    範例

    CALL mysql.sp_reload_firewall_group_rules('myapp');
    警告

    此程序會在從持久性儲存重新載入之前,清除群組設定檔的記憶體中允許清單規則,並將設定檔模式設定為 OFF。如果設定檔模式在呼叫 sp_reload_firewall_group_rules() 之前不是 OFF,請使用 sp_set_firewall_group_mode() 在重新載入規則後還原其先前的模式。例如,如果設定檔處於 PROTECTING 模式,則在呼叫 sp_reload_firewall_group_rules() 之後,該模式不再為真,您必須明確地將其設定為 PROTECTING

  • sp_set_firewall_group_mode(群組, 模式)

    此預存程序會為防火牆群組設定檔建立運作模式,如果設定檔尚未註冊,則會在向防火牆註冊設定檔之後進行。此程序也會在必要時呼叫防火牆管理功能,以在快取和持久性儲存之間傳輸防火牆資料。即使 mysql_firewall_mode 系統變數為 OFF,也可以呼叫此程序,儘管在啟用防火牆之前,設定設定檔的模式不會產生任何運作效果。

    如果設定檔先前存在,則該設定檔的任何記錄限制都會保持不變。若要設定或清除限制,請改為呼叫 sp_set_firewall_group_mode_and_user()

    引數

    • 群組:受影響群組設定檔的名稱。

    • 模式:設定檔的運作模式,以字串表示。允許的模式值為 OFFDETECTINGPROTECTINGRECORDING。關於這些模式意義的詳細資訊,請參閱 防火牆概念

    範例

    CALL mysql.sp_set_firewall_group_mode('myapp', 'PROTECTING');
  • sp_set_firewall_group_mode_and_user(群組, 模式, 使用者)

    此預存程序會向防火牆註冊群組並建立其運作模式,類似於 sp_set_firewall_group_mode(),但也會指定當群組處於 RECORDING 模式時要使用的訓練帳戶。

    引數

    • 群組:受影響群組設定檔的名稱。

    • 模式:設定檔的運作模式,以字串表示。允許的模式值為 OFFDETECTINGPROTECTINGRECORDING。關於這些模式意義的詳細資訊,請參閱 防火牆概念

    • 使用者:群組設定檔的訓練帳戶,當設定檔處於 RECORDING 模式時使用。此值為 NULL,或格式為 使用者名稱@主機名稱 的非 NULL 帳戶。

      • 如果值為 NULL,則防火牆會記錄來自任何屬於該群組的帳戶的陳述式允許清單規則。

      • 如果值為非 NULL,則防火牆只會記錄來自指定帳戶(應為群組成員)的陳述式允許清單規則。

    範例

    CALL mysql.sp_set_firewall_group_mode_and_user('myapp', 'RECORDING', 'myapp_user1@localhost');
防火牆帳戶設定檔預存程序

這些預存程序會對防火牆帳戶設定檔執行管理作業

  • sp_reload_firewall_rules(使用者)

    此預存程序提供對個別帳戶設定檔的防火牆運作控制。此程序會使用防火牆管理功能,從 防火牆資料庫.firewall_whitelist 表格中儲存的規則重新載入帳戶設定檔的記憶體中規則。

    引數

    • 使用者:受影響帳戶設定檔的名稱,格式為 使用者名稱@主機名稱 字串。

    範例

    CALL sp_reload_firewall_rules('fwuser@localhost');
    警告

    此程序會在從持久性儲存重新載入之前,清除帳戶設定檔的記憶體中允許清單規則,並將設定檔模式設定為 OFF。如果設定檔模式在呼叫 sp_reload_firewall_rules() 之前不是 OFF,請使用 sp_set_firewall_mode() 在重新載入規則後還原其先前的模式。例如,如果設定檔處於 PROTECTING 模式,則在呼叫 sp_reload_firewall_rules() 之後,該模式不再為真,您必須明確地將其設定為 PROTECTING

    此程序已被棄用,並可能在未來的 MySQL 版本中移除。請參閱將帳戶設定檔遷移至群組設定檔

  • sp_set_firewall_mode(user, mode)

    此預存程序會在將防火牆設定檔註冊到防火牆 (如果尚未註冊) 後,為防火牆帳戶設定檔建立操作模式。此程序也會視需要呼叫防火牆管理功能,以便在快取和持久儲存之間傳輸防火牆資料。即使 mysql_firewall_mode 系統變數為 OFF,也可以呼叫此程序,但設定設定檔的模式在啟用防火牆之前沒有任何操作效果。

    引數

    • 使用者:受影響帳戶設定檔的名稱,格式為 使用者名稱@主機名稱 字串。

    • mode:設定檔的操作模式,以字串表示。允許的模式值為 OFFDETECTINGPROTECTINGRECORDINGRESET。如需有關其含義的詳細資訊,請參閱防火牆概念

    將帳戶設定檔切換為除了 RECORDING 以外的任何模式,會將其防火牆快取資料同步到提供持久底層儲存的防火牆資料庫表格 (mysql 或自訂)。將模式從 OFF 切換為 RECORDING 會將允許清單從 firewall-database.firewall_whitelist 表格重新載入到快取中。

    如果帳戶設定檔具有空的允許清單,則其模式無法設定為 PROTECTING,因為該設定檔會拒絕每個陳述式,實際上禁止該帳戶執行陳述式。為回應此類模式設定嘗試,防火牆會產生診斷訊息,並以結果集而非 SQL 錯誤的形式傳回。

    mysql> CALL sp_set_firewall_mode('a@b','PROTECTING');
    +----------------------------------------------------------------------+
    | set_firewall_mode(arg_userhost, arg_mode)                            |
    +----------------------------------------------------------------------+
    | ERROR: PROTECTING mode requested for a@b but the allowlist is empty. |
    +----------------------------------------------------------------------+

    此程序已被棄用,並可能在未來的 MySQL 版本中移除。請參閱將帳戶設定檔遷移至群組設定檔

防火牆雜項預存程序

這些預存程序會執行雜項防火牆管理作業。

  • sp_migrate_firewall_user_to_group(user, group)

    sp_migrate_firewall_user_to_group() 預存程序會將防火牆帳戶設定檔轉換為群組設定檔,並將該帳戶作為其唯一的註冊成員。請執行 firewall_profile_migration.sql 指令碼以安裝它。轉換程序會在將帳戶設定檔遷移至群組設定檔中討論。

    此常式需要 FIREWALL_ADMIN 權限。

    引數

    • user:要轉換為群組設定檔的帳戶設定檔名稱,以 user_name@host_name 格式的字串表示。帳戶設定檔必須存在,且目前不能處於 RECORDING 模式。

    • group:新群組設定檔的名稱,該設定檔不得已存在。新群組設定檔會將指定帳戶作為其唯一的註冊成員,且該成員會設定為群組訓練帳戶。群組設定檔操作模式取自帳戶設定檔操作模式。

    範例

    CALL sp_migrate_firewall_user_to_group('fwuser@localhost', 'mygroup);
MySQL Enterprise Firewall 管理功能

MySQL Enterprise Firewall 管理功能會提供 API 以用於較低層級的任務,例如將防火牆快取與底層系統表格同步。

在正常操作下,這些功能是由防火牆預存程序呼叫,而不是由使用者直接呼叫。因此,這些功能描述不包含其引數和傳回類型等詳細資訊。

防火牆群組設定檔功能

這些功能會對防火牆群組設定檔執行管理作業

  • firewall_group_delist(group, user)

    此功能會從群組設定檔中移除帳戶。它需要 FIREWALL_ADMIN 權限。

    範例

    SELECT firewall_group_delist('g', 'fwuser@localhost');
  • firewall_group_enlist(group, user)

    此功能會將帳戶新增至群組設定檔。它需要 FIREWALL_ADMIN 權限。

    在將帳戶新增至群組之前,無需先向防火牆註冊帳戶本身。

    範例

    SELECT firewall_group_enlist('g', 'fwuser@localhost');
  • read_firewall_group_allowlist(group, rule)

    此彙總函式會透過 SELECTfirewall-database.firewall_group_allowlist 表格上進行的陳述式,更新指定群組設定檔的記錄陳述式快取。它需要 FIREWALL_ADMIN 權限。

    範例

    SELECT read_firewall_group_allowlist('my_fw_group', fgw.rule)
    FROM mysql.firewall_group_allowlist AS fgw
    WHERE NAME = 'my_fw_group';
  • read_firewall_groups(group, mode, user)

    此彙總函式會透過 SELECTfirewall-database.firewall_groups 表格上進行的陳述式,更新防火牆群組設定檔快取。它需要 FIREWALL_ADMIN 權限。

    範例

    SELECT read_firewall_groups('g', 'RECORDING', 'fwuser@localhost')
    FROM mysql.firewall_groups;
  • set_firewall_group_mode(group, mode[, user])

    此函式會管理群組設定檔快取,建立設定檔操作模式,並選擇性地指定設定檔訓練帳戶。它需要 FIREWALL_ADMIN 權限。

    如果未提供選用的 user 引數,則設定檔的任何先前的 user 設定將保持不變。若要變更設定,請使用第三個引數呼叫函式。

    如果提供選用的 user 引數,它會指定群組設定檔的訓練帳戶,以便在設定檔處於 RECORDING 模式時使用。值為 NULL,或是具有 user_name@host_name 格式的非 NULL 帳戶

    • 如果值為 NULL,則防火牆會記錄來自任何屬於該群組的帳戶的陳述式允許清單規則。

    • 如果值為非 NULL,則防火牆只會記錄來自指定帳戶(應為群組成員)的陳述式允許清單規則。

    範例

    SELECT set_firewall_group_mode('g', 'DETECTING');
防火牆帳戶設定檔功能

這些功能會對防火牆帳戶設定檔執行管理作業

防火牆雜項功能

這些功能會執行雜項防火牆作業

MySQL Enterprise Firewall 系統變數

MySQL Enterprise Firewall 支援下列系統變數。使用它們來設定防火牆操作。除非安裝了防火牆,否則這些變數無法使用 (請參閱第 8.4.7.2 節:「安裝或解除安裝 MySQL Enterprise Firewall」)。

  • mysql_firewall_database

    命令列格式 --mysql-firewall-database[=值]
    系統變數 mysql_firewall_database
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 字串
    預設值 mysql

    指定 MySQL Enterprise Firewall 從哪個資料庫讀取資料。通常,MYSQL_FIREWALL 伺服器端外掛程式會將其內部資料(表格、預存程序和函數)儲存在 mysql 系統資料庫中,但您也可以建立和使用自訂的綱要(請參閱安裝 MySQL Enterprise Firewall)。此變數允許在啟動時指定替代的資料庫名稱。

  • mysql_firewall_mode

    命令列格式 --mysql-firewall-mode[={OFF|ON}]
    系統變數 mysql_firewall_mode
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 ON

    MySQL Enterprise Firewall 是否已啟用(預設)或停用。

  • mysql_firewall_reload_interval_seconds

    命令列格式 --mysql-firewall-reload-interval-seconds[=value]
    系統變數 mysql_firewall_reload_interval_seconds
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 整數
    預設值 0
    最小值 60(除非為 0:OFF)
    最大值 INT_MAX
    單位

    指定伺服器端外掛程式用來從防火牆表格重新載入其內部快取的間隔(以秒為單位)。當mysql_firewall_reload_interval_seconds 的值為零(預設值)時,不會在執行時定期從表格重新載入資料。060 之間的值(1 到 59)不會被外掛程式接受。相反地,這些值會自動調整為 60

    此變數要求 scheduler 元件必須啟用(ON)。如需更多資訊,請參閱排程防火牆快取重新載入

  • mysql_firewall_trace

    命令列格式 --mysql-firewall-trace[={OFF|ON}]
    系統變數 mysql_firewall_trace
    範圍 全域
    動態
    SET_VAR 提示套用
    類型 布林值
    預設值 OFF

    是否啟用或停用 MySQL Enterprise Firewall 追蹤(預設值)。當啟用mysql_firewall_trace 時,對於 PROTECTING 模式,防火牆會將拒絕的陳述式寫入錯誤日誌。

MySQL Enterprise Firewall 狀態變數

MySQL Enterprise Firewall 支援下列狀態變數。使用它們來取得有關防火牆操作狀態的資訊。除非已安裝防火牆(請參閱第 8.4.7.2 節,「安裝或解除安裝 MySQL Enterprise Firewall」),否則這些變數不可用。無論何時安裝 MYSQL_FIREWALL 外掛程式或啟動伺服器,防火牆狀態變數都會設定為 0。mysql_firewall_flush_status() 函數(請參閱MySQL Enterprise Firewall 管理函數)會將它們中的許多值重設為零。