土法炼钢兴趣小组的算法知识备份

【身份与访问控制工程】IAM 全景:为什么这是高价值赛道

文章导航

分类入口
architecturesecurity
标签入口
#iam#authentication#authorization#sso#oidc#oauth2#scim#saml#jwt#passkey#rbac#abac#zanzibar#keycloak#zero-trust

目录

2020 年 12 月,SolarWinds 被植入后门,波及 18000 多家机构。2023 年 9 月,MGM 度假村遭勒索软件攻击,损失超过 1 亿美元——攻击者只打了一通电话给服务台,冒充员工重置了 Okta 的 MFA 令牌。2024 年 10 月,Okta 自己承认其支持系统被攻破,攻击者获取了部分客户的 HAR 文件(HTTP Archive),其中包含了明文的 Session Cookie。

这些事件的共同逻辑是什么?攻击者没有破解加密算法,没有绕过防火墙,没有挖掘零日漏洞。他们攻击的是身份系统本身——凭证被盗用、会话被劫持、MFA 被社工绕过。当网络边界消失之后,身份就是新的边界。而这道边界的工程质量,决定了一个组织到底是”被攻破”还是”受损可控”。

这就是 IAM(Identity and Access Management,身份与访问控制)从 IT 支撑系统变成安全架构核心赛道的根本原因。

一、IAM 的四个核心问题

IAM 解决的不是一个技术问题,而是四个层层递进的问题:

  1. 你是谁?(认证,Authentication):用户、设备、服务如何证明自己的身份。从密码到 Passkey,从 Session 到 JWT,从单因素到自适应 MFA。
  2. 你能做什么?(授权,Authorization):已认证的主体能访问哪些资源、执行哪些操作。从 RBAC 到 ABAC 到 ReBAC 到 Zanzibar 式的图关系授权。
  3. 你的生命周期是什么?(治理,Governance):身份从创建、变岗、休假、离职到注销的完整生命周期。从手动开通到 SCIM 自动化,从 PAM 特权管理到审计追溯。
  4. 我怎么管理这一切?(基础设施,Infrastructure):身份系统的部署、运维、监控、迁移和高可用。从自建 Keycloak 到采购 Auth0/Okta/Entra,从单租户到多租户 CIAM 平台。

这四个问题在工程中不是先后出现的,而是同时存在的。一个 B2B SaaS 平台在接过第一个”我们要接 SSO”的客户需求时,它同时踏入了认证协议(OIDC/SAML)、令牌管理(JWT/Refresh Token)、多租户授权和身份治理四件事。

二、现代 IAM 的五层技术栈

如果把 IAM 当成一个工程系统来拆,它的技术栈大致分成五层:

flowchart TD
  subgraph L1["第一层:协议与互操作"]
    OIDC["OIDC / OAuth 2.1"]
    SAML["SAML"]
    SCIM["SCIM"]
    LDAP["LDAP"]
  end

  subgraph L2["第二层:令牌与会话"]
    JWT["JWT / JWS / JWE"]
    Session["Session / Refresh Token"]
    JWKS["JWKS / Token Introspection"]
  end

  subgraph L3["第三层:认证强度"]
    MFA["TOTP / WebAuthn / Passkey"]
    Adaptive["自适应认证 / 风险引擎"]
    Workload["mTLS / SPIFFE / Workload Identity"]
  end

  subgraph L4["第四层:授权与策略"]
    RBAC["RBAC / ABAC / ReBAC"]
    Zanzibar["Zanzibar 图关系授权"]
    PEP["OPA / Cedar / 策略引擎"]
  end

  subgraph L5["第五层:治理与平台"]
    CIAM["CIAM / B2B 多租户"]
    PAM["PAM / IGA"]
    Platform["自建 vs 采购 / Keycloak / Auth0"]
  end

  L1 --> L2 --> L3 --> L4 --> L5

第一层(协议与互操作)是 IAM 的语言层。OIDC 定义了”怎么用第三方账号登录”,OAuth 2.1 定义了”怎么委托访问权限”,SAML 定义了”企业 SSO 怎么在 XML 世界运转”,SCIM 定义了”账号开通和注销怎么自动化”。这层不直接解决安全问题,但没有统一的语言,后面的所有层都无从谈起。

第二层(令牌与会话)是 IAM 的流通层。JWT 解决了”怎么把身份信息安全地编码进令牌”,JWS/JWE 分别解决了”怎么签名”和”怎么加密”,Refresh Token 和 Session 解决了”令牌的生命周期管理”。这层的工程决策(令牌有效期、吊销策略、密钥轮换频率)是安全事故发生后区别”令牌泄露”和”令牌泄露导致全面失陷”的核心变量。

第三层(认证强度)是 IAM 的防守层。TOTP、WebAuthn、Passkey 解决了”怎么证明是你本人而不是拿到你密码的人”,自适应认证解决了”在什么条件下要求额外的认证因素”,Workload Identity 解决了”不是人而是服务的时候怎么认证”。

第四层(授权与策略)是 IAM 的决定层。从 RBAC 的角色树到 ABAC 的属性表达式,从 Google Zanzibar 的图关系授权到 OPA/Cedar 的策略即代码——这层解决的是”知道了你是谁之后,你能不能做这件事”。这层的工程复杂度最高,因为业务规则的表达能力、查询延迟、策略管理成本三者之间存在根本性的权衡。

第五层(治理与平台)是 IAM 的工程化层。CIAM(Customer IAM)和 Workforce IAM 是不同的架构,PAM 和 IGA 是安全合规的硬需求,“自建还是采购”是每个技术负责人必须回答的问题。

三、这个系列能解决什么

