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

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

文章导航

分类入口
architecturesecurity
标签入口
#IAM#CIAM#IGA#PAM#SSO#Okta#Keycloak#identity

目录

一家做 B2B 协作工具的 SaaS 公司,年营收 2000 万美元,增长曲线很漂亮。某天一家财富 500 强企业准备下一张 180 万美元年度合同,采购流程走到法务环节时停了下来。对方的 Vendor Security Review 清单里列着三十几条硬性要求:SAML 2.0 单点登录、SCIM 自动账号同步、至少 7 年的访问审计留存、员工离职 24 小时内自动吊销全部访问、特权操作需要即时审批和会话录制、通过 SOC 2 Type II 审计且报告须在过去 12 个月内签发。公司 CTO 打开内部系统看了一眼,发现自家平台只有一个孤零零的邮箱密码登录框,管理员权限是工程师手动在后台改一个布尔字段,离职员工的账号清理由人力系统导出 Excel、工程师每周二手动跑一次脚本,审计日志散落在三个不同的 Kafka topic 里、保留策略只有 30 天。这张合同拿不下来。

IAM 生态全景图

这不是一个戏剧化的假设,它几乎是每一家做到中等规模的 SaaS 公司都会遇到的真实触发器。身份与访问管理(Identity and Access Management,IAM)很少在系统上线第一天成为瓶颈,它的价值在两个时间点突然暴涨:一是业务开始接触有合规要求的大客户,二是公司自身规模跨过某个人员门槛、内部系统的访问变成风险集中点。跨过这两个拐点之后,IAM 不再是”登录模块”,而是合规的法定载体、平台工程的身份底座、安全体系的策略执行点。理解这个演进的形状,是判断这条赛道价值的前提。

这个系列要讲的不是”什么是 OAuth 2.0”这种入门话题——站内旧文 认证架构:从 Session 到 JWT 到 OIDC 已经讲过协议基础,授权架构:RBAC、ABAC 与多租户 覆盖过主流权限模型。本系列从这里接着往上走:协议细节的生产踩坑、企业级 SSO 的 federation 拓扑、SCIM 的数据同步灾难、Passkey 与适应式认证的落地、多租户授权模型、Keycloak 内核、特权访问治理、审计合规、身份平台迁移事故。这一篇是系列的起点,目的是把整张地图先摊开。


一、典型触发器:SaaS 公司被一纸 SOC 2 清单按停

开篇那家 SaaS 公司的处境,可以拆成几个互相嵌套的工程问题。表面上看是”没做 SSO”,但真正卡住合同的是一整套控制体系的缺失。

1.1 大客户的安全问卷长什么样

企业采购部门对外部 SaaS 的安全尽调,早已不是一张 Excel 问卷那么简单。主流安全问卷(Vendor Security Questionnaire)如 CAIQ(Consensus Assessments Initiative Questionnaire,云安全联盟发布)、SIG(Standardized Information Gathering)、VSA(Vendor Security Alliance)都有数百项条目,其中身份相关的通常占到 30%~40%。典型项包括:

这些问题每一条背后都对应一个 IAM 能力。问卷里的一个”是”,在系统里对应几百到几千小时的工程投入。问卷答不上来,合同就走不下去。

1.2 SOC 2 审计里的 CC6 系列控制项

美国注册会计师协会(AICPA)的 SOC 2 审计框架,围绕信任服务标准(Trust Services Criteria,TSC)展开,其中 CC6(Common Criteria 6,逻辑与物理访问控制)直接覆盖 IAM:

Type II 审计不只看你有没有写政策文档,它要求审计师在一段观察期(通常 6~12 个月)内抽样检查控制项的”运行有效性”。CC6.2 的一个典型抽样是:审计师从 HR 系统拉过去 12 个月的离职名单,随机抽 25 个人,要求你证明这 25 个人的所有系统访问在离职当日或次日被吊销,并且提供日志证据。如果离职账号清理是人工跑脚本、脚本偶尔忘了跑、Kafka 日志过期了,这一项控制就是失败的(deficiency),审计报告会写一条”Exception”,大客户看到 Exception 会进一步追问,合同谈判会停滞。

1.3 合规之外的隐性压力

除了合规,还有一些看似零散但合起来很致命的压力,在把 IAM 推到架构优先级清单的前几位:

这些压力不是一次性的,它们是叠加的,且随着业务增长而指数放大。

1.4 开篇那家公司接下来会发生什么

回到开头那家 SaaS 公司。如果不解决身份体系问题,结局通常是以下几种:

结局 A:失去合同。对方安全团队给出明确的”不合规则不签”结论,采购被迫选择其他供应商。这张 180 万美元的合同蒸发,并且一旦进入对方的”未通过供应商”清单,未来几年都很难重新进入评估。

结局 B:勉强通过条件签约,带着补偿性条款。双方在法务条款里加入”甲方有权随时在尽调发现重大缺陷时终止合同”之类的保护条款,合同规模被大幅砍掉(比如从 180 万美元降到 40 万美元试点),并且埋下了后续追加 IAM 改造的承诺,改造失败则合同自动终止。

