3. 身份与访问管理基础
数据访问权限治理的第一道地基,是身份与访问管理(IAM)。如果连“谁是谁、谁在什么条件下能做什么”都无法稳定回答,最小化授权就只能停留在纸面。本节围绕身份源、账户生命周期、认证与授权的区别、RBAC/ABAC/ReBAC 三类模型,以及 IAM 在数据访问治理中的定位与集成方式展开。
身份源:身份的权威起点
身份源(Identity Source)是账户与身份属性的权威来源。企业常见身份源包括人力资源系统(如 Workday、SAP HR)、目录服务(如 Active Directory、OpenLDAP)、云身份提供商(如 Azure AD/Entra ID、Okta)以及面向外部用户的客户身份系统(CIAM)。身份源决定了“入职即建号、转岗即调权、离职即销号”能否自动化。
一个关键原则是:身份源应唯一且权威。若 HR 系统、AD 和业务系统各自维护一套员工名单,就会出现“已离职但账号仍存活”的幽灵账户。实践中通常以 HR 系统作为员工身份的权威源(System of Record),通过 SCIM 或 LDAP 同步到目录服务,再由目录服务向各数据平台分发身份。
账户生命周期:从入职到离职
账户生命周期(Joiner-Mover-Leaver,JML)是 IAM 的主干流程:
- Joiner(入职):HR 系统创建员工记录后,自动在目录中创建账户,并按岗位角色分配基础权限组。
- Mover(转岗):岗位变更触发权限重算,旧岗位权限应被回收,新岗位权限按需授予,避免权限只增不减。
- Leaver(离职):离职事件触发账户禁用、会话吊销、令牌失效、数据访问凭证回收,并保留审计记录。
生命周期管理的核心指标是“权限时效性”:从事件发生到权限变更生效的时间差。例如,若离职后 24 小时账号仍可访问数据仓库,就是明显的治理缺口。
认证与授权:两件不同的事
认证(Authentication)回答“你是谁”,授权(Authorization)回答“你能做什么”。认证通过密码、MFA、SSO、证书或生物特征确认身份;授权则依据策略判断某个已认证主体能否对特定资源执行特定操作。
常见误区是把认证成功等同于授权通过。用户通过 SSO 登录,只证明身份可信,并不代表他有权读取某张包含客户手机号的表。数据访问治理中,认证由 IAM 统一承担,授权则往往需要与数据平台的行列级权限、标签策略、动态脱敏联动。
RBAC、ABAC、ReBAC 模型对比
三种主流授权模型各有适用场景:
| 模型 | 核心思想 | 典型表达 | 优势 | 局限 |
|---|---|---|---|---|
| RBAC | 基于角色授权 | 用户→角色→权限 | 易管理、审计清晰 | 角色爆炸、难表达细粒度条件 |
| ABAC | 基于属性策略 | 主体+资源+环境属性 | 细粒度、动态 | 策略复杂、属性质量依赖高 |
| ReBAC | 基于关系图 | 主体与资源的关系路径 | 适合协作与层级共享 | 关系图维护成本高 |
举例说明:某数据分析师需要访问“华东区销售明细”。RBAC 可能授予“销售分析师”角色,但无法区分区域;ABAC 可用策略 subject.department == resource.region 实现动态判断;ReBAC 则通过“用户属于华东团队,华东团队拥有该数据集”的关系链推导权限。实际系统常混合使用:RBAC 做粗粒度基线,ABAC 做条件细化,ReBAC 处理共享与继承。
IAM 在数据访问治理中的定位与集成
IAM 不是数据平台内部的权限模块,而是跨系统的身份与策略中枢。它的定位可以概括为:统一身份、统一认证、集中策略、分发决策、回收审计。在数据访问治理中,IAM 通常通过以下方式集成:
- 身份同步:通过 SCIM 2.0 或 LDAP 将用户与组同步到数据平台,保证账号来源一致。
- 单点登录:数据平台接入 OIDC/SAML,用户经 SSO 登录后获得访问令牌,平台据此识别身份。
- 策略决策:数据平台在访问请求时调用 IAM 的策略决策点(PDP),传入主体、资源、操作、环境属性,返回允许或拒绝。
- 权限回收:离职或转岗事件通过事件总线触发数据平台权限回收,并记录审计日志。
一个可参考的授权判断示例
假设策略要求:只有“华东区销售团队”成员,且访问时间在工作日 9:00–18:00,才能读取 sales_east 表的明细数据。用 ABAC 表达可写成:
permit(
principal in Role::"sales_analyst",
action == Action::"read",
resource == Table::"sales_east",
when {
principal.team == "east_sales" &&
context.time.hour >= 9 &&
context.time.hour < 18 &&
context.time.weekday in [1,2,3,4,5]
}
);
当用户请求到达时,数据平台将主体属性(团队、角色)、资源属性(表名、敏感级别)、环境属性(时间、IP)传给策略引擎,引擎返回 Permit 或 Deny。若返回 Deny,平台应记录拒绝原因,便于审计与策略调优。
总结来看,身份源解决“身份从哪来”,账户生命周期解决“身份如何变化”,认证与授权解决“谁在什么条件下能做什么”,RBAC/ABAC/ReBAC 提供不同粒度的授权表达能力,而 IAM 系统则把这些能力串联成可集成、可审计、可回收的数据访问治理基础设施。理解这一层关系,后续的最小化授权、权限评审与动态脱敏才有稳固的落点。