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应用管理员自行决定。
最终设置完成两个应用账户 DAUSTIN、SMAVRIS 如下:

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 的集成,感兴趣的读者也可以实际测试感受下,如遇到任何问题,欢迎在留言区一起讨论。
转载请注明原文链接:https://www.cnblogs.com/jyzhao/p/19503820/apex-shi-zhan-di9pian-shou-ba-shou-jiao-ni-pei-zhi
👋 感谢阅读,欢迎关注我的公众号 「赵靖宇」
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1185310.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!