You need to enable JavaScript to run this app. Keycloak是否需要数据库?SAML broker场景下无数据库运行咨询
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak是否需要数据库?SAML broker场景下无数据库运行咨询

Keycloak 无数据库运行模式相关问题解答

前置场景说明

  • 已将Keycloak配置为SAML broker,全量认证流程依托对接的外部身份提供商(IdP)完成,所有通过该外部IdP校验的用户都会被正常放行,业务侧仅依赖Keycloak签发的OAuth令牌完成访问鉴权
  • 已完成两种运行方案的验证:基于H2数据库的默认开箱配置、外接MariaDB的独立数据库配置
  • 核心合规与安全约束:外部IdP返回的用户全名、个人ID两类数据属于GDPR管辖的敏感个人信息,不允许存储在DMZ区部署的数据库中;同时出于安全考量,不开放Keycloak到后端数据库的访问通道——本质上当前业务也没有在Keycloak侧存储用户信息的实际需求
  • 预期收益:通过无数据库运行模式简化DMZ区部署架构,所有用户相关数据仅保留在后端系统,不在DMZ侧落地任何持久化存储

核心问题与解答

Keycloak是否必须依赖数据库运行?

Keycloak并非强依赖持久化关系型数据库才能正常运行。当使用场景完全匹配「纯broker转发、无本地用户存储需求、无持久化日志/配置留存需求」时,完全可以移除内置/外置的持久化数据库,基于内存存储模式完成全流程认证鉴权。

无数据库模式下的具体配置方法

  • 启用原生内存存储引擎:Keycloak 20及以上版本内置了内存存储实现,启动时通过参数指定存储模式,即可完全替换原有关系型数据库的存储职责,所有运行相关数据全部保存在进程内存中,不会落地生成磁盘数据库文件
    对应启动命令可使用:kc.sh start --storage=mem
  • 裁剪会触发数据库依赖的功能配置:
    1. 关闭Realm下所有本地用户相关流程:包括账号密码登录、自助注册、用户资料本地编辑等,强制所有登录流程跳转对接外部IdP
    2. 禁用所有需要持久化落库的非必要功能:包括事件审计日志落库、登录历史持久化、客户端密钥轮换落库、用户联邦属性的本地持久化缓存
    3. 将会话与令牌存储策略调整为内存模式,无需配置跨节点会话持久化——单节点运行场景下,所有会话、临时令牌数据天然保存在进程内存中,不存在跨网络持久化写入的逻辑
  • 敏感数据映射规则调整:配置外部IdP的身份声明映射时,直接将IdP返回的用户全名、个人ID映射为令牌的临时出站声明,不要触发Keycloak将声明同步写入本地用户属性库的逻辑,从根源上避免敏感数据在进程外留存

无数据库运行的注意事项

  • 内存模式下所有非内置配置、会话、令牌数据都属于进程生命周期内的临时数据,Keycloak进程重启后所有手动在Web控制台修改的配置会丢失,因此需要将Realm、客户端、外部IdP对接的相关配置提前通过配置文件、启动参数固化,不要在启动后通过控制台临时修改
  • 该模式仅适配单节点部署场景,不支持横向扩缩容的集群运行:多节点环境下没有共享存储通道,会话无法跨节点同步
  • 因为没有磁盘数据库落地环节,所有敏感的用户声明数据只会在内存中临时存在,进程退出后自动清除,完全匹配GDPR下的敏感数据不落地要求

内容的提问来源于stack exchange,提问作者homaxto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 01:06:04