首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AI Agent时代的数据安全方案:Oracle Deep Sec介绍

AI Agent时代的数据安全方案:Oracle Deep Sec介绍

作者头像
胖头鱼的鱼缸
发布2026-07-02 15:50:22
发布2026-07-02 15:50:22
190
举报

胖头鱼的技术专栏-431 AI Agent时代的数据安全方案:Oracle Deep Sec介绍(20260609)

914fcc7ad57defa7868c3be1ca7fb4f5.jpg
914fcc7ad57defa7868c3be1ca7fb4f5.jpg

之前我制作的基于Oracle AI Database 26ai的记忆系统,现在已经全面更名为AI Agent Infra with OracleDB,是一套面向AI Agent的基础设施架构,为AI Agent提供记忆、知识、Agent 管理、Skill 分发、身份认证、加密存储、上下文分支等完整能力。。

核心设计理念是:将AI Agent运行所需的一切基础设施——记忆、知识、身份、技能、安全、分支——统一收敛于一个数据库内核之中,利用Oracle 26ai的引用分区、JSON关系二元性视图、属性图、向量搜索等原生能力,在数据库层实现基础设施的完整闭环,而非依赖外部微服务拼装。

社区版开源仓库地址为:https://github.com/Haiwen-Yin/AI-Agent-Infra-with-OracleDB-Community-Edition

在构建这个系统的过程中,我发现一个安全相关的问题,无论是基于Oracle还是PostgreSQL的版本,使用统一的数据库用户访问数据库时,即便SKILL.md规范写的如何严格,要求不能直接连接数据库,必须使用API,但由LLM驱动的AI Agent仍然可以依然可以绕过这些直接访问数据库,从而带来数据泄露和非授权数据操作的风险,这是本地存储数据库用户信息这种设计必然带来的问题。

在大多数数据库中都有行级安全功能,以Oracle为例常用的就是VPD(Virtual Private Database),但这需要创建大量的数据库用户,还需要编写并维护对应的PL/SQL函数,来控制每个用户可以看到的数据,维护难度很大。

在Oracle AI Database 26ai最新的版本23.26.2中(可查看Oracle AI DB 23.26.2新特性一览),引入了一个面向AI Agent使用数据库的新功能Deep Data Security,很好的解决了AI时代数据安全隔离的问题。

什么是 Deep Data Security?

Oracle Deep Data Security(Deep Sec) 是Oracle AI Database 26ai引入的声明式数据安全框架,用于在数据库层面实现行级、列级和单元格级的访问控制。

与传统VPD(Virtual Private Database/DBMS_RLS)相比,Deep Sec是声明式的——你只需声明"谁能看到什么",数据库自动执行,无需编写和维护PL/SQL函数,极大的降低了数据库安全相关维护难度,更加便于AI Agent使用数据库。

核心概念

0. 用户创建与授权/测试数据创建

代码语言:javascript
复制
-- sysdba用户创建生产用户
create tablespace users datafile size 500m;
CREATE USER shop_admin IDENTIFIED BY orale DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS;
GRANT CREATE SESSION, CREATE TABLE, CREATE SEQUENCE, CREATE PROCEDURETO shop_admin;
GRANT CREATE END USER TO shop_admin;
GRANT CREATE END USER CONTEXT TO shop_admin;
GRANT CREATE ANY END USER CONTEXT TO shop_admin;
GRANT CREATE END USER SECURITY CONTEXT TO shop_admin;
GRANT CREATE DATA GRANT TO shop_admin;
GRANT CREATE ANY DATA GRANT TO shop_admin;
GRANT ADMINISTER ANY DATA GRANT TO shop_admin;
GRANT CREATE DATA ROLE TO shop_admin;
GRANT DROP DATA ROLE TO shop_admin;
GRANT GRANT ANY DATA ROLE TO shop_admin;
GRANT SET USE DATA GRANTS ONLY TO shop_admin;
GRANT ALTER END USER TO shop_admin;
GRANT DROP END USER TO shop_admin;
GRANT CREATE ANY CONTEXT TO shop_admin;
CREATE ROLE deep_sec_session_role;
GRANT CREATE SESSION TO deep_sec_session_role;
GRANT deep_sec_session_role TO shop_admin WITH ADMIN OPTION;

-- 使用shop_admin用户创建测试表并插入测试数据
CREATE TABLE merchants (
    merchant_id   VARCHAR2(32) PRIMARY KEY,
    merchant_name VARCHAR2(100) NOT NULL,
    category VARCHAR2(50)
);