目前中文互联网的 IAM 内容呈现两个极端:要么是”OAuth 2.0 四种授权模式”的三页入门(只覆盖了第一层的 20%),要么是 Auth0/Okta 的英文产品文档(解决的是特定产品怎么用,不是系统怎么设计)。中间缺失的是从协议原理到工程落地的那一段——也就是本系列要填补的内容。

具体来说,这个系列会围绕五个问题展开:

  1. OIDC 和 OAuth 2.1 到底能解决哪些场景,边界在哪里? OIDC 是为”谁在用这个浏览器”设计的,不是你所有认证需求的答案。当你需要服务间认证、设备认证、API 授权时,OIDC 的哪些部分能用,哪些不能?详见第 02、03、10 篇。

  2. JWT 好用但不是银弹——什么场景不该用 JWT?吊销困境怎么系统性地解? JWT 把”查 Session”变成了”验签名”,代价是令牌过期之前全是活令牌。Refresh Token 轮换、Token Introspection、基于事件的吊销(如”用户密码被重置”)怎么做?详见第 06、07 篇。

  3. RBAC 不够用了——ABAC、ReBAC、Zanzibar 各自解决什么问题,什么时候该上? 5000 个角色、50 个属性规则和一张关系图之间的本质区别是什么?Zanzibar 的一致性模型(提到 Zanzibar 的人 100% 会说”支持一致性和低延迟”,但没说怎么做到的)的真正约束是什么?详见第 11、12、13 篇。

  4. B2B SaaS 的多租户权限系统怎么设计才不在第 10 个客户时爆炸? 每个租户要自定义角色、要有组织树、要审批流、要数据隔离——这四件事会互相打架。从架构上怎么解?详见第 14、18 篇。

  5. 自建还是采购——Keycloak、Auth0、Okta、Entra 的工程边界在哪里? 自建 Keycloak 省下的授权费用,在运维、定制、高可用、多活上要补回去多少?什么规模下自建比采购更划算?详见第 16、17、20 篇。

四、与已有文章的关系

本站已有若干认证授权主题的先行文章,它们和本系列形成不同的层次:

已有文章 层次 与本系列关系
认证架构:从 Session 到 JWT 到 OIDC 架构总览(中观) 提供”为什么选 JWT 而不是 Session”“为什么上 OIDC”的宏观推理,本系列的 02、06 篇在此基础拆解协议细节和令牌工程
授权架构:RBAC、ABAC 与策略引擎 架构总览(中观) 提供 RBAC→ABAC→ReBAC 的推理链,本系列的 11、12、13 篇在此基础拆解 Zanzibar 算法和 OPA 策略语言
零信任架构 架构总览(中观) 提供零信任的安全哲学,本系列的 10 篇在此基础拆解 SPIFFE/SPIRE 的服务身份实现
API 安全架构 架构总览(中观) 提供 API 安全的攻击面分析,本系列的 15 篇在此基础讲解 API Gateway 认证授权网关的工程落地
以实例说明 OAuth2 基础科普(微观) OAuth2 授权码模式的交互式入门,本系列的 03 篇在此基础上升到 OAuth 2.1 安全最佳实践
JWT 简介、陷阱及建议 基础科普(微观) JWT 格式与基本安全性入门,本系列的 06 篇在此基础覆盖 JWS/JWE/JWKS 和密钥轮换
PKCE 基础科普(微观) PKCE 的动机和流程,本系列的 03 篇将此扩展到完整的 OAuth 2.1 安全模型

阅读建议:如果你对认证授权完全没概念,建议先快速翻一遍 wauth/ 下的三篇科普。如果已有基础认知,直接从这个系列开始即可——本系列在涉及基础概念时会简要回顾,但不会从头讲起。

五、推荐阅读路径

六、写作约定


下一篇企业单点登录:OIDC 与现代 SSO

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-04-21 · architecture / security

身份与访问控制工程

从 OIDC、OAuth 2.1、SAML、SCIM 到多租户权限、CIAM、PAM 与身份平台选型——系统拆解现代身份与访问控制的协议、架构与工程实践。

2026-06-13 · architecture / security

【身份与访问控制工程】企业单点登录:OIDC 与现代 SSO

OIDC 是当下企业 SSO 的事实标准,但大多数实现只用了它 20% 的规范。本文从 OIDC 核心规范出发,拆解 Authorization Code Flow + PKCE 的完整交互、ID Token 的验证规则、Discovery 与 Dynamic Registration 的互操作性机制,以及 RP-Initiated Logout 和 Session Management 的工程实现细节。

2026-06-17 · architecture / security

【身份与访问控制工程】RBAC、ABAC、ReBAC:权限模型怎么选

RBAC 简单但会角色爆炸,ABAC 灵活但策略管理失控时更可怕,ReBAC 表达力强但引入了图遍历的性能约束。三种模型不是'选一个升级另一个'的线性关系,而是在表达能力、管理成本和性能三者之间做工程权衡。本文从每种模型的本质数据结构出发,拆解选型框架。

2026-06-20 · architecture / security

【身份与访问控制工程】Keycloak 工程拆解:Realm、Client、Flow 与扩展机制

Keycloak 是 CNCF Incubating 项目中最成熟的 IAM 平台,也是自建身份系统的首选开源方案。但它不是'下个 JAR 跑起来就行'的简单软件——Realm 的隔离模型、Authentication Flow 的执行引擎、Client Scope 和 Protocol Mapper 的职责分离、自定义 SPI 扩展点——理解这些内部架构才能做好生产部署。本文从 Keycloak 的核心概念模型出发,拆解其内部执行路径和扩展机制。


By .