SQL 防火墙

本文介绍如何在 OceanBase 控制台设置实例的 SQL 防火墙。

背景信息

SQL 防火墙是一种专门设计用于保护数据库安全的软件系统,它通过监控和过滤进出数据库的 SQL 语句,来防御 SQL 注入攻击和其他针对数据库的恶意活动。SQL 注入是一种常见的网络攻击手段,攻击者通过在查询语句中插入恶意 SQL 代码,以此来欺骗数据库执行非授权操作,如窃取数据、修改数据或破坏数据库结构。

OceanBase 通过 SQL 防火墙规则的制定,可以实时监控并拦截数据库 SQL,有效提升数据库的安全能力,保护数据库免受此类攻击的影响。

前提条件

实例的数据库代理版本在 V4.3.2 及以上。数据库代理的相关说明,请参见 数据库代理服务概述

注意事项

开启 SQL 防火墙之前,请详细阅读如下注意事项:

  1. SQL 防火墙是热加载生效,不需要重启数据库代理服务,对所有会话新启动的事务实时生效。请谨慎操作,避免发生误操作影响线上业务流量。

  2. SQL 防火墙开启后会对数据库性能有 10 % 左右的影响。

管理 SQL 防火墙

  1. 登录 OceanBase 控制台

  2. 在左侧导航栏中,单击 实例列表

  3. 在实例列表中,单击目标集群实例名称进入 集群实例工作台

  4. 单击左侧导航栏的 安全设置

  5. 单击安全设置页面的 SQL 防火墙 页签,查看当前已有的防火墙规则列表。

  6. 您可以对当前已有的 SQL 防火墙规则进行管理。

创建 SQL 防火墙规则

  1. 在 SQL 防火墙界面,单击 创建规则

    image

  2. 在创建规则界面填写规则配置。

    参数

    描述

    规则名称

    为 SQL 防火墙规则设置的名称,长度为 2~32,只能包含中文、数字、英文字母、下划线、短横线。

    规则描述

    为规则进行一个简单的说明,以便后续查看使用。

    租户

    在下拉框中选择规则生效的租户。

    数据库代理

    选择数据库代理信息。

    数据库账号

    选择规则生效的账号,为空表示所有数据库账号均生效。

    规则类型

    拦截规则。

    模式

    • 检验模式:SQL 类型记录,不真正拦截。

    • 防护模式:拦截 SQL 并记录。

    防火墙规则

    • 拦截特定类型的 SQL:拦截指定类型的 SQL ,可选择 SELECT、UPDATE、INSERT、DELETE、CREATE、DROP、ALTER、TRUNCATE、RENAME、REPLACE。

    • 拦截无 where 条件的 SQL:拦截指定类型中,未带 where 条件的 SQL,可选择 SELECT、UPDATE、DELETE。

    • 拦截自定义 SQL:自定义需要拦截的 SQL 内容,示例如下。

      拦截使用 ORDER BY 或者 GROUP BY 的 SQL:ORDER\s+BY|GROUP\s+BY

    启用规则

    勾选后,规则保存成功后立即生效。不勾选则保留规则配置,可后续进行编辑启用。

  3. 单击 确定

启用 SQL 防火墙规则

  1. 在 SQL 防火墙界面,单击目标规则 操作 列的 编辑

  2. 在编辑规则页面的启用规则下,勾选 启用防火墙规则

编辑 SQL 防火墙规则

  1. 在 SQL 防火墙界面,单击目标规则 操作 列的 编辑

    image

  2. 在编辑规则页面修改规则配置。

    参数

    描述

    规则名称

    为 SQL 防火墙规则设置的名称,长度为 2~32,只能包含中文、数字、英文字母、下划线、短横线。

    规则描述

    为规则进行一个简单的说明,以便后续查看使用。

    租户

    在下拉框中选择规则生效的租户。

    数据库代理

    选择数据库代理信息。

    数据库账号

    选择规则生效的账号,为空表示所有数据库账号均生效。

    规则类型

    拦截规则。

    模式

    • 检验模式:SQL 类型记录,不真正拦截。

    • 防护模式:拦截 SQL 并记录。

    防火墙规则

    • 拦截特定类型的 SQL:拦截指定类型的 SQL ,可选择 SELECT、UPDATE、INSERT、DELETE、CREATE、DROP、ALTER、TRUNCATE、RENAME、REPLACE。

    • 拦截无 where 条件的 SQL:拦截指定类型中,未带 where 条件的 SQL,可选择 SELECT、UPDATE、DELETE。

    • 拦截自定义 SQL:自定义需要拦截的 SQL 内容,示例如下。

      拦截使用 ORDER BY 或者 GROUP BY 的 SQL:ORDER\s+BY|GROUP\s+BY

    启用规则

    勾选后,规则保存成功后立即生效。不勾选则保留规则配置,可后续进行编辑启用。

  3. 单击 确定

删除 SQL 防火墙规则

  1. 在 SQL 防火墙界面,单击目标规则 操作 列的 删除

    image

  2. 在弹窗中确认删除信息。

    image

  3. 单击 删除