惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
N
News and Events Feed by Topic
SecWiki News
SecWiki News
T
The Exploit Database - CXSecurity.com
S
Security @ Cisco Blogs
H
Heimdal Security Blog
Security Latest
Security Latest
T
Threatpost
V2EX - 技术
V2EX - 技术
C
Cybersecurity and Infrastructure Security Agency CISA
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
Recent Announcements
Recent Announcements
P
Privacy International News Feed
K
Kaspersky official blog
P
Proofpoint News Feed
L
LangChain Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threat Research - Cisco Blogs
博客园_首页
T
Tor Project blog
M
MIT News - Artificial intelligence
The Hacker News
The Hacker News
The GitHub Blog
The GitHub Blog
月光博客
月光博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Full Disclosure
MyScale Blog
MyScale Blog
The Register - Security
The Register - Security
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
L
LINUX DO - 最新话题
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
T
The Blog of Author Tim Ferriss
S
Schneier on Security
小众软件
小众软件
The Cloudflare Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Know Your Adversary
Know Your Adversary
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
Lohrmann on Cybersecurity
Vercel News
Vercel News

博客园 - AlfredZhao

impdp 遇到 TSTZ Version 报错:ORA-39405 处理实践 数据乱成一锅粥,还能先做本体吗? SQL*Plus 执行中文 SQL 文件,如何避开乱码坑 Podman 报错:普通用户无法运行 rootless Podman 怎么办 语义层构建:企业级AI落地绕不开的关键 AI时代最扎心的真相:人类在打杂,AI在做决策 Win7老系统登录报错怎么解?PuTTY这次真能救急 Linux 主机防火墙如何同时开启 80 和 443? AI 编程变更记录:知识加工模块与博客工厂模块的状态重新定义 一篇搞定:用 curl 测试私有部署模型联通性 DBA除了修库,还能把经验变成更大的价值 原本3GB+ 的 Docker 镜像直接缩成500M RAG技术从1.0到4.0,系统为何越来越“会想” 生产环境里,为什么不建议把普通端口直接暴露到公网? ORACLE默默地搞了个免费的智能体工厂 GPT 省钱,不是别用最新模型,而是别浪费缓存 Docker 容器时区不对,`timedatectl` 不存在怎么办? AI 编程工作总结:从体验问题到模块能力建设 OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G? vi 删除指定范围的行,不用再反复按 dd AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 AI编程系列01:裸 API 账单场景下,如何自建 LLM 用量可视化看板 氛围编程实战系列:先规划清楚学习路径 入门:我的第一个Vibe Coding实践程序 Linux时区修改为CST 如何在Oracle Agent Factory中配置国内厂商的LLM? Oracle Deep Data Security (Deep Sec) 初体验 APEX实战第13篇:全套开发环境的本地配置与恢复实践 Codex 和 OpenClaw,到底差在哪? 微信对接OpenClaw的常见问题和解决方案 在群晖NAS上配置OpenClaw:一次踩坑后的保姆级教程(完整修订版) 用Docker安全驯服OpenClaw,并打通社交软件 RAG 时代的“破壁人”:为什么你的大模型应用急需 Docling? 为什么 AI 服务器首选 Ubuntu?难道 OEL 和 RHEL 不香吗? APEX实战第12篇:Oracle APEX 工作区密码忘记了怎么办? AI开发者如何无痛部署Oracle AI Database 26ai环境 Oracle 26ai 本地通用版这次是真的来了 Docker 快速入门:手把手教你打包 Python 应用 APEX实战第11篇:图形界面轻松解锁工作区账户 APEX实战第10篇:手把手教你给APEX打补丁 小白学AI开发01:创建第一个示例Agent LangChain、LangFlow、LangGraph:一文讲清三大 LLM 框架的定位与差异 使用 Oracle 官方 HR Demo 快速验证 RAS 功能(小白实战指南) Oracle RAS:AI时代企业数据安全核心 新版MOS(My Oracle Support)主要变化 APEX实战第8篇:ORDS连库报错574?一招根治用户过期问题 为什么 Iceberg 在数据湖领域这么火
APEX实战第9篇:手把手教你集成RAS轻松实现真正的数据安全
AlfredZhao · 2026-01-19 · via 博客园 - AlfredZhao

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

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

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


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

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

关于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 的集成,感兴趣的读者也可以实际测试感受下,如遇到任何问题,欢迎在留言区一起讨论。