当前位置: 首页 > news >正文

Oracle Database 23ai 内置 SQL 防火墙启用

在当今数字化时代,数据库作为企业核心数据资产的存储中心,面临着日益严峻的安全威胁。其中,SQL 注入攻击凭借其高危害性和普遍性,长期位居 OWASP Web 应用程序安全风险 Top 10 之列。为应对这一威胁,Oracle Database 23ai 内置了 SQL 防火墙,为数据库安全筑起第一道坚固屏障。

1、激活 SQL 防火墙

激活 SQL 防火墙是启用流程的首要步骤,执行以下简单命令即可:

SQL> show pdbsCON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------2 PDB$SEED                       READ ONLY  NO3 FREEPDB1                       READ WRITE NO
SQL> alter session set container=freepdb1;Session altered.SQL> exec dbms_sql_firewall.enable;PL/SQL procedure successfully completed.SQL>

该命令执行后,将在数据库内核层面激活 SQL 防火墙功能,为后续的 SQL 流量捕获和白名单构建奠定基础。激活操作无需对应用程序进行任何修改,部署简单且对数据库性能影响极小,经测试,CPU 负载增加不超过 1.5%,不会影响企业正常业务运行。

2、收集 SQL 构建白名单

激活防火墙后,需进入 SQL 流量收集阶段,为每个需要保护的数据库用户构建个性化的白名单基线。这一阶段是确保防火墙精准防护的关键,需按照以下步骤操作:

启动 SQL 流量捕获,针对目标数据库用户test,执行以下命令启动 SQL 流量捕获:

SQL> exec dbms_sql_firewall.create_capture('test');PL/SQL procedure successfully completed.

执行该命令后,SQL 防火墙将开始实时捕获test用户的所有 SQL 流量,包括常规业务操作产生的 SQL 语句、数据库连接路径信息等。

在捕获过程中,管理员需定期监控捕获日志,确保已充分捕获目标用户的常规 SQL 流量。通过执行以下 SQL 语句,可查看捕获的详细信息:

select username, sql_text, accessed_objects from dba_sql_firewall_capture_logs where username = 'TEST';

该语句将返回test用户被捕获的 SQL 语句(sql_text)及访问的数据库对象,管理员需确认捕获的 SQL 语句覆盖了所有核心业务场景,无遗漏关键操作的 SQL。

停止捕获,当确认已捕获足够的 SQL 流量(通常建议覆盖 1-2 个完整业务周期,确保包含各类常规业务操作)后,执行以下命令停止捕获:

SQL> exec dbms_sql_firewall.stop_capture('test');PL/SQL procedure successfully completed.

停止捕获后,防火墙将基于已捕获的 SQL 流量,初步构建目标用户的白名单框架,为后续生成正式白名单做好准备。

生成白名单,执行以下命令为test用户生成正式白名单:

SQL> exec dbms_sql_firewall.generate_allow_list('test');PL/SQL procedure successfully completed.

该命令将根据之前捕获的 SQL 流量,自动生成包含可信 SQL 语句、执行上下文(允许的 IP 地址、OS 用户名、OS 程序)的白名单。

查看允许的 SQL 语句及执行上下文:

select username, current_user, top_level, sql_text, accessed_objects from dba_sql_firewall_allowed_sql where username='TEST' order by sql_text, current_user, top_level;

查看允许的 IP 地址:

select username, ip_address from sys.dba_sql_firewall_allowed_ip_addr where username='TEST';

查看允许的 OS 用户名:

select username, os_user from sys.dba_sql_firewall_allowed_os_user where username='TEST';

查看允许的 OS 程序:

select username, os_program from sys.dba_sql_firewall_allowed_os_prog where username='TEST';

若发现白名单中遗漏了部分可信 SQL 语句或执行上下文,可执行以下命令追加内容到白名单(以从捕获日志中追加为例):

SQL> exec dbms_sql_firewall.append_allow_list('test', SYS.DBMS_SQL_FIREWALL.CAPTURE_LOG);PL/SQL procedure successfully completed.

3、执行防护策略开启观察模式