结局 C:启动紧急改造计划。在销售推动下,工程团队被抽调做 3~6 个月的 IAM 建设冲刺。问题是这种”被动 IAM”往往只以合同为目标,做成一次性满足,没有考虑下一个客户的变体要求、没有考虑合规持续运行的成本、没有考虑多租户扩展路径。半年后第二个类似客户出现时,发现系统根本没法横向复用。

结局 D:提前规划、稳扎稳打。公司在第一张大合同出现之前就已经启动身份体系建设,构建了可复用的 IAM 底座,新客户接入从”几周工程项目”变成”填配置表单”,销售周期缩短、Win Rate 提升。

这四种结局的分水岭,不在于技术难度,而在于身份建设是被合同推着跑还是被路线图牵着走。本系列的目标就是帮你走到结局 D。


二、企业为什么愿意为身份体系持续付费

IAM 之所以是一条高价值赛道,本质是因为它的买方付费意愿来自多个互相独立的驱动力。理解这些驱动力的结构,就理解了这条赛道的护城河。

2.1 合规的强制性

SOC 2、ISO/IEC 27001、HIPAA(Health Insurance Portability and Accountability Act)、PCI DSS(Payment Card Industry Data Security Standard)、GDPR——每一个合规框架都有一整章讲访问控制,且这些要求是可审计、可抽样、可失败的。合规失败的后果是直接的:SOC 2 报告写上 Exception,大客户流失;HIPAA 违规每条最高 190 万美元罚款;PCI DSS 不过关则无法受理信用卡支付。合规要求把 IAM 从”应该做”变成”必须做”。

不同合规框架对 IAM 的侧重点也不同。PCI DSS 4.0 的第 7~8 节集中讲访问控制,其中 8.3 强制要求对持卡人数据环境(Cardholder Data Environment,CDE)的所有访问实施多因素认证,8.6 对服务账号凭据要求特定的存储、使用和轮转策略。HIPAA 的 Security Rule §164.312(a)(1) 要求实现 Unique User Identification 和 Automatic Logoff。ISO 27001 的 Annex A.5.15~A.5.18 覆盖访问控制、身份管理、认证信息、访问权限。一家服务多类客户的 SaaS 需要同时满足多个框架,这几乎必然推动它投资统一的身份底座,因为单独为每个框架做一遍控制是不可行的。

2.2 SSO 带来的直接经济收益

SSO(Single Sign-On)不只是用户体验改善,它是能在财务报表里算出来的成本节约。Gartner 的数据显示一次密码重置的平均成本在 20~70 美元之间,综合 IT 支持、员工时间、二次身份核验的人工成本。对一家 2000 人公司来说,如果 30% 工单是密码相关、每人每年提 2.5 张,一年就是 1500 张工单,仅这一项就是 3 万~10 万美元。更大的收益是”应用接入效率”:有了统一 IdP 之后,新增一个 SaaS 应用从”开一个新账号体系”变成”添加一个 SAML 信任”,通常从几天缩到几小时。

SSO 带来的是可累积的杠杆——接入的应用越多,边际成本越低,切换 IdP 的迁移成本越高。这正是 Okta、Entra ID 这类平台估值持续走高的核心逻辑。

2.3 离职自动化消除僵尸账号

一个工程师一年平均有接触 12~20 个内部系统的权限。如果离职处理是人工跑表、每周同步一次,那么平均每个离职员工有 3.5 天的”可访问窗口”。这个窗口在大多数公司是事实上的安全漏洞。自动化的 Joiner-Mover-Leaver(JML)流程,通过 HR 系统作为权威源,SCIM 协议把状态变更推到下游所有应用,可以把这个窗口压缩到分钟级。

SCIM(System for Cross-domain Identity Management)2.0 是目前行业事实标准,它定义了 /Users/Groups 两个主要资源端点,以及 PATCH 操作的精细化属性更新。一次典型的离职事件触发 SCIM 请求如下:

PATCH /scim/v2/Users/e4f2c930-2b8c-4d22-9d45-99f3c2a1b5d1 HTTP/1.1
Host: api.saas-app.example.com
Authorization: Bearer eyJhbGciOi...
Content-Type: application/scim+json

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
  "Operations": [
    {
      "op": "replace",
      "path": "active",
      "value": false
    }
  ]
}

一条这样的请求,接收方 SaaS 就必须在合理时间内(行业通行 15 分钟内)完成账号停用、吊销所有活跃会话、使所有颁发的 Refresh Token 失效。这种能力看似简单,但要在几十个下游应用里全部做对,本身就是一套身份治理工程。

2.4 审计留痕的不可省略性

审计日志不是”写到文件里就完了”。合规要求的审计留痕有几个硬指标:

很多团队在 IAM 早期把日志写到 Elasticsearch,后来才发现 ES 的默认存储不满足”不可篡改”,而且成本随时间线性增长。最终要么上专用 SIEM(Security Information and Event Management)平台,要么把日志冷热分层、热数据在 ES、冷数据归档到 S3+Object Lock。这些都是 IAM 平台要原生集成的能力。

2.5 供应链攻击与身份作为新周界

