日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

SQL防火墻(sql_firewall)

更新時(shí)間:

SQL防火墻是數(shù)據(jù)庫層面的防火墻功能,可以防止惡意SQL注入。可以用來學(xué)習(xí)一些定義好的SQL規(guī)則,并將這些規(guī)則儲存在數(shù)據(jù)庫中作為白名單,學(xué)習(xí)完成后,可以限制用戶執(zhí)行這些定義規(guī)則之外的風(fēng)險(xiǎn)操作。

您可以加入RDS PostgreSQL插件交流釘釘群(103525002795),進(jìn)行咨詢、交流和反饋,獲取更多關(guān)于插件的信息。

前提條件

RDS PostgreSQL實(shí)例需為以下版本之一:

  • PostgreSQL 12

  • PostgreSQL 11

  • PostgreSQL 10

重要

RDS PostgreSQL已不再支持sql_firewall插件,雖然之前已經(jīng)創(chuàng)建的插件仍可使用,但是由于使用該插件可能導(dǎo)致系統(tǒng)崩潰,我們建議您盡早停止使用,以避免潛在風(fēng)險(xiǎn)。

如果您想要移除sql_firewall插件,可以使用drop extension sql_firewall;語句卸載此插件,并在shared_preload_libraries參數(shù)中移除它,具體修改參數(shù)方法,請參見設(shè)置實(shí)例參數(shù)

學(xué)習(xí)模式、預(yù)警模式與防火墻模式

流程圖

SQL防火墻支持如下三種模式:

  • 學(xué)習(xí)模式:防火墻記錄用戶執(zhí)行的SQL,并添加到常用SQL白名單。

  • 預(yù)警模式:防火墻對用戶將執(zhí)行的SQL進(jìn)行判斷,如果SQL不在白名單中,仍然會執(zhí)行該SQL,但是會告警用戶該SQL不在白名單中。

  • 防火墻模式:防火墻對用戶將執(zhí)行的SQL進(jìn)行判斷,如果SQL不在白名單中,防火墻會拒絕執(zhí)行該SQL并返回錯(cuò)誤提示。

SQL防火墻的使用步驟

  1. 打開防火墻的學(xué)習(xí)模式,讓防火墻記錄用戶執(zhí)行的SQL,并加入白名單。這個(gè)過程建議持續(xù)一段較長的時(shí)間,盡量讓防火墻學(xué)習(xí)到所有可能執(zhí)行的SQL。

  2. 切換防火墻為預(yù)警模式,這個(gè)過程防火墻會對用戶的一些不在白名單的SQL進(jìn)行告警,用戶結(jié)合自己的業(yè)務(wù)判斷是否為風(fēng)險(xiǎn)SQL,如果這些SQL確實(shí)是用戶需要的業(yè)務(wù)語句,則記錄這些SQL,之后打開學(xué)習(xí)模式進(jìn)行二次學(xué)習(xí)。

  3. 經(jīng)過前兩步,用戶常用SQL已經(jīng)被記錄完畢,打開防火墻模式,此時(shí)不在白名單的SQL均會被拒絕執(zhí)行。

操作說明

  • 創(chuàng)建插件

    create extension sql_firewall;
  • 刪除插件

    drop extension sql_firewall;
  • 切換模式

    在控制臺找到sql_firewall.firewall參數(shù),修改參數(shù)值并重啟實(shí)例。詳情請參見設(shè)置實(shí)例參數(shù)

    sql_firewall.firewall取值如下:

    • disable:關(guān)閉SQL防火墻

    • learning:學(xué)習(xí)模式

    • permissive:預(yù)警模式

    • enforcing:防火墻模式

  • 功能函數(shù)

    • sql_firewall_reset()

      清空白名單。該函數(shù)只有在防火墻關(guān)閉模式下,rds_superuser權(quán)限的用戶可執(zhí)行該函數(shù)。

    • sql_firewall_stat_reset()

      清空統(tǒng)計(jì)信息。該函數(shù)只有在防火墻關(guān)閉模式下,rds_superuser權(quán)限的用戶可執(zhí)行該函數(shù)。

  • 視圖函數(shù)

    • sql_firewall.sql_firewall_statements

      展示目前數(shù)據(jù)庫中所有的白名單及其被調(diào)用的次數(shù)。

      postgres=# select * from sql_firewall.sql_firewall_statements;
           userid |  queryid   |              query              | calls
          --------+------------+---------------------------------+-------
               10 | 3294787656 | select * from k1 where uid = ?; |     4
          (1 row)
    • sql_firewall.sql_firewall_stat

      展示預(yù)警模式下的警告數(shù)量(sql_warning)和防火墻模式下的錯(cuò)誤數(shù)量(sql_error)。

      postgres=# select * from sql_firewall.sql_firewall_stat;
           sql_warning | sql_error
          -------------+-----------
                     2 |         1
          (1 row)

示例

--預(yù)警模式

    postgres=# select * from sql_firewall.sql_firewall_statements;
    WARNING:  Prohibited SQL statement
     userid |  queryid   |              query              | calls
    --------+------------+---------------------------------+-------
         10 | 3294787656 | select * from k1 where uid = 1; |     1
    (1 row)

    postgres=# select * from k1 where uid = 1;
     uid |    uname
    -----+-------------
       1 | Park Gyu-ri
    (1 row)

    postgres=# select * from k1 where uid = 3;
     uid |   uname
    -----+-----------
       3 | Goo Ha-ra
    (1 row)

    postgres=# select * from k1 where uid = 3 or 1 = 1;
    WARNING:  Prohibited SQL statement
     uid |     uname
    -----+----------------
       1 | Park Gyu-ri
       2 | Nicole Jung
       3 | Goo Ha-ra
       4 | Han Seung-yeon
       5 | Kang Ji-young
    (5 rows)

--防火墻模式

    postgres=# select * from k1 where uid = 3;
     uid |   uname
    -----+-----------
       3 | Goo Ha-ra
    (1 row)

    postgres=# select * from k1 where uid = 3 or 1 = 1;
    ERROR:  Prohibited SQL statement
    postgres=#