完成白名单构建后,即可部署并执行 SQL 防火墙防护策略,根据业务需求选择观察模式或拦截模式,实现对数据库的实时安全防护。

在正式启用拦截功能前,建议先开启观察模式。该模式下,防火墙会对所有 SQL 语句进行验证,若发现违规行为(如 SQL 注入语句、非授权 IP 地址访问等),仅记录违规日志,不阻止 SQL 执行,便于管理员进一步优化白名单,避免误拦截正常业务操作。

执行以下命令为 “test” 用户在观察模式下启用白名单:

SQL> exec dbms_sql_firewall.enable_allow_list(username => 'test',enforce => SYS.DBMS_SQL_FIREWALL.ENFORCE_ALL,block => FALSE);PL/SQL procedure successfully completed.

其中,“block => FALSE” 表示开启观察模式,不阻止违规 SQL 执行;“enforce => SYS.DBMS_SQL_FIREWALL.ENFORCE_ALL” 表示对 SQL 语句及执行上下文进行全面验证。

启用观察模式后,需定期查看违规日志,了解是否存在违规访问行为及白名单是否存在遗漏。执行以下命令可查看违规详情:

-- 刷新日志,确保获取最新违规记录

SQL> exec dbms_sql_firewall.flush_logs;

PL/SQL procedure successfully completed.

-- 查看违规记录

select username, cause, firewall_action, sql_text, accessed_objects, ip_address, client_program, os_user from dba_sql_firewall_violations where username='TEST' order by occurred_at;

通过分析违规日志,若发现正常业务 SQL 被误判为违规,需及时检查白名单并追加相关可信内容;若确认是恶意违规行为(如包含 “OR 1=1” 的 SQL 注入语句),则无需修改白名单,待切换到拦截模式后进行阻断。

4、开启拦截模式,实现实时监控与拦截

当观察模式运行一段时间(建议 1-2 天),确认白名单准确无误、无正常业务 SQL 被误判后,可切换到拦截模式。该模式下,防火墙会对违规 SQL 语句直接进行阻断,从根本上抵御恶意攻击。

执行以下命令将 “test” 用户的防火墙模式更新为拦截模式:

SQL> exec dbms_sql_firewall.update_allow_list_enforcement('test', block=>TRUE);PL/SQL procedure successfully completed.

执行该命令后,若有用户发出与白名单不匹配的 SQL 语句(如 SQL 注入语句)或从非授权连接路径访问数据库,防火墙将直接阻断 SQL 执行,并报错 “ORA-47605 SQL Firewall violation”,同时记录详细违规日志。

非授权ip或主机登录报错

如发生正常被拦截,可以关闭拦截,再排查,处理完成再开启

SQL> exec dbms_sql_firewall.update_allow_list_enforcement('test', block=>FALSE);PL/SQL procedure successfully completed.

5、配置审计策略

为进一步加强安全管理,可配置审计策略,对 SQL 防火墙的所有操作及违规行为进行审计,便于后续安全分析和追溯。执行以下命令创建并启用审计策略:

-- 创建审计策略

create audit policy EMPSEARCH_APPLICATION_AUDIT_POLICY actions component = SQL_Firewall ALL on test;

-- 启用审计策略

audit policy EMPSEARCH_APPLICATION_AUDIT_POLICY;

-- 查看审计记录

select * from unified_audit_trail where UNIFIED_AUDIT_POLICIES like '%EMPSEARCH_APPLICATION_AUDIT_POLICY%' order by event_timestamp;

623ai数据库SQL 防火墙优势

