3. 身份与访问管理(IAM):统一身份认证、单点登录(SSO)、多因素认证(MFA)、身份生命周期管理

聊到零信任,很多人第一反应是网络分段、微隔离。但我个人觉得,身份才是零信任真正的基石。你想想看,零信任的核心假设是“网络内外部都不可信”,那凭什么决定谁能访问什么资源?凭的就是身份。

这一章,我们就来拆解 IAM 的四个关键模块:统一身份认证、单点登录、多因素认证,以及身份生命周期管理。嗯,这里要注意,它们不是孤立的技术选型,而是一套环环相扣的体系。

核心观点: 在零信任架构中,身份不再是“用户名+密码”那么简单。它是新的安全边界,是每一次访问请求的判决依据。

3.1 统一身份认证:把散落的身份收拢起来

很多企业早期都是“烟囱式”建设——CRM 一套用户库,OA 一套,财务系统又一套。员工要记三四个密码,IT 部门要维护七八个目录。这不仅是体验差,更是巨大的安全漏洞。

统一身份认证,说白了就是建立一个唯一的身份源。所有系统都认这一个源,不再各自为政。

3.1.1 身份源的选择

我个人习惯把身份源分为三类,你在选型时可以对照看看:

类型 典型产品 适用场景 注意点
本地目录 Microsoft Active Directory 传统企业、Windows 生态为主 扩展性有限,云场景适配麻烦
云身份服务 Azure AD、Okta、Auth0 多云、SaaS 应用多的企业 数据主权、合规要求
开源方案 Keycloak、FreeIPA 预算有限、定制需求强 运维成本较高

我在项目中遇到过一家金融客户,他们坚持用 AD 做唯一源,但后来上云时发现 AD 和云应用的集成非常痛苦。最后不得不加了一层 Azure AD 做同步桥接。所以我的建议是:提前规划好身份源的演进路径,别等业务跑起来了再改。

3.1.2 认证协议的选择

统一身份认证不只是建个用户库,还得定好“怎么认”。目前主流协议就三个:

  • LDAP:老牌协议,适合内部系统,但安全性较弱,不建议暴露到公网。
  • SAML 2.0:基于 XML 的断言,企业级 SaaS 应用支持好,但比较重。
  • OIDC (OpenID Connect):基于 OAuth 2.0,轻量、适合移动端和单页应用,是目前的主流趋势。
我的选型建议: 新系统优先考虑 OIDC。如果对接的是老牌企业应用(如 Salesforce、Workday),SAML 2.0 更稳妥。LDAP 只保留给遗留系统,并且要加一层反向代理做安全加固。

3.2 单点登录(SSO):一次认证,处处通行

SSO 是统一身份认证的自然延伸。用户登录一次,就能访问所有授权的应用,不用反复输密码。

但 SSO 有个容易被忽视的问题:单点故障。如果 SSO 服务挂了,所有应用都进不去。我曾经在项目里吃过这个亏——凌晨两点,SSO 服务宕机,全公司没法办公。后来我们做了两件事:

  1. SSO 服务本身要集群部署,至少跨可用区。
  2. 设计离线令牌机制,允许用户在短时间内使用缓存的令牌访问部分应用。

3.2.1 SSO 的实现模式

常见的 SSO 实现方式有几种:

  • 反向代理模式:所有流量先经过代理,代理负责认证。适合老系统改造,不改应用代码。
  • Agent/插件模式:在应用服务器上装插件,拦截请求做认证。适合 Java、.NET 等统一技术栈。
  • 标准协议模式:应用直接集成 OIDC/SAML 客户端库。最灵活,但改造成本高。

我个人比较推荐反向代理 + 标准协议混合。老系统用代理兜底,新系统直接集成协议。这样既保护了历史投资,又为未来留了扩展空间。

3.3 多因素认证(MFA):密码不够,再加一把锁

密码泄露是常态。根据 Verizon 的数据报告,超过 80% 的数据泄露和弱口令或密码泄露有关。所以零信任里,MFA 不是可选项,是必选项。