CREATETABLE orders (
    order_id      VARCHAR2(32) PRIMARY KEY,
    merchant_id   VARCHAR2(32) NOT NULL,
    customer_name VARCHAR2(100),
    product_name  VARCHAR2(200),
    amount        NUMBER(10,2),
    status        VARCHAR2(20) DEFAULT 'PENDING',
    created_at    TIMESTAMP DEFAULT SYSTIMESTAMP
);

INSERT INTO merchants VALUES ('M_BEAUTY', '美妆小铺', '美妆');
INSERT INTO merchants VALUES ('M_ELEC',   '数码商城', '数码');
INSERT INTO merchants VALUES ('M_FOOD',   '吃货天堂', '美食');

INSERT INTO orders SELECT 'ORD_B_' || LEVEL, 'M_BEAUTY', '顾客' || LEVEL, '口红套装' || LEVEL, LEVEL * 99.9, 'PAID', SYSTIMESTAMP - LEVEL FROM DUAL CONNECT BY LEVEL <= 5;
INSERT INTO orders SELECT 'ORD_E_' || LEVEL, 'M_ELEC',   '顾客' || LEVEL, '蓝牙耳机' || LEVEL, LEVEL * 299.9, 'SHIPPED', SYSTIMESTAMP - LEVEL FROM DUAL CONNECT BY LEVEL <= 5;
INSERT INTO orders SELECT 'ORD_F_' || LEVEL, 'M_FOOD',   '顾客' || LEVEL, '零食礼包' || LEVEL, LEVEL * 49.9, 'DELIVERED', SYSTIMESTAMP - LEVEL FROM DUAL CONNECT BY LEVEL <= 5;

COMMIT;
image.png
image.png

1. Data Role(数据角色)

Data Role 是 Deep Sec 的权限载体,类似于数据库角色,但专门用于 Data Grant 授权。

代码语言:javascript
复制
CREATE DATA ROLE shop_admin_role;
CREATE DATA ROLE shop_merchant_role;

GRANT deep_sec_session_role TO shop_admin_role; 
GRANT deep_sec_session_role TO shop_merchant_role;

image.png
image.png
image.png
image.png

这里需要注意的是给DATA ROLE授权,需要先授权给ROLE,再将ROLE授权给DATA ROLE

2. Data Grant(数据授权)

Data Grant 是一条声明式的访问规则,指定"哪个 Data Role 可以看到哪些行/列"。

代码语言:javascript
复制
-- 管理员:看到所有商家和订单
CREATE DATA GRANT admin_full_access
AS SELECT, INSERT, UPDATE, DELETE
ON merchants
WHERE1 = 1
TO shop_admin_role;

CREATE DATA GRANT admin_orders_full
AS SELECT, INSERT, UPDATE, DELETE
ON orders
WHERE1 = 1
TO shop_admin_role;

-- 商家:只能看到自己店铺的数据
-- End User 名称 = 商家 ID(如 M_BEAUTY),Data Grant 谓词直接匹配
CREATE DATA GRANT merchant_own_shop
AS SELECT, UPDATE
ON merchants
WHERE merchant_id = ORA_END_USER_CONTEXT.username
TO shop_merchant_role;

CREATE DATA GRANT merchant_own_orders
AS SELECT, INSERT, UPDATE
ON orders
WHERE merchant_id = ORA_END_USER_CONTEXT.username
TO shop_merchant_role;
image.png
image.png

关键谓词变量ORA_END_USER_CONTEXT —— 这是End User登录时自动填充的上下文对象,包含End User的身份信息。

3. End User(终端用户)

代码语言:javascript
复制
-- 为每个商家创建 End User(名称 = merchant_id,直接匹配 Data Grant 谓词)
CREATE END USER M_BEAUTY IDENTIFIED BY "beauty123";
GRANT DATA ROLE shop_merchant_role TO "M_BEAUTY"; 

CREATE END USER M_ELEC IDENTIFIED BY "elec123";
GRANT DATA ROLE shop_merchant_role TO "M_ELEC";

CREATE END USER M_FOOD IDENTIFIE DBY "food123";
GRANT DATA ROLE shop_merchant_role TO "M_FOOD";

-- 管理员 End User(同时拥有 admin 角色)
CREATE END USER SHOP_ADMIN_EU IDENTIFIED BY "admin123";
GRANT DATA ROLE shop_admin_role TO "SHOP_ADMIN_EU"; 