2020 年 12 月的 SolarWinds 事件后,美国 NIST 和 CISA(Cybersecurity and Infrastructure Security Agency)先后发布了一系列指引,核心论点是”身份(identity)才是新的安全周界”。传统的网络周界(边界防火墙、VPN)在云原生和远程办公时代逐步失效,真正能控制的是”谁、在什么设备、什么上下文、访问什么资源、做什么操作”。这个视角推动了两件事:第一,零信任架构(Zero Trust)成为主流——参见 零信任架构;第二,IAM 从一个辅助模块变成安全基础设施的中心,从 CISO 汇报层级里直接挂出来。

从采购决策看,IAM 项目在成熟企业的年度预算里已经占到安全总预算的 15%~25%,且增速高于安全总预算本身。对供应商来说,这是一个需求长期化、客户粘性高、横向扩展能力强(Workforce→Customer→Privileged)的市场,护城河极深。

2.6 近年重大身份事故的共性结构

回顾近几年有公开复盘的重大安全事件,几乎都落在身份体系的薄弱点上:

这些事故的共同模式:身份不是被正面攻破,而是被从侧面绕过——支持通道、Session 劫持、签名密钥泄露、供应链注入。做 IAM 时不能只看 happy path,要系统性地识别所有”影子信任链”。


三、IAM 的六个子领域

“IAM”这个词在行业内经常被作为所有身份相关能力的总称,但技术选型的时候必须精确——每个子领域的设计约束、成熟厂商、开源替代、落地成本都不同。下面拆解六个公认的子领域。

3.1 IAM Core:认证与授权的协议框架

狭义上的 IAM 指企业内员工和系统访问企业资源的认证 + 授权体系。它的核心是几套协议栈:OIDC(OpenID Connect)、OAuth 2.1、SAML 2.0、SCIM 2.0,外加 JWT 和 JWKS。IAM Core 的关键设计点是:

一个典型的 OIDC Authorization Code Flow 请求,IAM Core 需要完整支持:

GET /authorize?
  response_type=code
  &client_id=my-app-prod
  &redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback
  &scope=openid%20profile%20email%20groups
  &state=9Qx2K8pL
  &nonce=4b7Vfz
  &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
  &code_challenge_method=S256
HTTP/1.1
Host: id.example.com

这条请求背后牵涉的 IAM 能力包括:Client 注册与信任、PKCE 支持、会话建立、MFA 策略评估、Consent 管理、Authorization Code 存储。后续 Token Endpoint 的交换又涉及 Client 认证方式、Token 绑定、Refresh Token 轮转策略。任何一个细节做错都会变成安全事故。

一个生产级的 IAM Core 还要处理密钥管理:签名密钥的生成(RSA 2048+ / EC P-256 / EdDSA)、发布(JWKS 端点)、轮转(至少季度级)、撤销。JWKS(JSON Web Key Set)端点的一个典型响应:

{
  "keys": [
    {
      "kid": "2026-Q2-rsa",
      "kty": "RSA",
      "alg": "RS256",
      "use": "sig",
      "n": "xGOr-H0A...",
      "e": "AQAB"
    },
    {
      "kid": "2026-Q1-rsa",
      "kty": "RSA",
      "alg": "RS256",
      "use": "sig",
      "n": "pL12KoR1...",
      "e": "AQAB"
    }
  ]
}

轮转期通常两把密钥并存——旧密钥仍可验证未过期的 Token,新密钥用于签发新 Token。很多工程事故源于密钥轮转没做对:缓存 JWKS 没设合理 TTL、验证端硬编码了密钥、密钥下架过早导致大面积验证失败。这些细节在第 06 篇系统拆。

3.2 CIAM:面向终端客户的身份

CIAM(Customer IAM)是把身份能力做给非员工的”客户”——可能是消费者、合作伙伴、公民(政务场景)、患者(医疗场景)。它和企业 IAM 的核心差异在以下几点:

CIAM 厂商典型产品:Auth0(被 Okta 收购)、Okta Customer Identity、Microsoft Entra External ID、Amazon Cognito、ForgeRock、Transmit Security。开源替代:Keycloak(但原生对海量用户的支持需要调优)、Zitadel、Ory Kratos + Hydra + Keto 组合、Casdoor。CIAM 的实现细节我们会在系列 18 篇单独拆。

3.3 IGA:身份治理与账号管理

IGA(Identity Governance and Administration)是”谁该有什么权限、为什么有、什么时候复核、什么时候回收”的整套治理体系。它解决的是”权限熵增”问题——权限只增不减、越积越多,最终没有人知道谁该有什么、到审计时一片混乱。

IGA 的核心能力包括:

IGA 厂商:SailPoint、Saviynt、Oracle Identity Governance、OneIdentity、Omada。开源侧相对薄弱,常见做法是基于 Keycloak + Airflow + 自建工作流组合,或使用较新的 ConductorOne、Opal 这类云原生平台。IGA 往往是 IAM 项目里最”慢但必须”的一块——它不直接带来用户体验提升,但是合规的硬性要求,且一旦没做、后面补的成本随着权限数量膨胀。

3.4 PAM:特权访问管理

