You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Oracle Analytics Server 2025中基于用户名配置RLS?

在Oracle Analytics Server 2025中实现基于登录用户的行级安全(RLS)

针对你要让每个用户仅查看自身username对应数据的需求,下面详细对比三种配置方式的适用场景、操作步骤及示例,再给出最佳实践:

一、三种配置方式的核心区别

方式适用场景操作主体
身份域策略跨所有BI项目统一管控用户数据访问权限身份域管理员
Oracle Server Console数据安全单个/部分数据集快速配置,无需修改RPD业务/BI管理员
RPD过滤器复杂多表关联、自定义逻辑的行级过滤BI开发人员

二、具体配置步骤与示例

1. 身份域策略(全局级RLS)

如果需要在所有BI内容中统一应用用户数据隔离,用这种方式:

  • 登录Oracle身份域控制台(对应12c身份域管理模块)
  • 进入策略页面,新建策略
  • 编写规则语句,绑定用户身份与数据集字段:
allow group BI_Users to read analytics-data in tenancy where target.username = request.user.username
  • 确保数据集的username字段和身份域中的用户登录名完全匹配(比如都是john_doejohn@company.com

2. Oracle Server Console 数据安全配置(数据集级RLS)

针对单个数据集快速配置,操作最直观:

  • 登录Oracle Server Console 12c,找到目标数据集,进入数据安全标签页
  • 新建行级安全规则:
    • 规则名:User_Data_Access
    • 过滤条件:直接用内置变量 username = ':USER':USER会自动替换为当前登录用户的用户名)
    • 选择要应用规则的表/视图,分配给目标用户组(比如所有BI用户)
  • 示例:当用户jane_smith登录时,系统自动将过滤条件转为username = 'jane_smith',只显示她的数据

3. RPD过滤器(语义模型级RLS)

适合复杂数据模型(多表关联、自定义逻辑):

  • 打开Oracle BI Administration Tool,连接到你的RPD
  • 找到目标逻辑表,右键属性行级安全,新建规则:
    • 规则名:User_Specific_Data
    • 逻辑SQL过滤条件:用内置函数USER()获取当前用户,比如:
"Dim_User"."username" = USER()
  • 如果是多表关联场景(比如订单表关联用户表),可以写复杂过滤逻辑:
"Fact_Orders"."user_id" = (SELECT "user_id" FROM "Dim_User" WHERE "Dim_User"."username" = USER())
  • 保存RPD并重新加载到OAS服务器,分配规则给对应用户/组

三、最佳实践

  • 按需选方式:全局统一管控用身份域策略,单数据集快速配置用控制台,复杂逻辑用RPD
  • 用户名一致性:数据集username必须和用户登录名完全匹配(注意大小写、域名前缀)
  • 测试验证:用不同用户登录BI控制台,检查可视化内容是否仅显示自身数据,确认规则生效
  • 最小权限原则:将RLS规则分配给特定用户组,不要给所有用户开放
  • 性能优化:给数据集的username列加索引,避免大表全表扫描影响查询速度

内容的提问来源于stack exchange,提问作者morteza KHORSAND

火山引擎 最新活动