操作场景
RDS-PostgreSQL支持 sql_firewall
插件,用于PostgreSQL的SQL防火墙扩展 ,旨在保护来自 SQL 注入或意外查询的数据库。 sql_firewall 模块学习可以执行的查询,以及防止/警告执行在学习中找不到的查询防火墙规则。
前提条件
- 请确保您的实例内核大版本满足,本插件所支持的内核版本,请参考支持的版本插件列表。
注意事项
SQL防火墙支持如下三种模式:
- 学习模式:防火墙记录用户执行的SQL,并添加到常用SQL白名单。
- 预警模式:防火墙对用户将执行的SQL进行判断,如果SQL不在白名单中,仍然会执行该SQL,但是会告警用户该SQL不在白名单中。
- 防火墙模式:防火墙对用户将执行的SQL进行判断,如果SQL不在白名单中,防火墙会拒绝执行该SQL并返回错误提示。
安装插件后,可在管理控制台设置sql_firewall.firewall参数并重启实例,详情请参见修改RDS-PostgreSQL实例参数。
sql_firewall.firewall取值如下:
- disable:关闭SQL防火墙
- learning:学习模式
- permissive:预警模式
- enforcing:防火墙模式
插件使用
- 安装插件
CREATE EXTENSION IF NOT EXISTS sql_firewall;
- 卸载插件
DROP EXTENSION IF EXISTS sql_firewall;
使用示例
--1. sql_firewall.sql_firewall_statements 展示目前数据库中所有的白名单及其被调用的次数。
select * from sql_firewall.sql_firewall_statements;
--2.sql_firewall.sql_firewall_stat 展示预警模式下的警告数量(sql_warning)和防火墙模式下的错误数量(sql_error)。
select * from sql_firewall.sql_firewall_stat;