第 13 章 使用 vault 获取 secret
要从 vault 获取 secret,而不是直接输入它,在适当的字段中输入以下特殊字符串:
**${vault.**_key_**}**
**${vault.**_key_**}**
其中,密钥是
密码库识别的机密的名称。
为防止 secret 在域间泄漏,Red Hat Single Sign-On 会将域名与从 vault 表达式获取 的密钥
合并。此方法意味着 密钥
不会直接映射到密码库中的条目,而是根据用于组合键和域名的算法创建最终条目名称。
您可以在以下字段从 vault 获取 secret:
- SMTP 密码
- 在 realm SMTP 设置中
- LDAP 绑定凭证
- 在基于 LDAP 的用户联合的 LDAP 设置中。
- OIDC 身份提供程序 secret
- 在身份提供程序 OpenID Connect Config 中的客户端 Secret 中
要使用密码库,请在 Red Hat Single Sign-On 中注册 vault 提供程序。您可以使用 此处描述的 供应商或实施您的供应商。如需更多信息,请参阅 服务器开发人员指南。
Red Hat Single Sign-On 一次允许每个红帽单点登录实例最多一个活跃的 vault 供应商。在集群中的每个实例中一致地配置 vault 提供程序。
13.1. Kubernetes/ OpenShift 文件纯文本 vault 供应商 复制链接链接已复制到粘贴板!
红帽单点登录支持 Kubernetes secret 的 vault 实现。您可以将 Kubernetes secret 挂载为数据卷,它们显示为具有无格式文件结构的目录。Red Hat Single Sign-On 代表每个 secret 作为文件,文件名称为 secret 名称,文件的内容作为 secret 值。
您必须将此目录中的文件命名为以 realm 名称和下划线前缀的 secret 名称。在 secret 名称或域名中的域名中加倍所有下划线。例如,对于名为 sso_realm
的域中的字段,名称 secret-name
的 secret 引用将写为 ${vault.secret-name}
,其文件名查找为 sso_realm_secret-name
。请注意域名中的下划线。
要使用这类 secret 存储,您必须在 standalone.xml 文件中声明 files-plaintext
vault provider,并为包含挂载卷的目录设置其参数。本例演示了 files-plaintext
provider with directory,其中 vault 文件被设置为 standalone/configuration/vault
,相对于 Red Hat Single Sign-On 基础目录:
以下是使用 CLI 命令的对等配置:
/subsystem=keycloak-server/spi=vault/:add /subsystem=keycloak-server/spi=vault/provider=files-plaintext/:add(enabled=true,properties={dir => "${jboss.home.dir}/standalone/configuration/vault"}) /subsystem=keycloak-server/spi=vault:write-attribute(name=default-provider,value=files-plaintext)
/subsystem=keycloak-server/spi=vault/:add
/subsystem=keycloak-server/spi=vault/provider=files-plaintext/:add(enabled=true,properties={dir => "${jboss.home.dir}/standalone/configuration/vault"})
/subsystem=keycloak-server/spi=vault:write-attribute(name=default-provider,value=files-plaintext)