You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在以Snowflake为数据源的SSRS中实现经理仅看下属数据的RLS

Snowflake + SSRS 实现经理级行级安全性(RLS)

一、先在Snowflake端搞定行级安全规则

SSRS最终是查Snowflake取数,数据源层面先做好RLS最靠谱,不用在报表里写一堆冗余逻辑。

1. 准备员工层级关系数据

得有一张记录员工和直属经理关系的表,比如叫EMPLOYEE_HIERARCHY,至少包含这些字段:

  • EMP_ID:员工ID
  • EMP_NAME:员工姓名
  • MANAGER_ID:直属经理的ID
  • MANAGER_NAME:经理姓名

要是你的业务表(比如EMPLOYEE_PERFORMANCE)本身就带经理字段,直接用业务表关联就行,不用单独建这张表。

2. 创建行访问策略

用Snowflake的Row Access Policy定义规则,让登录用户只能看到自己下属的数据。假设业务表是EMPLOYEE_PERFORMANCE,包含EMP_ID、PERFORMANCE_SCORE这些业务字段:

-- 创建行访问策略
CREATE OR REPLACE ROW ACCESS POLICY manager_rls_policy
ON EMPLOYEE_PERFORMANCE
AS (EMP_ID VARCHAR)
RETURNS BOOLEAN ->
  EXISTS (
    SELECT 1 
    FROM EMPLOYEE_HIERARCHY eh
    START WITH eh.MANAGER_ID = CURRENT_USER() -- 这里假设Snowflake用户名和经理ID是对应的
    CONNECT BY PRIOR eh.EMP_ID = eh.MANAGER_ID
    WHERE eh.EMP_ID = EMPLOYEE_PERFORMANCE.EMP_ID
  ) OR CURRENT_USER() = 'ADMIN_USER'; -- 给管理员开全权限,方便排查问题

注意:如果Snowflake用户名和经理ID不对应,得调整匹配逻辑,比如建个用户映射表,或者用Snowflake的用户属性来关联员工ID。

3. 把策略绑到业务表

-- 将策略绑定到业务表,生效RLS规则
ALTER TABLE EMPLOYEE_PERFORMANCE
ADD ROW ACCESS POLICY manager_rls_policy ON (EMP_ID);

二、SSRS端配置集成

1. 数据源身份验证设置

在SSRS的数据源配置里,选Windows身份验证或者Snowflake原生身份验证,确保报表运行时用的是当前登录用户的身份访问Snowflake。如果用Windows AD身份,得先搞定AD用户和Snowflake用户的映射关系。

2. 调整报表数据集查询

不用在报表里加额外过滤逻辑,直接查业务表就行,Snowflake的RLS会自动帮你过滤:

SELECT EMP_ID, EMP_NAME, PERFORMANCE_SCORE, DEPARTMENT
FROM EMPLOYEE_PERFORMANCE;

要是报表需要做员工参数筛选,也可以用递归查询获取当前用户能看的员工列表:

SELECT EMP_ID, EMP_NAME
FROM EMPLOYEE_HIERARCHY
START WITH MANAGER_ID = CURRENT_USER()
CONNECT BY PRIOR EMP_ID = MANAGER_ID
UNION ALL
SELECT CURRENT_USER(), (SELECT EMP_NAME FROM EMPLOYEE_HIERARCHY WHERE EMP_ID = CURRENT_USER()); -- 把经理自己的数据也加上

3. 测试权限

用不同经理的账号登录SSRS看报表,确认只能看到自己的下属(包括自己)的数据,管理员账号能看全量数据。

三、一些优化点

  • 要是员工层级有多层(比如总监→经理→员工),Snowflake的CONNECT BY递归查询会自动处理多层下属,不用改规则。
  • 可以用Snowflake的SESSION_USER或者角色来关联员工ID,比直接用CURRENT_USER()更灵活,适合复杂的权限场景。
  • 如果SSRS用的是共享数据源账户,就得在报表里传当前登录用户ID当参数,然后在Snowflake查询里用这个参数过滤,注意要做参数校验,防止SQL注入。

内容的提问来源于stack exchange,提问作者Ajeet Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:45:59