注意:

将 Oracle SQL Firewall 与 Oracle Data Safe 结合使用

简介

Oracle SQL Firewall 通过限制数据库访问指定用户的授权 SQL 语句或连接,提供针对常见数据库攻击的实时保护。

Oracle Data Safe 统一控制台已扩展为管理和监视适用于 Oracle Database 23ai 数据库的 Oracle SQL Firewall。管理员可以使用 Oracle Data Safe 收集数据库账户的 SQL 活动,监视收集进度,使用收集的 SQL 活动中的允许列表规则(允许的上下文和允许的 SQL 语句)创建 SQL 防火墙策略,以及启用 SQL 防火墙策略。

架构 Oracle Data Safe

启用防火墙策略后,Oracle Data Safe 会自动从数据库收集防火墙违规日志并将其存储在 Oracle Data Safe 中。然后,您可以在整个数据库组中在线分析和报告这些日志。

目标读者

数据库管理员和 Oracle Cloud Infrastructure (OCI) 安全管理员。

目标

了解如何在简单的用例中将 Oracle SQL Firewall 与 Oracle Data Safe 一起使用。

用例:授权 SQL 语句“在视图上选择”并阻止指定用户 APP_USER 的任何其他 SQL。

先决条件

注:如果您已有 Oracle Database 23ai 实例,则跳过任务 1。

任务 1:创建 Oracle Database 23ai 计算实例

  1. 转到 OCI 控制台,导航到计算实例,然后单击创建实例。输入以下详细信息来创建实例。

    Database

  2. 创建 Oracle Database 23ai 数据库。使用以下命令连接到计算实例。

    ssh -i <private-ssh-key> opc@<publicip-computeinstance>
    
  3. 在处理 VM 时切换到 root 用户并使用最新软件更新系统。

    sudo su
    yum update
    
  4. 启用 Oracle Linux 8 Developer 系统信息库。

    yum config-manager --set-enabled ol8_developer
    
  5. 下载 Oracle Database 23ai Free RPM 并以 root 用户身份进行安装。

    yum -y install oracle-database-preinstall-23c
    
  6. 要执行基于 RPM 的安装,请下载 oracle-database-free-23c-1.0-1.el8.x86_64.rpm 文件。

    wget https://download.oracle.com/otn-pub/otn_software/db-free/oracle-database-free-23c-1.0-1.el8.x86_64.rpm
    
  7. 通过运行以下命令安装 Oracle Database。

    yum -y install oracle-database-free-23c-1.0-1.el8.x86_64.rpm
    
  8. 配置 Oracle Database 23ai。配置脚本将设置包含一个可插入数据库 FREEPDB1 的容器数据库 (FREE),并在默认端口 1521 为监听程序做好准备。运行服务配置脚本。

    /etc/init.d/oracle-free-23c configure
    
  9. 使用以下设置将环境变量设置为 bash_profile

    #Oracle Database environment variables
    export ORACLE_SID=FREE
    export ORACLE_HOME=/opt/oracle/product/23c/dbhomeFree
    export ORAENV_ASK=NO
    export PATH=$ORACLE_HOME/bin:$PATH
    
  10. 运行以下命令,以便在实例引导时自动启动数据库。

    systemctl enable oracle-free-23c
    
  11. 检查 Linux 防火墙是否已启用。使用以下命令禁用它。

    systemctl status firewalld
    systemctl stop firewalld
    systemctl disable firewalld
    

任务 2:通过 Oracle Data Safe 在目标数据库中启用 SQL 防火墙状态

  1. 在页面顶部的面包屑中,单击 Oracle 数据库数据安全安全中心SQL 防火墙

    浏览 Oracle Data Safe

  2. 默认情况下,将在新目标 23ai 数据库中禁用 SQL 防火墙。单击数据库并启用它。

    启用 Oracle SQL Firewall