Oracle Database 23ai SQL 防火墙凭借其独特的设计,具备以下显著优势:

  • 无法被绕过:防火墙嵌入数据库内核,所有对数据库的 SQL 访问请求都必须经过防火墙验证,从根本上杜绝了绕过防火墙的可能性。
  • 精准防护:基于白名单机制,仅允许可信的 SQL 语句和连接路径访问数据库,可轻松防护未知的 SQL 注入攻击及异常访问。
  • 低性能影响:经实际测试,启用防火墙后 CPU 负载增加不超过 1.5%,几乎不影响数据库正常运行性能,保障企业业务高效开展。
  • 部署便捷:无需修改应用程序,通过简单的 PL/SQL 命令即可完成启用和配置,降低企业部署成本和复杂度。

      企业可轻松启用 Oracle Database 23ai 内置 SQL 防火墙,有效抵御 SQL 注入攻击及异常访问风险,为核心数据资产构建坚实的安全防线。在数字化转型加速推进的今天,加强数据库安全防护已成为企业不可或缺的重要工作,Oracle Database 23ai SQL 防火墙无疑为企业提供了高效、可靠的安全解决方案。


文章转载自:

http://x1zftGcx.zcqgf.cn
http://SepJgDkc.zcqgf.cn
http://7LNfFZqt.zcqgf.cn
http://3XpL3ufy.zcqgf.cn
http://yrcTnyLV.zcqgf.cn
http://XpPdj9jE.zcqgf.cn
http://t3vPm4PI.zcqgf.cn
http://K8mqLZBt.zcqgf.cn
http://2A2p2wXU.zcqgf.cn
http://rdQV8aEs.zcqgf.cn
http://pZBJZ3RK.zcqgf.cn
http://pJelUyox.zcqgf.cn
http://sN4PEexO.zcqgf.cn
http://X7tQz0sU.zcqgf.cn
http://afLU6CU1.zcqgf.cn
http://a6ZqkX1l.zcqgf.cn
http://sEiKuzUy.zcqgf.cn
http://01ftPYPl.zcqgf.cn
http://MV2dnEBS.zcqgf.cn
http://2dKw2O3v.zcqgf.cn
http://5DCWEpnk.zcqgf.cn
http://dXcXgEgN.zcqgf.cn
http://UNn5wX3B.zcqgf.cn
http://JnbnLd6B.zcqgf.cn
http://5QIkgGC1.zcqgf.cn
http://3pafp6hn.zcqgf.cn
http://jKvXOOr9.zcqgf.cn
http://otVra8kg.zcqgf.cn
http://LcoQiCXk.zcqgf.cn
http://2bilG1eD.zcqgf.cn
http://www.dtcms.com/a/387097.html

相关文章:

  • MySQL 31 误删数据怎么办?
  • 微前端面试题及详细答案 88道(09-18)-- 核心原理与实现方式
  • VBA技术资料MF362:将窗体控件添加到字典
  • 【Leetcode】高频SQL基础题--1321.餐馆营业额变化增长
  • Redis 中 Intset 的内存结构与存储机制详解
  • uniapp打包前端项目
  • cka解题思路1.32-3
  • 如何解决模型的过拟合问题?
  • 2025牛客周赛108场e题
  • 【课堂笔记】复变函数-2
  • 25、优化算法与正则化技术:深度学习的调优艺术
  • qt QCategoryAxis详解
  • 云游戏时代,游戏盾如何保障新型业务的流畅体验
  • 【Block总结】LRSA,用于语义分割的低分辨率自注意力|TPAMI 2025
  • PY32MD310单片机介绍 电机控制专用,内置三相半桥栅极驱动器
  • Ubuntu服务器挖矿病毒清理
  • 【数据结构】——二叉树
  • 《怪物猎人 荒野》总整理:预载和开放时间、登场怪物
  • web服务解析案例
  • 莫烦Python基础笔记(部分)
  • ACP(四):RAG工作流程及如何创建一个RAG应用
  • qgis导入cad怎么做?
  • 在线图书借阅平台的设计与实现 —— 基于飞算JavaAI的实战开发全流程与优化实践(架构设计与核心模块开发)
  • Spring Cloud - 面试知识点(服务雪崩)
  • 【JQ】使用JS在前端达到存储cookie的效果
  • Git企业开发--分支管理
  • LoRaWAN方案详解:2025年LoRaWAN技术创新与行业发展趋势
  • 【Leetcode hot 100】108.将有序数组转换为二叉搜索树
  • 打包数据集解析及大模型强化学习拓展阅读(96)
  • 软考-系统架构设计师 系统分析与设计详细讲解