Skip to content

第22篇: 身份数据持久化

第22篇:【架构篇】身份数据持久化:LDAP、RDBMS与NoSQL在IAM与IDaaS中的选型与设计

身份存储(Identity Store)是任何IAM(身份与访问管理)或IDaaS(身份即服务)系统的核心组件,负责身份数据的持久化。其选型与设计直接影响系统的权威性、性能、可扩展性及集成能力。

本文将深入分析三种主流存储技术——LDAP、关系型数据库(RDBMS)和NoSQL——的技术特性,并重点剖析它们在传统本地部署IAM现代云原生IDaaS这两种不同架构范式下的角色与权衡,最终提出一个适用于现代身份系统的混合持久化模型。

1. 目录服务:LDAP及其角色的演变

LDAP(Lightweight Directory Access Protocol)是一种用于访问和维护分布式目录信息服务的应用层协议。其典型实现是Microsoft Active Directory (AD) 或 OpenLDAP。

1.1 核心设计与技术特性

  • 数据模型: LDAP采用层级化的树状数据模型(Directory Information Tree, DIT)。每个条目(Entry)由一个全局唯一的“可分辨名称”(Distinguished Name, DN)标识。该模型非常适合映射企业组织架构。
  • 性能特征: LDAP协议及其实现被高度优化用于读密集型操作,特别是搜索和绑定(认证)操作,在验证用户凭证或查询组织单元成员等场景下表现出色。
  • 协议标准化: 作为成熟的IETF标准,LDAP在企业IT生态中拥有广泛的兼容性,是许多传统应用和SSO协议(如SAML, Kerberos)的首选集成对象。

1.2 在IAM与IDaaS中的不同角色

  • 在传统IAM系统中: LDAP通常扮演核心且唯一的身份存储角色。它是用户、组和组织层级关系的权威数据源,直接处理认证、授权查询等核心任务。整个IAM系统围绕LDAP进行构建。
  • 在现代IDaaS平台中: LDAP的角色发生了根本性转变。它不再是IDaaS平台自身的核心存储,而是作为一个重要的集成点。其角色通常是:
    • 上游权威源: 通过SCIM协议或自定义同步工具,IDaaS平台从企业的AD/LDAP中同步用户和组数据。
    • 联邦身份提供者: 通过SAML或OIDC协议,IDaaS将认证请求代理到企业内部的ADFS(基于AD),实现认证联邦。

2. 关系型数据库(RDBMS):结构化数据的完整性保障

关系型数据库(如PostgreSQL, MySQL)是构建可靠信息系统的基石,在IAM和IDaaS中都负责维护核心数据的结构和一致性。

2.1 核心设计与技术特性

  • ACID事务: RDBMS提供ACID(原子性、一致性、隔离性、持久性)保证,这对于确保身份数据操作的完整性至关重要,例如,在创建用户时,必须同时成功写入用户表和凭证表。
  • 规范化数据模型: 通过预定义的Schema和范式理论,RDBMS强制数据结构的规范性,并通过外键等约束维护实体间的引用完整性。
  • 强大的查询能力: SQL语言和对JOIN操作的高效支持,使其在处理复杂的授权模型(如RBAC, ABAC)时具有显著优势。

2.2 在IAM与IDaaS中的不同角色

  • 在传统IAM系统中: 当LDAP无法满足复杂的授权逻辑或应用特定的数据存储需求时,RDBMS常被用作辅助存储。例如,存储应用级的角色权限映射、详细的审计日志或自定义的用户属性。
  • 在现代IDaaS平台中: RDBMS扮演着核心事务处理引擎的角色。由于IDaaS需要管理多租户、复杂的策略、OAuth客户端等非层级化的结构化数据,RDBMS成为存储以下信息的理想选择:
    • 核心用户实体与凭证哈希。
    • 租户配置、应用信息、API客户端。
    • 角色、权限以及它们之间的复杂关系映射。
    • 需要强一致性保证的策略规则。

