搜索

第 13 章 使用 vault 获取 secret

download PDF

红帽构建的 Keycloak 目前提供 Vault SPI 的两个开箱即用实现:基于纯文本文件的 vault 和基于 Java KeyStore 的 vault。

要从密码库获取 secret,而不是直接输入它,请在适当的字段中输入以下特殊设计的字符串:

${vault.key}

其中,键是 密码库识别的 secret 的名称。

为了防止 secret 泄漏跨域,红帽构建的 Keycloak 会将域名与从 vault 表达式获取 的密钥 合并。此方法意味着 密钥 不会直接映射到密码库中的条目,而是根据用于组合键和域名称的算法创建最终条目名称。如果是基于文件的库,此类组合反映了特定文件名,对于基于 Java KeyStore 的库,它是特定的别名名称。

您可以在以下字段从 vault 获取 secret:

SMTP 密码
在 realm SMTP 设置中
LDAP 绑定凭证
在基于 LDAP 的用户联邦的 LDAP 设置中。
OIDC 身份提供程序 secret
在身份提供程序 OpenID Connect Config中的 Client Secret

13.1. 密钥解析器

所有内置供应商都支持配置密钥解析器。密钥解析器实施算法或策略,用于将域名与从 ${vault.key} 表达式获取的键合并到用于从密码库检索 secret 的最终条目名称。Red Hat build of Keycloak 使用 keyResolvers 属性来配置供应商使用的解析器。该值是一个以逗号分隔的解析器名称列表。files-plaintext 供应商配置示例如下:

kc.[sh|bat] start --spi-vault-file-key-resolvers=REALM_UNDERSCORE_KEY,KEY_ONLY

解析器会按照您在配置中声明的顺序运行相同的顺序。对于每个解析器,红帽构建的 Keycloak 使用解析器生成的最后一个条目名称,它将 realm 与 vault 密钥合并,以搜索 vault 的 secret。如果红帽构建的 Keycloak 找到 secret,它会返回 secret。如果没有,Red Hat build of Keycloak 会使用下一个解析器。这个搜索会一直进行,直到红帽构建的 Keycloak 找到非空的 secret 或不使用解析器。如果红帽构建的 Keycloak 找不到 secret,红帽构建的 Keycloak 会返回一个空的 secret。

在上例中,红帽构建的 Keycloak 首先使用 REALM_UNDERSCORE_KEY 解析器。如果红帽构建的 Keycloak 在使用该解析器的 vault 中查找条目,红帽构建的 Keycloak 会返回该条目。如果没有,红帽使用 KEY_ONLY 解析器再次搜索 Keycloak。如果红帽构建的 Keycloak 使用 KEY_ONLY 解析器查找条目,红帽构建的 Keycloak 会返回该条目。如果红帽构建的 Keycloak 使用所有解析器,红帽构建的 Keycloak 会返回一个空的 secret。

当前可用的解析器列表如下:

Name描述

KEY_ONLY

红帽构建的 Keycloak 忽略了域名,并使用 vault 表达式中的密钥。

REALM_UNDERSCORE_KEY

Red Hat build of Keycloak 使用下划线字符组合 realm 和 key。红帽构建的 Keycloak 转义在 realm 或 key 中出现带有另一个下划线字符的下划线。例如,如果域名为 master_realm 且密钥是 smtp_key,则组合键是 master__realm_smtp__key

REALM_FILESEPARATOR_KEY

Red Hat build of Keycloak 使用平台文件分隔符字符组合 realm 和 key。

如果您还没有为内置提供程序配置解析器,红帽构建的 Keycloak 将选择 REALM_UNDERSCORE_KEY

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.