Module Document

基础架构 · 一站式工作台 / SSO 详细设计文档

基础架构 · 一站式工作台 / SSO 详细设计文档

版本: v0.1
日期: 2026-07-06
归属: 基础架构 / 一站式工作台 / SSO

1. 模块定位与目标

以飞书为协同入口,以 SSO/RBAC 为权限事实源,为全员提供统一登录、统一权限、统一工作台入口。所有内部系统账号收口到 IdP,禁止各系统独立维护用户表作为权限事实源。

目标 说明
账号统一 入职/转岗/离职同步到所有业务系统,无僵尸账号。
权限可审计 所有授权有 approver、有效期、审计记录,离职 1 小时内回收。
单点登录 内部系统 90%+ 接入 SSO,用户无需记多套密码。
工作台聚合 系统入口、待办、告警、常用链接统一展示,新人 1 小时内上手。

2. 执行计划

阶段 时间 交付物 Owner 工作量
P0 IdP 选型部署 0–14 天 部署 IdP(Casdoor/Keycloak)、接入飞书组织同步 平台后端 1人×2周
P1 SSO 接入核心系统 15–35 天 GitLab/管理后台/监控平台 SSO 接入,OIDC/SAML 平台后端 1人×3周
P2 RBAC 建立 36–55 天 角色定义、菜单权限、临时授权、离职自动回收 平台后端+IT 2人×3周
P3 工作台 56–80 天 工作台 Web UI,聚合系统入口/待办/告警 前端+后端 2人×3周
P4 全量接入 81–120 天 剩余内部系统全部接入 SSO,清理本地账号 各系统 owner 分批并行
P5 审计完善 121–150 天 权限复核周期、异常登录告警、合规报告 安全+IT 1人×3周

3. 困难点与复杂度分析

困难点 复杂度 应对
飞书组织架构与 RBAC 角色映射 飞书部门/岗位 → 角色 mapping 表由 IT 维护,变更走飞书审批,自动同步。
各系统协议不统一(OIDC/SAML/LDAP) IdP 统一对外提供 OIDC(主)+SAML(兼容老系统),各系统接 IdP 不直连飞书。
临时授权生命周期管理 临时授权设最长 72 小时,到期自动回收,续期需重新审批。
离职账号跨系统及时回收 飞书离职 → 触发 Webhook → IdP 禁用账号 → 所有 SSO 会话失效,目标 1 小时内完成。
工作台待办聚合各系统数据 v0.1 只聚合飞书审批和告警,各业务系统待办通过标准 Webhook 推送,不做双向同步。

4. 核心流程

flowchart LR
  A["员工入职 / 飞书账号激活"] --> B["组织同步 Webhook"]
  B --> C["IdP 创建账号 + 匹配角色"]
  C --> D["下发工作台入口权限"]
  D --> E["员工 SSO 登录各系统"]
  E --> F["登录审计记录"]
  G["员工离职"] --> H["飞书离职事件"]
  H --> I["IdP 立即禁用"]
  I --> J["所有系统会话失效"]
  J --> K["权限回收审计"]

5. 系统架构

flowchart LR
  FEISHU["飞书 IdP / 组织"] --"Webhook 同步"--> SYNC["Identity Sync Service"]
  SYNC --> IDP["IdP (Casdoor/Keycloak)"]
  IDP --"OIDC"--> GITLAB["GitLab"]
  IDP --"OIDC"--> ADMIN["管理后台"]
  IDP --"OIDC"--> MON["监控平台"]
  IDP --"OIDC/SAML"--> OTHER["其他内部系统"]
  IDP --> RBAC["RBAC Service"]
  RBAC --> PORTAL["工作台 Portal"]
  PORTAL --> TODO["待办聚合"]
  PORTAL --> ALERT["告警聚合"]
  IDP --> AUDIT["登录审计"]

6. 关键技术决策

决策点 选择 理由
IdP Casdoor(首选)/ Keycloak(备选) Casdoor 轻量、国内社区活跃、飞书对接有现成方案;Keycloak 功能全但重。
SSO 协议 OIDC (主) + SAML 2.0 (兼容) OIDC 现代标准,兼容 GitLab/Grafana;老系统 SAML 兼容。
飞书同步 飞书开放平台 Webhook + 定期 Diff 事件驱动为主,每日全量对账兜底,防漏同步。
工作台框架 轻量 React SPA + API 聚合层 v0.1 不做低代码门户,只做入口聚合和待办展示。
MFA TOTP (飞书验证码) 对接飞书 MFA,减少用户额外操作。

7. 数据模型

模型 关键字段 说明
IdentityAccount idfeishu_user_idemaildepartmentstatussynced_at 统一账号,以飞书 ID 为主键。
RoleBinding iduser_idrolescopeis_temporaryexpire_atapprover_id 角色授权,含临时授权标记。
WorkspaceApp idnameurlownersso_protocolrisk_levelvisible_roles 工作台入口定义。
LoginEvent iduser_idapp_idipuser_agentresultoccurred_at 登录审计事件。
PermissionAudit iduser_idactionroleoperator_idreasonoccurred_at 权限变更审计。

8. 接口设计

接口 方法 说明
/auth/sso/callback GET OIDC 回调,建立会话。
/accounts GET 账号列表,含状态和角色。
/accounts/{id}/roles GET/POST/DELETE 查询 / 授予 / 回收角色。
/workspace/apps GET 工作台应用入口列表(按当前用户权限过滤)。
/workspace/todos GET 待办聚合(飞书审批 + 告警)。
/audit/logins GET 登录审计查询。

9. 验收点

验收点 量化标准
SSO 覆盖率 核心内部系统(GitLab/管理后台/监控/工作台)100% 接入 SSO。
账号同步时效 飞书入职/离职事件 → IdP 同步完成 ≤ 5 分钟。
离职权限回收 离职账号 1 小时内所有系统会话失效,100% 有回收审计记录。
临时授权到期 临时高权限 100% 有到期时间,到期自动回收,0 例超期未回收。
工作台入口覆盖 研发/运维/运营/售后常用入口 100% 在工作台可见。
异常登录告警 异地 IP/非工作时间登录 30 分钟内推送飞书告警到安全负责人。

10. 风险与应对

风险 应对
IdP 单点故障影响所有系统登录 IdP 高可用部署(2 实例),提供 Break-Glass 紧急账号(离线保存)。
飞书 Webhook 丢失导致账号不同步 每日全量对账,差异自动补偿,异常告警到 IT。
RBAC 权限模型过细导致落地慢 v0.1 先按岗位/系统/菜单三级,数据行级权限后期逐步补齐。
工作台成为大而全门户 v0.1 只做入口聚合和待办,不承载业务事实数据,功能范围由产品 owner 把关。