PAM(Privileged Access Management)聚焦那些”权限过大”的账号:root、Domain Admin、数据库 DBA、云账号的 AdministratorAccess、Kubernetes cluster-admin、CI/CD 的 deploy key。这些账号一旦泄露,攻击者可以横向移动到几乎任何地方,因此需要独立的、比常规 IAM 更严格的控制。

PAM 的关键能力:

PAM 厂商:CyberArk(市场领导者)、BeyondTrust、Delinea(Thycotic + Centrify 合并)、HashiCorp Vault(凭据管理方向)、Teleport(基础设施访问方向)、StrongDM、Boundary(HashiCorp)。云厂商也在进入:AWS Systems Manager Session Manager、GCP IAP(Identity-Aware Proxy)、Azure PIM(Privileged Identity Management)。PAM 和 IGA 的边界在国外大厂经常合并,国内则通常由堡垒机产品覆盖一部分。

3.5 SSO:跨应用单点登录

SSO 严格来说不是一个子领域,而是 IAM Core 的一个核心用例。但它在企业采购语境下经常被独立对待——企业说”我要买 SSO”,具体指的是”我要一个 IdP,让员工登录一次就能访问所有 SaaS”。

SSO 的技术栈主要两类:

两者在企业场景长期共存——这是第 02 篇和第 04 篇会深入拆的内容。SSO 还涉及一个常被忽略的维度:登出(Single Logout,SLO)。SAML 有 SLO 流程,OIDC 有 RP-Initiated Logout 和 Front-Channel/Back-Channel Logout。SLO 的生产实现非常脆弱,几乎每个大型企业都有”登出了但某个应用还在线”的长期痛点——会话撤销的内部机制我们会在第 07 篇系统拆。

3.6 目录服务:身份的权威源

目录服务(Directory Services)是最老、最容易被忽视、但必不可少的一层。它回答”谁存在、属于哪个组、属性是什么”。主流实现:

现代 SaaS 通常不直接暴露 LDAP,但会通过 SCIM 与目录同步。一个常见的设计是把 HR 系统(Workday、BambooHR)作为”权威源”(Source of Truth),推送到目录(AD / Entra ID),再通过 SCIM 扇出到所有下游 SaaS。这条数据链的健壮性直接决定了 JML 自动化是否可靠。


3.7 子领域边界的灰色地带

上面六个子领域在教科书里很清晰,在实际项目中边界经常模糊:

选型时要先画一张”我们这家公司各子领域分别由谁负责”的责任分配图(RACI 或类似工具),否则采购完才发现某个能力谁都没覆盖,或者多个产品功能重叠浪费预算。


四、市场格局与主流厂商

把子领域拆清楚之后,再看厂商格局才有意义。同一家厂商在不同子领域的位势差别很大,单纯看 Gartner 的 Magic Quadrant 很容易选错。

4.1 Okta

Okta 是当前 Workforce IAM 的市场领导者,核心优势是 SaaS 应用的深度集成目录(OIN,Okta Integration Network)——官方维护的上游应用连接器超过 7000 个,SCIM / SAML / OIDC 的预配置 Profile 非常完整。2021 年收购 Auth0 之后,CIAM 也补齐了一块。

Okta 的适用场景是:中大型企业、以 SaaS 为主的 IT 架构、Workforce 与 Customer 双轨需求、愿意为”开箱即用”付溢价。它的典型槽点是定价——按月活 MAU 收费,大型部署年费常见数百万美元;自定义空间相对受限;FedRAMP High 等高等级合规覆盖晚于微软。

4.2 Microsoft Entra ID(原 Azure AD)

Entra ID 是 Microsoft 365 的身份底座,任何用 M365 或 Azure 的企业事实上已经有了一个 Entra 租户。这给 Entra 带来了天然的装机量优势。Entra 的核心优势:

槽点是对非微软生态的 SaaS 连接器质量不如 Okta,多租户外部身份(B2B Collaboration、B2C)的配置复杂,且从 Azure AD 改名 Entra ID 带来了一系列文档和术语混乱。Entra 更适合”Microsoft-first”的企业。

4.3 Auth0(Okta 旗下)

Auth0 是开发者体验最好的身份平台之一,特别适合 CIAM 和初创公司快速上线。它的 Rules / Actions / Hooks 扩展机制非常灵活,可以在登录流程各点插入自定义逻辑。Universal Login 的品牌化、社交登录的覆盖、Passwordless 的支持都很成熟。

Auth0 的缺点在企业级特性:大规模租户的延迟、细粒度审计、IGA 能力都较弱。被 Okta 收购后,战略定位慢慢收拢为”Okta 的 CIAM 入口”。价格方面 Enterprise Plan 的起步价相当可观。

4.4 Keycloak

Keycloak 是 Red Hat 主导的开源身份平台,协议覆盖非常完整(OIDC、OAuth 2.0、SAML 2.0、CIBA、Device Flow、Token Exchange),扩展点丰富(SPI 机制可以替换用户存储、认证器、协议 Mapper、事件监听器)。它是目前自建身份体系的首选。

