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 在数据访问治理中的定位与集成 身份源 HR / AD / Entra ID 账户生命周期 JML 自动化 认证 SSO / MFA / OIDC 授权决策 PDP / Policy RBAC 用户→角色→权限 ABAC 属性+环境策略 ReBAC 关系图路径推导 数据平台访问控制点 行级/列级权限 · 动态脱敏 · 审计 数据资源 表 / 视图 / 文件 / API 审计与权限回收反馈

IAM 在数据访问治理中的定位与集成

IAM 不是数据平台内部的权限模块,而是跨系统的身份与策略中枢。它的定位可以概括为:统一身份、统一认证、集中策略、分发决策、回收审计。在数据访问治理中,IAM 通常通过以下方式集成:

  • 身份同步:通过 SCIM 2.0 或 LDAP 将用户与组同步到数据平台,保证账号来源一致。
  • 单点登录:数据平台接入 OIDC/SAML,用户经 SSO 登录后获得访问令牌,平台据此识别身份。
  • 策略决策:数据平台在访问请求时调用 IAM 的策略决策点(PDP),传入主体、资源、操作、环境属性,返回允许或拒绝。
  • 权限回收:离职或转岗事件通过事件总线触发数据平台权限回收,并记录审计日志。
集成时建议先明确“权威源”和“决策点”的边界:身份属性以 IAM 为准,数据标签与资源属性以数据目录为准,两者在策略决策时合并判断。

一个可参考的授权判断示例

假设策略要求:只有“华东区销售团队”成员,且访问时间在工作日 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 系统则把这些能力串联成可集成、可审计、可回收的数据访问治理基础设施。理解这一层关系,后续的最小化授权、权限评审与动态脱敏才有稳固的落点。