权限管理
问题
数据分析场景中如何做好权限管理?
答案
数据分级
| 级别 | 说明 | 示例 | 访问要求 |
|---|---|---|---|
| L1 公开 | 可公开数据 | 官网内容、公告 | 无限制 |
| L2 内部 | 公司内部数据 | 聚合报表、DAU | 员工可见 |
| L3 敏感 | 敏感业务数据 | 营收明细、用户行为 | 按需审批 |
| L4 机密 | 核心机密数据 | 用户 PII、财务数据 | 严格审批 + 脱敏 |
权限控制维度
行级安全(RLS)
行级安全控制不同用户只能看到自己权限范围内的数据行:
-- PostgreSQL 行级安全策略
-- 场景:区域销售经理只能看本区域数据
ALTER TABLE sales ENABLE ROW LEVEL SECURITY;
CREATE POLICY region_policy ON sales
FOR SELECT
USING (region = current_setting('app.current_region'));
-- 使用时设置当前用户区域
SET app.current_region = '华东';
SELECT * FROM sales; -- 只返回华东区域数据
BI 工具中的权限
| BI 工具 | 行级安全 | 实现方式 |
|---|---|---|
| Tableau | ✅ | 用户过滤器 |
| Power BI | ✅ | DAX RLS 表达式 |
| Metabase | ✅ | 沙箱模式 |
| Superset | ✅ | 行级安全过滤器 |
数据分析师的权限最佳实践
- 最小权限原则:只申请完成工作必需的数据权限
- 不下载明文 PII:在数据库中完成分析,而非导出到本地
- 定期审查权限:离职、转岗时及时回收
- 操作留痕:关键数据操作记录审计日志
常见面试问题
Q1: RBAC 和 ABAC 有什么区别?
答案:
- RBAC(基于角色):用户 → 角色 → 权限。如"数据分析师角色可访问 DWS 层"
- ABAC(基于属性):根据用户属性、数据属性、环境属性动态决定。如"华东区的分析师在工作时间内可访问华东区数据"
- 大多数组织使用 RBAC,复杂场景结合 ABAC
Q2: 如何防止数据被越权访问?
答案:
- 数据库层:RLS + 列级权限
- BI 层:行级安全过滤器
- 导出层:审批流程 + 脱敏
- 审计层:SQL 审计日志,异常访问告警
相关链接
- 数据脱敏 - 脱敏技术
- GDPR 与隐私法规 - 法规要求
- 数据库权限管理 - 数据库层权限