注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于云环境的值。
将 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 Cloud Infrastructure (OCI) 安全管理员。
目标
了解如何在简单的用例中将 Oracle SQL Firewall 与 Oracle Data Safe 一起使用。
用例:授权 SQL 语句“在视图上选择”并阻止指定用户 APP_USER
的任何其他 SQL。
APP_OWNER
:应用程序表和视图的所有者。APP_USER
:需要访问应用程序。
先决条件
-
在 OCI 中预配了 Oracle Database 23ai。在本教程中,我们使用了在 OCI 计算实例中创建的数据库。
-
在 Oracle Data Safe 中添加 Oracle Database 23ai 可插入数据库 (PDB) -
FREEPDB1
作为目标。在本教程中,我们使用计算实例向导进行注册,请参阅 Oracle Data Safe - 目标数据库注册。 -
用于测试 Oracle SQL Firewall 的任何 Oracle Database 工具。我们使用 Oracle SQL Developer 运行 SQL 语句。有关详细信息,请参见 Oracle SQL Developer 。
注:如果您已有 Oracle Database 23ai 实例,则跳过任务 1。
任务 1:创建 Oracle Database 23ai 计算实例
-
转到 OCI 控制台,导航到计算、实例,然后单击创建实例。输入以下详细信息来创建实例。
-
创建 Oracle Database 23ai 数据库。使用以下命令连接到计算实例。
ssh -i <private-ssh-key> opc@<publicip-computeinstance>
-
在处理 VM 时切换到 root 用户并使用最新软件更新系统。
sudo su yum update
-
启用 Oracle Linux 8 Developer 系统信息库。
yum config-manager --set-enabled ol8_developer
-
下载 Oracle Database 23ai Free RPM 并以 root 用户身份进行安装。
yum -y install oracle-database-preinstall-23c
-
要执行基于 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
-
通过运行以下命令安装 Oracle Database。
yum -y install oracle-database-free-23c-1.0-1.el8.x86_64.rpm
-
配置 Oracle Database 23ai。配置脚本将设置包含一个可插入数据库
FREEPDB1
的容器数据库 (FREE),并在默认端口1521
为监听程序做好准备。运行服务配置脚本。/etc/init.d/oracle-free-23c configure
-
使用以下设置将环境变量设置为
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
-
运行以下命令,以便在实例引导时自动启动数据库。
systemctl enable oracle-free-23c
-
检查 Linux 防火墙是否已启用。使用以下命令禁用它。
systemctl status firewalld systemctl stop firewalld systemctl disable firewalld
任务 2:通过 Oracle Data Safe 在目标数据库中启用 SQL 防火墙状态
-
在页面顶部的面包屑中,单击 Oracle 数据库、数据安全、安全中心和 SQL 防火墙。
-
默认情况下,将在新目标 23ai 数据库中禁用 SQL 防火墙。单击数据库并启用它。
任务 3:创建示例用户和对象
-
sys 用户以 sysdba 身份使用 Oracle SQL Developer 连接到
FREEPDB1
数据库。 -
创建示例用户和对象。
-- 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 收集
-
在页面顶部的面包屑中,单击数据安全、安全中心、 SQL 防火墙、配置详细信息,然后单击创建并启动 SQL 集合。
-
将数据库用户输入为
APP_USER
并使用User issued SQL commands
启用 SQL 集合级别,然后单击创建并启动 SQL 集合。工作请求 CREATE SQL COLLECTION 将开始收集 SQL。
任务 5:运行授权的 SQL 语句
-
使用 Oracle SQL Developer 连接到
APP_USER@FREEPDB1
。 -
运行授权的 SQL 语句。
select * from APP_OWNER.DEMO_EMPLOYEES_VIEW;
-
可以从 Oracle Data Safe 控制台查看 SQL 收集洞察分析。在页面顶部的面包屑中,单击数据安全、安全中心、 SQL 防火墙、配置详细信息、 SQL 集合详细信息和 SQL 集合洞察。
任务 6:停止 SQL 集合
-
在页面顶部的面包屑中,单击数据安全、安全中心、 SQL 防火墙、配置详细信息、 SQL 集合详细信息和 STOP 。
任务 7:生成防火墙策略
-
在页面顶部的面包屑中,单击数据安全、安全中心、 SQL 防火墙、配置详细信息、 SQL 收集详细信息和生成防火墙策略。
可以查看允许的唯一 SQL 语句,并且策略处于
INACTIVE
状态。
任务 8:部署和执行策略
-
在页面顶部的面包屑中,单击数据安全、安全中心、 SQL 防火墙、配置详细信息、 SQL 收集详细信息、防火墙策略详细信息和部署和实施。
-
选择以下详细信息,然后单击部署和强制实施。
- 实施范围:
All
- 对违规的操作:
Block and log violations
- 违规审计:
On
可以查看策略的状态为
ACTIVE
。 - 实施范围:
任务 9:测试 Oracle SQL Firewall
-
以
APP_USER@FREEPDB1
身份与 Oracle SQL Developer 连接。select * from APP_OWNER.DEMO_EMPLOYEES_VIEW; select * from APP_OWNER.DEMO_EMPLOYEES;
-
对于不在 SQL 集合中的第二个查询,我们可以观察到 Oracle SQL Firewall 违规。
任务 10:验证 Oracle SQL Firewall 仪表盘和违规报告
-
我们可以在 Oracle SQL Firewall Dashboard 中查看 Oracle SQL Firewall 违规和 SQL 集合的组视图。在页面顶部的面包屑中,单击数据安全、安全中心、 SQL 防火墙、配置详细信息、 SQL 收集详细信息和生成防火墙策略。
-
我们可以看到违规摘要。在页面顶部的面包屑中,单击数据安全、安全中心、 SQL 防火墙、违规报告和所有违规。
相关链接
确认
-
作者 - Alex Kovuru
-
贡献者 - Indira Balasundaram
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。