Keycloak 的典型部署:Kubernetes 下三到五个实例,Infinispan 分布式缓存做会话共享,PostgreSQL 做主存储,前置 Nginx / Envoy。一个最小可用的 OIDC Realm 配置片段:

{
  "realm": "customers",
  "enabled": true,
  "sslRequired": "external",
  "accessTokenLifespan": 300,
  "ssoSessionIdleTimeout": 1800,
  "ssoSessionMaxLifespan": 36000,
  "offlineSessionIdleTimeout": 2592000,
  "passwordPolicy": "length(12) and digits(1) and upperCase(1) and specialChars(1) and notUsername and passwordHistory(5)",
  "bruteForceProtected": true,
  "failureFactor": 5,
  "maxDeltaTimeSeconds": 43200,
  "webAuthnPolicyUserVerificationRequirement": "preferred",
  "otpPolicyType": "totp",
  "otpPolicyAlgorithm": "HmacSHA1"
}

Keycloak 的槽点集中在运维复杂度、版本跳跃带来的破坏性变更(特别是从 WildFly 转 Quarkus 的 17.x 到 20.x)、多租户原生支持弱(每个”租户”事实上是一个独立 Realm,跨 Realm 共享资源困难)、对百万级用户的性能调优需要深入知识。Keycloak 的内部结构和工程踩坑是第 16 篇的主题。

4.5 Ping Identity

Ping 的定位是”企业级 federation 专家”,在金融、保险、医疗等复杂 B2B 联邦场景里市场占有率很高。它的 PingFederate 对 SAML、WS-Federation、OIDC、SCIM 的支持非常成熟,策略引擎能表达复杂的多跳 federation 规则。2022 年 ForgeRock 被 Thoma Bravo 收购并与 Ping 合并之后,产品线覆盖进一步扩到 CIAM 和 IGA。

Ping 的适用场景是多 IdP / 多 federation / 监管行业,它的学习曲线和部署成本都不低,对中小企业不是最优解。

4.6 ForgeRock(现 Ping 旗下)

ForgeRock 的亮点是高度可定制——Authentication Trees / Journeys 让身份流程像搭乐高一样组合,企业可以实现非常复杂的风险决策。IG(Identity Gateway)作为反向代理把身份感知带到下游应用。合并后产品整合仍在进行,采购时需要确认具体模块归属。

4.7 开源与云原生新势力

除了 Keycloak,开源 / 云原生圈还有几个值得关注的项目:

这些新势力在协议完整度上已经接近甚至超过老牌厂商,差距主要在企业级合规认证(FedRAMP、IL4、StateRAMP)、生态连接器数量、7×24 支持能力。

4.8 一张横向对比

维度 Okta Entra ID Auth0 Keycloak Ping Zitadel
Workforce IAM 极强 极强 一般
CIAM 极强
IGA 中(P2)
PAM 通过合作 中(PIM)
自托管
多租户原生
开源
适合规模 中大型 中大型 初创-中型 任意 大型 初创-中型

这张表的每一个评级背后都有很长的注脚,不要作为最终选型依据——它只是初筛用的地图。

4.9 定价模型的几种主流形态

IAM 厂商定价模式差别极大,对 TCO 影响远大于 List Price 本身:

采购决策前一定要做 3 年 TCO 测算,覆盖”爆发式增长”和”客户结构变化”两种场景——很多公司是在第二年账单突然翻 3 倍时才意识到定价模型选错了。

4.10 锁定与可迁移性

身份平台一旦上线,迁移成本极高——账号、凭据、Session、连接器、审计证据链都要一起迁。几个减少锁定的工程策略:

这些看似多余的投资在迁移真的发生时能省下 80% 的切换成本。身份平台迁移的详细方法论是第 20 篇的主题。


五、工程师视角:何时该认真做身份体系

作为工程师或架构师,判断”现在是否该投入身份体系”比”该选哪个产品”更重要。太早做,资源分散、没有使用场景、系统长出畸形;太晚做,权限失控、合规失败、迁移成本指数增长。下面是几个实际可操作的触发信号。

5.1 信号一:有大客户要求 SSO / SAML 集成

这是最明确的商业触发器。通常第一个提出 SSO 要求的大客户能带来一张六位数以上的合同。这个信号一旦出现,IAM 项目应该立即进入架构优先级前三。常见陷阱是临时用一个”最小 SAML 适配器”凑合满足这一个客户,三个月后下一个客户要求 SCIM,又做一个一次性实现,半年后成为技术债灾难。

正确姿势是直接引入一个统一 IdP(自建 Keycloak / Zitadel 或采购 Auth0 / WorkOS),把未来所有企业身份能力集中到这一层,业务系统只消费 OIDC / OAuth。

5.2 信号二:工程师超过 50 人,内部工具访问散乱

当公司工程师团队规模跨过大约 50 人,内部开始积累大量自建工具:Admin 后台、监控面板、特征平台、数据查询系统、CI/CD、实验平台。每个工具都有自己的登录和权限,每次入职要开十几个账号、每次离职要关十几个,权限设计一个比一个随意。

