上海市网站建设_网站建设公司_在线商城_seo优化
2026/1/19 21:50:58 网站建设 项目流程

APEX实战第9篇:手把手教你集成RAS轻松实现真正的数据安全

2026-01-19 21:46  AlfredZhao  阅读(0)  评论(0)    收藏  举报

在 APEX 开发的江湖里,大家都有一个共同的痛点:权限控制代码满天飞

为了实现“张三只能看张三的数据,李四能看全班的数据”,我们不得不在每一个页面的报表 SQL 里拼接 WHERE 条件。如果不小心漏了一个页面,数据泄露就在所难免。

今天,笔者带大家实战 Oracle RAS (Real Application Security) 方式,直接在数据库内核层面把“行级安全”和“列级脱敏”焊死。即便黑客绕过 APEX 直接查库,也只能看到我们允许他看的东西。


01 | 前提条件:数据库中配置好RAS

传统的 VPD 只能控制行,而 RAS 能同时控制行和列。通过引入 Security Class(安全类) 实现了“白名单”式的列权限控制,非常的灵活。

关于RAS,前面已经铺垫了两篇文章,有兴趣可参考:

  • Oracle RAS:AI时代企业数据安全核心
  • 使用 Oracle 官方 HR Demo 快速验证 RAS 功能(小白实战指南)

起初,笔者想直接基于之前官方的HR Demo配置结果,直接在APEX中开启RAS实现权限管控。

但是这里实际测试时发现,有些比较细节的问题会困扰初学者,所以为了快速验证RAS的基础功能,笔者这里先将之前的RAS策略全部clean,然后参考官方blog的思路,直接简化下示例,新建一张新的 EMP 表:

create table emp as select * from employees;
select * from emp;

然后改造一个安装脚本 apex_hrdemo_setup.sql,只是改了官方脚本 hrdemo_setup.sql 中的EMPLOYEES表变成我们新建的EMP表,其他都不用改。

apex_hrdemo_setup.sql

  • 创建数据库角色(例如 DB_EMP)
  • 创建应用角色(如 employee、it_engineer、hr_representative)
  • 创建应用用户(如 DAUSTIN、SMAVRIS)
  • 创建安全类、安全策略和 ACL
  • 将安全策略应用到 HR.EMP 表上

02 | APEX 创建HR应用并开启RAS

这里我们先使用最简单的配置方式,快速看到RAS的效果。

① 创建HR应用

数据库配置好后,使用APEX快速创建一个HR应用,使用交互式报表来展现EMP这张表。

基于EMP这张表,配置好带表单的交互式报表,点击 Create Application 即可:

这里就是简单对 EMP 这张表通过交互式报表展示,没有设置任何 Where Clause 的过滤条件。

② APEX 开启RAS功能

首先,需要在APEX实例中开启RAS功能。

登录到 internal 的 workspace,设置路径: Manage Instance -> Security

Real Application Security -> Allow Real Application Security -> Yes,即可启用RAS:

然后,我们就可以回到用户自己的 Workspace 进行配置并启用RAS。

需要找到具体的apex应用:员工管理,进入 Shared Components

Authentication Schemes 下:

选择自己当前选择的认证方案,这里测试只有默认的 Oracle APEX Accounts

选择 Real Application Security,将 RAS Mode 修改为 Internal Users,最后别忘了 Apply Changes 保存配置:

③ APEX 配置用户

上面只是开启了RAS,因为我们选择的是 Internal Users,现在还需要同步在APEX配置用户,具体在下图所示的 Manage Users and Groups

这里的用户需要和之前创建的应用用户相同,比如下面的 DAUSTIN 用户,测试阶段可以随便填一个邮箱:

密码可以设置不一样的,可由APEX应用管理员自行决定。

最终设置完成两个应用账户 DAUSTINSMAVRIS 如下:

03 | 测试RAS的效果

至此,就可以进行测试RAS的基础功能了。

比如我们登录APEX的 员工管理 应用,会发现之前默认的 ADMIN 账号已经无法登录:

报错信息也非常清晰,因为我们启用了RAS,其中RAS的应用用户,并没有配置ADMIN这个用户,所以因为RAS应用用户无效或缺失,导致无法登录成功,是正常现象。

接下来就测试下我们的两个RAS应用用户:

  • DAUSTIN是IT专员
  • SMAVRIS是HR专员

测试可以正常登录,而且符合期望,只能看到RAS策略中定义好的数据范围,即只能看IT部门的员工信息以及自己的工资列信息,效果如下:

当我们尝试更新任意记录,都不会成功,因为 DAUSTIN 用户的配置策略只有select查询权限:

比如尝试在表单中修改Last Name的信息,然后 Apply Changes:

会发现查询结果没有任何变化。

而当我们切换成 HR专员 SMAVRIS 用户:

就可以看到全部员工的信息,如下图:

还可以正常修改任意员工的信息,比如修改 121 号员工的Last Name:

点击 Apply Changes 后,页面就会自动刷新,看到该记录已经修改成功,符合我们的RAS定义策略,如下图红框部分:

至此,已完成 Oracle RAS + APEX 的集成,感兴趣的读者也可以实际测试感受下,如遇到任何问题,欢迎在留言区一起讨论。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询