Oracle Database 23ai新特性:In Database SQL Firewall

Oracle Database 23ai 中的In Database SQL Firewall是数据库安全性的重要保障,其作用不仅仅是嵌入数据库内核并提供实时保护,防范 SQL 注入攻击等外部威胁,而且还在于其细粒度的访问控制机制。通过实时监测和拦截恶意 SQL 语句,In Database SQL Firewall有效地保护了数据库的完整性和机密性,避免了可能导致数据泄露、破坏数据库结构或其他恶意行为的安全漏洞。其对未经授权的 SQL 操作的阻止,进一步确保了数据库内部操作的合法性和安全性,为企业提供了强大的数据安全保障,为业务运行提供了可靠的基础支持。我们可以利用In Database SQL Firewall,建立授权的 SQL 语句,并将其添加到In Database SQL Firewall监视器的“允许列表”中。这样一来,任何符合“允许列表”的 SQL 请求都将被顺利执行,而潜在违反规定的 SQL 请求将会被阻止。此外,In Database SQL Firewall还可以利用会话上下文数据,如 IP 地址、操作系统用户和程序类型等信息,来加强执行控制,确保只有经授权的用户和程序才能执行相应的 SQL 操作,进一步提升了数据库的安全性和可信度。

今天我们就使用Oracle Database 23ai Free版本进行实验,和大家一起体验Oracle Database 23ai中提供的In Database SQL Firewall能力。在今天的实验中,我们的目标是创建一个用户dev1,并且只允许该用户只能对特定表实现select操作,而无法执行其他操作。

Oracle Database 23ai新特性:In Database SQL Firewall-1

首先我们在数据库中创建一个In Database SQL Firewall的管理用户,名字为df_admin,并对该用户授予与In Database SQL Firewall相关的管理权限。之后,创建普通用户,名字为dev1,并授予可以登录数据库的权限。

    <br>
    [oracle@23ai ~]$ sqlplus as sysdba
    <br>
    SQL*Plus: Release 23.0.0.0.0 - Production on Fri Jun 7 05:55:45 2024
    Version 23.4.0.24.05
    <br>
    Copyright (c) 1982, 2024, Oracle. All rights reserved.
    <br>
    <br>
    Connected to:
    Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
    Version 23.4.0.24.05
    <br>
    SQL> alter session set container=freepdb1;
    <br>
    Session altered.
    <br>
    SQL> create user DF_ADMIN identified by Oracle_4U;
    <br>
    User created.
    <br>
    SQL> grant create session, sql_firewall_admin, audit_admin to df_admin;
    <br>
    Grant succeeded.
    <br>
    SQL> create user dev1 identified by Oracle_4U;
    <br>
    User created.
    <br>
    SQL> grant create session, create table, unlimited tablespace to dev1;
    <br>
    Grant succeeded.
    <br>
    SQL>
    <br>