本文介绍如何在 OceanBase 控制台设置实例的 SQL 防火墙。
背景信息
SQL 防火墙是一种专门设计用于保护数据库安全的软件系统,它通过监控和过滤进出数据库的 SQL 语句,来防御 SQL 注入攻击和其他针对数据库的恶意活动。SQL 注入是一种常见的网络攻击手段,攻击者通过在查询语句中插入恶意 SQL 代码,以此来欺骗数据库执行非授权操作,如窃取数据、修改数据或破坏数据库结构。
OceanBase 通过 SQL 防火墙规则的制定,可以实时监控并拦截数据库 SQL,有效提升数据库的安全能力,保护数据库免受此类攻击的影响。
前提条件
实例的数据库代理版本在 V4.3.2 及以上。数据库代理的相关说明,请参见 数据库代理服务概述。
注意事项
开启 SQL 防火墙之前,请详细阅读如下注意事项:
SQL 防火墙是热加载生效,不需要重启数据库代理服务,对所有会话新启动的事务实时生效。请谨慎操作,避免发生误操作影响线上业务流量。
SQL 防火墙开启后会对数据库性能有 10 % 左右的影响。
管理 SQL 防火墙
登录 OceanBase 控制台。
在左侧导航栏中,单击 实例列表。
在实例列表中,单击目标集群实例名称进入 集群实例工作台。
单击左侧导航栏的 安全设置。
单击安全设置页面的 SQL 防火墙 页签,查看当前已有的防火墙规则列表。
您可以对当前已有的 SQL 防火墙规则进行管理。
创建 SQL 防火墙规则
在 SQL 防火墙界面,单击 创建规则。
在创建规则界面填写规则配置。
参数
描述
规则名称
为 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
启用规则
勾选后,规则保存成功后立即生效。不勾选则保留规则配置,可后续进行编辑启用。
单击 确定。
启用 SQL 防火墙规则
在 SQL 防火墙界面,单击目标规则 操作 列的 编辑。
在编辑规则页面的启用规则下,勾选 启用防火墙规则。
编辑 SQL 防火墙规则
在 SQL 防火墙界面,单击目标规则 操作 列的 编辑。
在编辑规则页面修改规则配置。
参数
描述
规则名称
为 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
启用规则
勾选后,规则保存成功后立即生效。不勾选则保留规则配置,可后续进行编辑启用。
单击 确定。
删除 SQL 防火墙规则
在 SQL 防火墙界面,单击目标规则 操作 列的 删除。
在弹窗中确认删除信息。
单击 删除。