3. NoSQL数据库:应对规模化与敏捷性的解决方案

NoSQL(Not Only SQL)数据库,包括文档型(MongoDB)、键值型(Redis)等,旨在解决传统数据库在可扩展性、性能和灵活性方面的挑战。

3.1 核心设计与技术特性

  • 水平扩展能力: NoSQL数据库在设计之初就将分布式和水平扩展作为核心目标。
  • 灵活的数据模型: 大多采用“Schema-on-read”模式,无需预定义严格的Schema,非常适合存储半结构化数据。
  • BASE一致性模型: 多数NoSQL系统遵循BASE理论(基本可用、软状态、最终一致性),以牺牲部分强一致性来换取更高的可用性和分区容错性。

3.2 在IAM与IDaaS中的不同角色

  • 在传统IAM系统中: NoSQL的应用非常有限。在那个时代,系统规模和数据模型的复杂性通常在RDBMS可控范围内。
  • 在现代IDaaS平台中: NoSQL是不可或缺的特定工作负载优化存储。随着用户量达到千万甚至上亿级别,IDaaS平台必须处理海量数据和高并发请求,NoSQL被用于:
    • 用户会话管理 (内存键值数据库): 存储需要极低延迟读写的会话数据。
    • 用户Profile存储 (文档数据库): 存储结构多变、读多写少的非核心用户属性。
    • 审计日志与事件流 (日志搜索引擎): 存储海量写入的事件日志,并提供强大的检索能力。

4. 架构综合:从单一存储到多语言持久化

IAM和IDaaS在存储架构上的演进,是从单一存储模型向多类型持久化模型的转变。

架构范式A:典型的传统IAM存储模型

一个经典的本地部署IAM系统,其存储架构相对简单,高度集中: * 主存储: LDAP (如Active Directory) 作为用户、组和密码的唯一权威源,处理绝大部分认证和目录查询。 * 辅助存储 : RDBMS 用于存储LDAP模型无法良好支持的数据,如细粒度的应用权限、工作流状态或审计日志。

架构范式B:现代IDaaS的多类型持久化模型

一个高可用、可扩展的IDaaS平台,其存储架构是异构的,根据数据特性选择最适宜的方案: 1. 核心事务与配置存储 (RDBMS - e.g., PostgreSQL): * 用户核心实体与凭证: users, credentials * 授权模型与策略: roles, permissions, policies * 系统配置: tenants, applications, oauth_clients 2. 高性能与非结构化数据存储 (NoSQL): * 用户Profile (文档数据库 - e.g., MongoDB): 存储反范式化的用户资料,用于快速读取。 * 会话数据 (内存键值数据库 - e.g., Redis): 存储 session_id -> user_data 的映射。 3. 可观测性数据存储 (日志搜索引擎 - e.g., Elasticsearch): * 存储海量的审计日志和系统事件,以支持安全审计和故障排查。 4. 上游集成源 (LDAP): * 作为与企业客户内部系统集成的接口,通过同步或联邦方式接入。

总结

身份存储的选型与设计没有通用答案,它深度依赖于系统的部署模式(IAM vs. IDaaS)、规模和功能需求。 * 传统IAM系统通常围绕LDAP构建一个相对集中的存储模型,以满足企业内部组织架构和认证的需求。 * 现代IDaaS平台则必须采用多语言持久化策略,将不同存储技术的优势结合起来,构建一个异构的、职责清晰的存储体系: * 利用RDBMS的ACID事务和关系建模能力,保障核心数据的一致性和完整性。 * 利用NoSQL的水平扩展和灵活模型,满足海量数据和高性能读写需求。 * 将LDAP视为一个标准化的集成协议,而非核心数据库。

这种根据数据特性和系统目标,因地制宜地选择持久化方案的策略,是构建一个兼具可靠性、性能和可扩展性的现代身份与访问管理平台的基础。