这时候做一次”内部统一登录 + 基于组的授权”,投入不大(工程师团队一个 Sprint)但收益巨大。通常做法是把一个轻量 OIDC Provider(Keycloak / Dex / Pomerium)放在前面,所有内部工具改造成 OIDC Client,权限基于目录的组(Group Claim)来判断。

5.3 信号三:进入合规审计流程

一旦进入 SOC 2 Type I / Type II 审计、ISO 27001 认证、HIPAA 合规,IAM 就是审计师重点看的领域。很多公司低估了 Type II 的观察期特性——它不是一次性通过就完了,而是要持续运行六到十二个月,运行期间只要有一次离职未及时清理、或者一次管理员权限变更没有工单记录,就是一条 Exception。

合规信号出现时,IAM 建设需要配合审计时间线,通常提前 3~6 个月启动,确保在观察期开始时所有控制项已经”Operating Effectively”。

5.4 信号四:离职处理变成周期性手工劳动

如果 IT 每周有一次”离职清理日”,有人拿着 Excel 去各个系统点”停用”,说明你已经在支付一个长期的隐性成本:人力成本 + 每次窗口期的安全风险 + 审计时找不齐证据。这个信号出现后,SCIM 自动化的 ROI 通常在一年内回本。

5.5 信号五:权限散落在每个微服务里

微服务架构下一个典型反模式:每个服务自己写一套”谁能做什么”的硬编码逻辑,不同服务的权限模型互相冲突,新需求要改十几个地方。当业务开始问”能不能查一下用户 X 有哪些权限”而没人能在一小时内答上来时,说明授权已经需要下沉为平台能力——参见 授权架构,以及本系列 11~14 篇。

5.6 信号六:B2B SaaS 进入多租户阶段

B2B SaaS 的第一个大客户,往往意味着要引入”租户”概念:租户间数据隔离、租户内角色管理、跨租户的超级管理员、租户可以自带 IdP(Bring Your Own IdP,BYOIDP)。多租户授权是 IAM 最难的一块,用一个现成的成熟方案(WorkOS / Auth0 Organizations / Keycloak Realms)通常比自建便宜一个数量级。

5.7 触发信号汇总清单

勾选到任意三条以上,IAM 项目应当立即进入下一财季的预算讨论。这条检查清单建议每季度走一遍——业务发展很快,信号可能在一个季度内从零变满。

5.8 反向信号:什么时候可以晚点做

对称地,也有一些场景可以推迟身份体系的重度建设:

这种阶段把第三方身份服务(Auth0 Starter、Clerk、Supabase Auth、WorkOS)用好就够了,自建身份平台的投入会稀释真正的业务焦点。身份工程是一个”在合适时机介入”的问题,不是越早越好。


六、常见工程陷阱

这条赛道看起来”买个产品就好”,但实际落地里掉进去的坑非常多。下面挑几个在多个公司反复出现的陷阱。

6.1 把 IdP 当数据中心,业务系统直接查 IdP 的用户表

很多团队刚上 Keycloak 时,业务系统要查”某用户的邮箱和部门”,图省事就直接查 Keycloak 的数据库或 Admin API。这个做法在用户量和 QPS 低的时候没问题,跨过某个门槛后会变成灾难——IdP 不是为高 QPS 属性查询优化的,它的 Admin API 设计面向管理员,不是面向业务查询。正确姿势是:

一个常见的反模式代码:

// 反模式:业务服务通过 Admin API 实时查询 IdP
func GetUserDepartment(userID string) (string, error) {
    resp, err := keycloakAdminClient.GetUser(ctx, realm, userID)
    if err != nil {
        return "", err
    }
    return resp.Attributes["department"][0], nil
}

这段代码每次调用都打到 Keycloak Admin API,QPS 高了立即成为瓶颈且 Admin API 的鉴权开销远高于业务需要。更好的做法是把 department 写进 Token Claim 或通过一次性同步到业务数据库。

6.2 Token 生命周期配置错误

Access Token 生命周期配置是一个微妙的平衡。太长:吊销延迟大、泄露影响久;太短:Refresh Token 流量大、Token Endpoint 成为瓶颈。一个常见错误是生产环境用默认 1 小时,既不够短以满足安全要求,又不够长以减轻 IdP 负担。

合理的配置通常是:

6.3 SCIM 实现做成”同步批处理”

很多团队 SCIM 的下游实现是:每小时跑一次批处理,从 IdP 拉全量用户差分写入本地。这样做的问题是:

正确姿势是 SCIM 作为 webhook / push 模型接收增量事件,批处理只作为对账(reconciliation)补救手段。

6.4 MFA 仅对用户强制、忽视服务账号与 API Key

人的账号加了 MFA,但高权限服务账号用的是长期不轮转的静态 API Key——这是 2023 年多起重大事故(Okta 客户支持系统被入侵、CircleCI 密钥泄露、Microsoft Storm-0558 事件)的共同模式。服务账号和非人类身份(Non-Human Identity,NHI)在现代系统中数量已经远超人的账号,它们的凭据管理和轮转同样关键——见本系列第 10 篇 workload identity。

6.5 审计日志写了但没办法查