任务 3:创建示例用户和对象

  1. sys 用户以 sysdba 身份使用 Oracle SQL Developer 连接到 FREEPDB1 数据库。

    连接数据库

  2. 创建示例用户和对象。

    -- APP_OWNER who is the owner of the tables and views of the application
    -- APP_USER who needs to access to the application
    
    Create user app_owner identified by QAZxswedc123##;
    Grant connect, resource, unlimited tablespace to app_owner;
    Create user app_user identified by QAZxswedc123##;
    Grant connect, resource, select any table to app_user;
    
    -- Sample table created in appuser_test schema
    CREATE TABLE "APP_OWNER"."DEMO_EMPLOYEES"
       (    "USERID" NUMBER(4,0),
       "FIRSTNAME" VARCHAR2(25 BYTE),
       "LASTNAME" VARCHAR2(35 BYTE),
       "EMAIL" VARCHAR2(35 BYTE)
       ) ;
    
    Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (73,'Craig','Hunt','Craig.Hunt@oracledemo.com');
    Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (74,'Fred','Stewart','Fred.Stewart@oracledemo.com');
    Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (75,'Julie','Reed','Julie.Reed@oracledemo.com');
    Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (76,'Ruby','James','Ruby.James@oracledemo.com');
    Insert into APP_OWNER.DEMO_EMPLOYEES (USERID,FIRSTNAME,LASTNAME,EMAIL) values (77,'Alice','Harper','Alice.Harper@oracledemo.com');
    Commit;
    
    Create view APP_OWNER.DEMO_EMPLOYEES_VIEW as select * from APP_OWNER.DEMO_EMPLOYEES;
    

    创建用户和对象

任务 4:创建并启动 SQL 收集

  1. 在页面顶部的面包屑中,单击数据安全安全中心SQL 防火墙配置详细信息,然后单击创建并启动 SQL 集合

    开始 SQL 收集

  2. 数据库用户输入为 APP_USER 并使用 User issued SQL commands 启用 SQL 集合级别,然后单击创建并启动 SQL 集合

    选择数据库用户

    工作请求 CREATE SQL COLLECTION 将开始收集 SQL。

    工作请求

任务 5:运行授权的 SQL 语句

  1. 使用 Oracle SQL Developer 连接到 APP_USER@FREEPDB1

    连接到数据库

  2. 运行授权的 SQL 语句。

    select * from APP_OWNER.DEMO_EMPLOYEES_VIEW;
    

    运行 SQL 语句

  3. 可以从 Oracle Data Safe 控制台查看 SQL 收集洞察分析。在页面顶部的面包屑中,单击数据安全安全中心SQL 防火墙配置详细信息SQL 集合详细信息SQL 集合洞察

    查看洞察分析

任务 6:停止 SQL 集合

  1. 在页面顶部的面包屑中,单击数据安全安全中心SQL 防火墙配置详细信息SQL 集合详细信息STOP

    停止 SQL 收集

任务 7:生成防火墙策略

  1. 在页面顶部的面包屑中,单击数据安全安全中心SQL 防火墙配置详细信息SQL 收集详细信息生成防火墙策略

    生成防火墙策略

    可以查看允许的唯一 SQL 语句,并且策略处于 INACTIVE 状态。

    策略不活动

任务 8:部署和执行策略

  1. 在页面顶部的面包屑中,单击数据安全安全中心SQL 防火墙配置详细信息SQL 收集详细信息防火墙策略详细信息部署和实施

    强制执行策略

  2. 选择以下详细信息,然后单击部署和强制实施

    • 实施范围:All
    • 对违规的操作:Block and log violations
    • 违规审计:On

    选择强制执行策略

    可以查看策略的状态为 ACTIVE

    策略有效

任务 9:测试 Oracle SQL Firewall

  1. APP_USER@FREEPDB1 身份与 Oracle SQL Developer 连接。

    select * from APP_OWNER.DEMO_EMPLOYEES_VIEW;
    select * from APP_OWNER.DEMO_EMPLOYEES;
    

    连接数据库

  2. 对于不在 SQL 集合中的第二个查询,我们可以观察到 Oracle SQL Firewall 违规。

    验证查询

任务 10:验证 Oracle SQL Firewall 仪表盘和违规报告

  1. 我们可以在 Oracle SQL Firewall Dashboard 中查看 Oracle SQL Firewall 违规和 SQL 集合的组视图。在页面顶部的面包屑中,单击数据安全安全中心SQL 防火墙配置详细信息SQL 收集详细信息生成防火墙策略

    验证报告

  2. 我们可以看到违规摘要。在页面顶部的面包屑中,单击数据安全安全中心SQL 防火墙违规报告所有违规

    验证概要

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心