End User是Deep Sec的核心身份模型。每个End User:

  • 是一个数据库用户,可以直接登录
  • 拥有ORA_END_USER_CONTEXT(自动填充End User名称)
  • 被授予一个或多个Data Role
  • 查询时,Data Grant谓词自动过滤结果

4. MAC(强制访问控制)

代码语言:javascript
复制
BEGIN
  EXECUTE IMMEDIATE 'SET USE DATA GRANTS ONLY ON SHOP_ADMIN.merchants ENABLED';
  EXECUTE IMMEDIATE 'SET USE DATA GRANTS ONLY ON SHOP_ADMIN.orders ENABLED';
END;
/
image.png
image.png

启用MAC后,所有访问路径(直查、视图、PL/SQL)都必须遵守Data Grant规则,无法绕过。

5. 权限控制演示

代码语言:javascript
复制
CONNECT M_BEAUTY/beauty123@127.0.0.1:1521/deep_sec
ALTER SESSIONS ET CURRENT_SCHEMA = SHOP_ADMIN;
SELECT * FROM merchants;  -- 只返回 M_BEAUTY
SELECT * FROM orders;     -- 只返回 5 行(美妆订单)

CONNECT M_ELEC/elec123@127.0.0.1:1521/deep_sec
ALTER SESSION SET CURRENT_SCHEMA = SHOP_ADMIN;
SELECT * FROM merchants;  -- 只返回 M_ELEC
SELECT * FROM orders;     -- 只返回 5 行(数码订单)

CONNECT SHOP_ADMIN_EU/admin123@127.0.0.1:1521/deep_sec
ALTER SESSION SET CURRENT_SCHEMA = SHOP_ADMIN;
SELECT * FROM merchants;  -- 只返回全部 3 行
SELECT * FROM orders;     -- 返回全部 15 行
image.png
image.png
image.png
image.png

Deep Sec vs VPD 对比

特性

VPD (DBMS_RLS)

Deep Sec

风格

过程式(写 PL/SQL 函数)

声明式(写 WHERE 谓词)

安全模型

可选(NULL 上下文返回 1=1)

零信任(无上下文 = 无数据)

绕过风险

可通过视图绕过

MAC 阻止视图绕过

列级控制

需要额外函数

原生支持

维护成本

高(PL/SQL 函数调试困难)

低(SQL 谓词直观)

工作原理示意

代码语言:javascript
复制
                        ┌─────────────────────────────────────────┐
                        │           Oracle Database 26ai          │
                        │                                         │
  End User A ──登录──→	│  ORA_END_USER_CONTEXT.username = 'A'	  │
                        │         ↓                               │
                        │  Data Grant: WHERE owner = 'A'	  │
                        │         ↓                               │
                        │  SELECT * FROM orders                   │
                        │  → 自动添加 WHERE owner = 'A'	          │
                        │  → 只返回 A 的订单	                  │
                        │                                         │
  End User B ──登录──→	│  ORA_END_USER_CONTEXT.username = 'B'	  │
                        │         ↓                               │
                        │  Data Grant: WHERE owner = 'A'	  │
                        │         ↓                               │
                        │  SELECT * FROM orders                   │
                        │  → 自动添加 WHERE owner = 'B'	          │
                        │  → 只返回 B 的订单	                  │
                        │                                         │
  AIADMIN ──登录──→ 	│  Schema Owner,不受 Data Grant 限制	  │
                        │  → 返回所有订单	                  │
                        └─────────────────────────────────────────┘

核心优势:应用层无需任何过滤逻辑,数据库层面保证每个End User只能看到自己的数据。即使应用有bug,数据也不会泄露。

总结

本期演示了Oracle AI Database 26ai最新版本23.26.2新增功能Deep Data Security,为AI Agent带来了全新好用的数据安全隔离。

老规矩,知道写了些啥。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 胖头鱼的鱼缸 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 胖头鱼的技术专栏-431 AI Agent时代的数据安全方案:Oracle Deep Sec介绍(20260609)
    • 什么是 Deep Data Security?
    • 核心概念
      • 0. 用户创建与授权/测试数据创建
      • 1. Data Role(数据角色)
      • 2. Data Grant(数据授权)
      • 3. End User(终端用户)
      • 4. MAC(强制访问控制)
      • 5. 权限控制演示
    • Deep Sec vs VPD 对比
    • 工作原理示意
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档