合规要求保留审计日志,但实际出事要查日志时才发现:字段不全(缺少 source IP、user agent、请求上下文)、关联困难(不同系统日志格式不一、无法用 user_id 串联)、保留期不够(合规要求 1 年但只留了 30 天)。正确做法是从第一天就定义统一审计事件模型,下沉到 SIEM 或专门的 audit pipeline,并定期做”审计演练”——模拟一次”审计师要求查 user X 过去 90 天的所有访问”的场景,跑一遍看能不能答上来。

6.6 SSO 做了,SLO 没做

用户登录一次、到处能进——体验很好。但当安全事件发生需要强制登出时才发现:业务系统里的 Session 是独立的,IdP 登出不会通知它们。OIDC 的 Back-Channel Logout 或 Front-Channel Logout 必须在业务系统里实现并验证,不能只依赖”Token 过期自然退出”——那对紧急吊销场景太慢。会话吊销与撤销是第 07 篇的主题。

6.7 密码策略和 MFA 的反模式

“复杂密码 + 定期轮换”是历史遗留反模式。NIST SP 800-63B(2017 年起多次修订)已经明确:不要求定期轮换(除非确认泄露)、不要求字符组成规则、长度优先(至少 8 字符、推荐 12+)、对比已知泄露库、首选使用 Passkey / 硬件 MFA 而非短信 OTP。2026 年还在强制 90 天改密码的公司,基本可以视为身份工程落后至少五年。

6.8 把所有用户都塞进一个 Realm / Tenant

多租户 SaaS 常见错误:所有客户公司的用户塞进一个 Keycloak Realm / Auth0 Tenant,用 group 或 custom attribute 区分。这种做法在:

多租户模型的选择(池化 pool / 岛屿 island / 桥接 bridge)直接决定后续架构弹性,这是第 14 篇的专题。

6.9 把合规当一次性考试

SOC 2 Type II 的观察期一般 6~12 个月、ISO 27001 的监督审计每年一次、PCI DSS 每年要重新认证。合规不是考完就完,它要求控制项持续运行。很多公司把合规做成一次性冲刺:审计前两个月突击整改、审计过了马上松懈、下次审计前再冲刺一次。这种模式成本高、风险大,且任何一次审计期内的随机抽样都可能暴露问题。

正确姿势是把合规控制项嵌入日常工作流:离职清理自动化并产出审计证据、权限变更走工单且关联 Jira、访问复核按季度跑一次形成闭环、关键操作的审计日志持续写入 SIEM。这些都是工程化的事情,和开发 CI/CD 是一个性质。

6.10 忽视 “恢复” 场景

身份系统最容易被忽视的是”失败恢复”:IdP 整体挂掉时员工还能登录内部工具吗?破坏管理员账号被锁定时怎么救?签名密钥意外泄露时如何紧急轮转又不造成大面积服务中断?灾备切换时 Session 数据怎么处理?

这些问题没有银弹,但必须在架构设计阶段就有明确答案。常见做法:

“系统能登录”本身是 SLA 的一部分,而且它的权重往往比任何单个业务系统都高。


七、选型建议

把所有子领域、厂商、陷阱都铺开之后,来到最现实的问题:给一个具体公司做 IAM 选型,该怎么办?

7.1 先回答四个决策问题

  1. 用户是谁? Workforce(员工 + 合作伙伴)还是 Customer(消费者)?混合?量级?
  2. 信任边界在哪里? 自托管?SaaS?混合云?是否受主权/合规约束?
  3. 预算和团队能力? 有专职身份工程师吗?团队是否有 OIDC / SAML 深度经验?
  4. 时间约束? 三个月内要通过 SOC 2 审计?还是半年内启动就够?

这四个问题决定了接下来的分支。

实务上可以把这四个问题填进一张简单的评估表,团队每个关键成员独立填一遍、然后一起对齐分歧。分歧本身往往比最终结论更有价值——它会暴露出团队对”我们到底想做什么规模的身份体系”没有共识,而这个共识必须先达成。

7.2 初创公司(<50 人)

典型画像:产品处于 PMF 探索期,没有全职安全团队,第一个企业级客户刚出现。推荐组合:

不要试图在这个阶段自建身份平台。工程资源应投入产品本身。

7.3 成长期 SaaS(50~500 人)

典型画像:多个中大客户已签,SOC 2 Type I 已过,向 Type II 推进,开始多租户架构。推荐组合:

7.4 企业规模(>500 人 / 受监管行业)

典型画像:金融、医疗、政务、或大型跨国 SaaS。选型复杂度指数上升,通常需要专门的身份团队和多年路线图。关键要点:

7.5 自建 vs 采购:一个经验公式

一个粗略的决策公式:

自建倾向分 = (团队身份经验年数 × 0.3)
           + (定制化需求复杂度 1~5 × 0.2)
           - (合规紧迫度 1~5 × 0.3)
           - (厂商生态锁定容忍度 1~5 × 0.2)

分数 >= 1.0 倾向自建
分数 <= 0.0 倾向采购
中间段通常采用"采购核心 + 自建外层"混合

这不是严格的数学模型,只是强迫团队显式评估各维度的一个框架。自建 vs 采购的详细拆解是第 17 篇的专题。

