详情页标题前

阿里云RDS数据库SQL防火墙(sql_firewall)-云淘科技

详情页1

SQL防火墙是数据库层面的防火墙功能,可以防止恶意SQL注入。可以用来学习一些定义好的SQL规则,并将这些规则储存在数据库中作为白名单,学习完成后,可以限制用户执行这些定义规则之外的风险操作。

前提条件

RDS PostgreSQL实例需为以下版本之一:

  • PostgreSQL 12
  • PostgreSQL 11
  • PostgreSQL 10

重要 RDS PostgreSQL已不再支持sql_firewall插件,虽然之前已经创建的插件仍可使用,但是由于使用该插件可能导致系统崩溃,我们建议您尽早停止使用,以避免潜在风险。

如果您想要移除sql_firewall插件,可以使用drop extension sql_firewall;语句卸载此插件,并在shared_preload_libraries参数中移除它,具体修改参数方法,请参见设置实例参数。

学习模式、预警模式与防火墙模式

阿里云RDS数据库SQL防火墙(sql_firewall)-云淘科技

SQL防火墙支持如下三种模式:

  • 学习模式:防火墙记录用户执行的SQL,并添加到常用SQL白名单。
  • 预警模式:防火墙对用户将执行的SQL进行判断,如果SQL不在白名单中,仍然会执行该SQL,但是会告警用户该SQL不在白名单中。
  • 防火墙模式:防火墙对用户将执行的SQL进行判断,如果SQL不在白名单中,防火墙会拒绝执行该SQL并返回错误提示。

SQL防火墙的使用步骤

  1. 打开防火墙的学习模式,让防火墙记录用户执行的SQL,并加入白名单。这个过程建议持续一段较长的时间,尽量让防火墙学习到所有可能执行的SQL。
  2. 切换防火墙为预警模式,这个过程防火墙会对用户的一些不在白名单的SQL进行告警,用户结合自己的业务判断是否为风险SQL,如果这些SQL确实是用户需要的业务语句,则记录这些SQL,之后打开学习模式进行二次学习。
  3. 经过前两步,用户常用SQL已经被记录完毕,打开防火墙模式,此时不在白名单的SQL均会被拒绝执行。

操作说明

  • 创建插件
    create extension sql_firewall;
  • 删除插件
    drop extension sql_firewall;
  • 切换模式

    在控制台找到sql_firewall.firewall参数,修改参数值并重启实例。详情请参见设置实例参数。

    sql_firewall.firewall取值如下:

    • disable:关闭SQL防火墙
    • learning:学习模式
    • permissive:预警模式
    • enforcing:防火墙模式
  • 功能函数
    • sql_firewall_reset()

      清空白名单。该函数只有在防火墙关闭模式下,rds_superuser权限的用户可执行该函数。

    • sql_firewall_stat_reset()

      清空统计信息。该函数只有在防火墙关闭模式下,rds_superuser权限的用户可执行该函数。

  • 视图函数
    • sql_firewall.sql_firewall_statements

      展示目前数据库中所有的白名单及其被调用的次数。

      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

      展示预警模式下的警告数量(sql_warning)和防火墙模式下的错误数量(sql_error)。

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

示例

--预警模式

    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=#

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/156390.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 数据传输DTS这个表是我这边后面增加的主键,这个不会自动同步到目标库吗?-云小二-阿里云

    数据传输DTS这个表是我这边后面增加的主键,这个不会自动同步到目标库吗?这个时间点执行的sql,里面有部分sql有报错,也有正常执行的 以下为热心网友提供的参考意见 确实,阿里云的数据传输服务DTS支持数据库之间的双向数据实时同步。在源库和目标库连通性测试成功后,您可以进入实例配置的第二个步骤,即【配置同步对象及高级配置】页面。在这个页面中,您可以在“源库对…

    2023年12月5日
  • 阿里云RDS数据库SQL命令管理数据库-云淘科技

    本文介绍如何使用SQL命令在RDS SQL Server实例中创建和管理数据库。 前提条件 实例版本需为RDS SQL Server 2012及以上版本。 创建数据库 执行如下命令,创建数据库: CREATE DATABASE TestDb 说明 在RDS SQL Server实例中创建数据库时会产生默认路径,请您不要指定任何文件的路径。 您可以执行以下命令…

    阿里云数据库 2023年12月9日
  • 阿里云ECS云服务器授权RAM用户购买节省计划-云淘科技

    阿里云账号可以直接购买节省计划,而RAM用户则需要获得授权才可以购买节省计划,否则会下单失败。本文介绍如何创建购买节省计划的权限策略,并授予RAM用户此类权限策略。 背景信息 您可以通过访问控制(RAM)管理用户身份与资源访问权限,例如RAM用户及其拥有的权限。更多访问控制相关的信息,请参见什么是访问控制和API概览。 步骤一:创建购买节省计划的权限策略 使…

    阿里云服务器 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库删除数据库-云淘科技

    您可以通过SQL命令或RDS管理控制台删除数据库,但每种方式适合的实例类型不同,请根据实际情况,选择删除方式。 通过控制台删除数据库 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。 在左侧导航栏单击数据库管理。 找到要删除的数据库,单击其右侧操作列中的删除。 在弹出的确认框中,单击确定。 在弹出的对话框中进行短信或MFA验证。 通过SQL命令删除…

    阿里云数据库 2023年12月9日
  • Hologres中dataworks运行holo sql脚本报用户密码授权失败,该怎样设置?-云小二-阿里云

    Hologres中dataworks运行holo sql脚本报用户密码授权失败,该怎样设置? 以下为热心网友提供的参考意见 如果在使用DataWorks运行Holo SQL脚本时出现用户密码授权失败的错误,可能是由于以下原因之一: 用户名或密码错误:请确保您输入的用户名和密码是正确的。如果您不确定正确的用户名和密码是什么,请联系您的系统管理员或数据库管理员获…

    2024年1月4日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。