MFA 的三个因素:

  • 你知道的:密码、PIN 码
  • 你拥有的:手机、硬件令牌、智能卡
  • 你是什么:指纹、人脸、虹膜

实际部署时,我建议至少启用两个不同因素。比如密码 + 手机验证码,或者密码 + 生物识别。

3.3.1 MFA 的部署策略

不是所有场景都需要 MFA。如果每次访问都弹 MFA,员工会疯掉。我的做法是基于风险做自适应 MFA:

风险等级 触发条件 MFA 要求
低风险 内网、常用设备、工作时间 仅密码(或 SSO 会话有效)
中风险 外网、新设备、非工作时间 密码 + TOTP
高风险 异地登录、异常行为、敏感操作 密码 + 硬件令牌 + 管理员审批
避坑指南: 我曾经见过一个客户,给所有员工强制启用了短信验证码 MFA。结果海外员工收不到短信,运维人员半夜做变更还得等验证码。后来我们换成了 TOTP(基于时间的一次性密码)+ 硬件令牌,问题才解决。所以,MFA 的选型要考虑用户场景,别一刀切。

3.4 身份生命周期管理:从入职到离职,全程可控

身份不是静态的。员工入职、转岗、离职,身份权限都要跟着变。很多安全事件就出在“人走了,账号没删”上。

身份生命周期管理,核心就是自动化。手动操作太慢,还容易出错。

3.4.1 四个关键阶段

  • 创建:HR 系统触发,自动在身份源创建账号,分配默认权限。
  • 变更:转岗或晋升,自动调整权限组,回收旧权限。
  • 暂停:长期休假或异常行为,临时禁用账号,保留数据。
  • 删除:离职流程触发,自动回收所有权限,归档或删除账号。

我在项目中遇到过最典型的问题:权限回收不及时。一个员工离职了,IT 忘了删账号,三个月后这个账号被用来发起攻击。后来我们做了两件事:

  1. HR 系统和 IAM 系统打通,离职流程自动触发账号禁用。
  2. 设置定期账号审计,每周跑一次报告,找出僵尸账号。

3.4.2 权限模型:RBAC 还是 ABAC?

权限管理是生命周期里的核心。两种主流模型:

  • RBAC(基于角色的访问控制):按角色分配权限。简单直观,适合组织架构稳定的企业。
  • ABAC(基于属性的访问控制):按用户属性、资源属性、环境条件动态计算权限。更灵活,适合复杂场景。

我的建议是:以 RBAC 为基础,在关键场景叠加 ABAC。比如,普通员工按角色有“查看报表”权限,但 ABAC 可以再加一条:只有 IP 在内网且时间在 9:00-18:00 才能查看。

3.5 知识体系总览

下面这张图,把 IAM 在零信任中的位置和核心模块串起来了。你可以把它当作本章的思维导图:

零信任 IAM 核心架构图 零信任 IAM 核心架构 身份与访问管理 (IAM) 统一身份认证 唯一身份源 · 协议选型 单点登录 (SSO) 反向代理 · 标准协议 多因素认证 (MFA) 自适应 · 风险驱动 身份生命周期 自动化 · RBAC/ABAC 关键能力:统一目录 · 协议网关 · 风险引擎 · 自动化编排 核心原则 最小权限 · 持续验证 · 动态信任 · 全生命周期覆盖 图:零信任 IAM 核心架构,四个模块协同工作,底层由关键能力支撑

3.6 落地建议

最后,给你几个我在实战中总结的落地建议:

  1. 先统一身份源,再谈其他。 没有唯一的身份源,SSO、MFA 都是空中楼阁。
  2. MFA 要分阶段推行。 先覆盖 VPN、管理员、敏感系统,再逐步扩展到全员。
  3. 生命周期管理一定要自动化。 手动操作是安全漏洞的温床。
  4. 定期做权限审计。 至少每季度一次,清理僵尸账号和过度授权。
我的经验: 很多团队把 IAM 当成“一次性项目”,上线就完事了。其实 IAM 是持续运营的。身份数据会变,业务系统会变,攻击手法也会变。建议成立一个IAM 运维小组,专门负责日常监控、审计和策略调整。