7.6 一条务实的演进路径

对多数公司来说,一条可持续的路径大致是:

  1. 起点:业务系统各自实现登录 + MFA,使用稳妥库(lucia-auth / ory kratos / spring security);
  2. 引入 IdP:有第一个企业客户要求 SSO 时,引入一个 OIDC Provider(Keycloak / Auth0 / WorkOS),内部系统 + 新业务系统都接入;
  3. 整合 CIAM:消费者侧的登录迁移到统一 CIAM,关注 Passkey、社交登录、隐私合规;
  4. 治理收紧:启动 IGA,引入 Access Review、SoD、自动化 JML;
  5. 特权管控:PAM 上线,服务账号与 root 类账号全部进金库;
  6. 身份感知代理:基础设施层引入 ZTNA(Zero Trust Network Access)或 Identity-Aware Proxy,把身份贯穿到每一次资源访问;
  7. 联邦扩张:对大客户开放 BYOIDP,多租户身份模型成熟;
  8. 平台化:身份成为内部平台能力,业务研发无需再理解协议细节。

每一步都对应本系列后续的一到两篇,这整张地图会被一点点填充进来。

7.7 组织与人才的现实约束

选型不仅是技术决策,也是组织决策。有几个常被忽视的现实约束:

这些约束决定了:纯技术最优解在组织层面可能落不了地。选型必须同时考虑组织现实。

7.8 成功落地的几个共性特征

观察过很多公司的身份项目,成功落地的基本都具备这几个共性:

  1. 有一个懂协议又懂业务的”身份架构师”作为核心:这个人既能读 RFC、又能跟销售解释合同条款、又能在跨团队会议里推动决策;
  2. 从第一天就建立审计证据链:所有配置变更、权限变更、离职清理都有工单和日志记录,不是做给审计师看的、是日常工作方式;
  3. 把 IAM 当作产品来做:有 Roadmap、有 KPI(比如”SSO 接入时间 P95 < 1 天”、“离职清理 SLA < 15 分钟”)、有内部”客户”(业务线研发);
  4. 对外暴露清晰的能力契约:业务系统只通过 OIDC / OAuth 消费身份能力,不直接访问 IdP 内部;
  5. 准备好回退路径:任何身份变更都有回滚方案,因为身份系统的故障会瞬间放大为全局事故。

八、从这里出发:系列阅读路径

本系列总共 20 篇,按主题聚成若干组。如果你手头正在解决某个具体问题,可以直接跳过来读:

系列内部互相引用,但每篇都是相对独立的工程深度文章,读者可以按需跳读。


九、参考资料

  1. AICPA.(2022). Trust Services Criteria for Security, Availability, Processing Integrity, Confidentiality, and Privacy. American Institute of Certified Public Accountants.
  2. NIST.(2020). SP 800-63-3 Digital Identity Guidelines. National Institute of Standards and Technology.
  3. NIST.(2020). SP 800-207 Zero Trust Architecture. National Institute of Standards and Technology.
  4. Hardt, D.(2012). RFC 6749: The OAuth 2.0 Authorization Framework. IETF.
  5. Sakimura, N., Bradley, J., Jones, M., de Medeiros, B., Mortimore, C.(2014). OpenID Connect Core 1.0. OpenID Foundation.
  6. Hunt, P., Grizzle, K., Wahlstroem, E., Mortimore, C.(2015). RFC 7644: System for Cross-domain Identity Management: Protocol. IETF.
  7. Cantor, S., et al.(2005). Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0. OASIS.
  8. Gartner.(2024). Magic Quadrant for Access Management. Gartner Inc.
  9. Gartner.(2024). Magic Quadrant for Privileged Access Management. Gartner Inc.
  10. CISA.(2021). Emergency Directive 21-01: Mitigate SolarWinds Orion Code Compromise. Cybersecurity and Infrastructure Security Agency.
  11. Okta.(2023). Security Incident October 2023 Post-Mortem. Okta Inc.
  12. Microsoft.(2023). Storm-0558 Investigation Report. Microsoft Security Response Center.
  13. Keycloak Documentation. https://www.keycloak.org/documentation
  14. Zitadel Documentation. https://zitadel.com/docs
  15. Ory Documentation. https://www.ory.sh/docs
  16. OWASP.(2023). OWASP Application Security Verification Standard 4.0. OWASP Foundation.
  17. Cloud Security Alliance.(2023). Consensus Assessments Initiative Questionnaire v4. CSA.
  18. PCI Security Standards Council.(2022). PCI DSS Requirements and Security Assessment Procedures v4.0.
  19. ENISA.(2023). Guidelines for Electronic Identification, Authentication and Trust Services. European Union Agency for Cybersecurity.
  20. FIDO Alliance.(2024). FIDO2 Web Authentication Specifications. FIDO Alliance.
  21. IETF.(2024). OAuth 2.1 Authorization Framework (Internet Draft). IETF.
  22. SailPoint.(2024). Identity Security Best Practices Guide. SailPoint Technologies.

上一篇系列索引

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

同主题继续阅读

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

2026-04-21 · architecture / security

身份与访问控制工程

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


By .