由于Vault不再可用,如何使用elytron或其他解决方案加密/屏蔽WildFly 26+中的敏感系统属性值?

问题描述 投票:0回答:1

我们有多个应用程序在 WildFly 24 和 26 服务器上运行,一些standalone.xml 文件包含数据源中的凭据以及系统属性中的其他敏感值。使用 WildFly 24 的 jbossVault 工具,我们成功地加密这些值并将其存储在Vault中,并且可以使用Vault引用调用它们(数据源密码和系统属性值)。我们需要加密/屏蔽这些值,以便它们不可读。

当尝试对 WildFly 26 使用相同的方法时,我们发现保管库不可用,我们必须使用 Elytron 凭证存储,该存储仅对数据源有用,而不对系统属性有用,如此处所述:

JBoss EAP 7.4.4 之前的版本中,凭证存储不能用作系统属性中的表达式。 建议使用 Vault 存储您可能不希望显示的任何敏感数据/字符串,例如需要在出站 SSL 连接的系统属性中指定的密钥库和信任库密码,或使用任何其他字符串/属性.

我们还能如何屏蔽/加密这些值,或者我们可以将它们放置在哪里,以便 elytron 可以在部署应用程序之前解密它们?

提前致谢

encryption jboss wildfly vault elytron
1个回答
0
投票

随着WildFly 23(在Elytron子系统中)的发布,管理模型中添加了对加密表达式(ES)的支持。

虽然对凭证存储别名的引用只能在管理模型支持的情况下使用(例如数据源实例具有凭证引用属性),但加密表达式可用于加密任意字符串。

为了拥有一个有效的 ES 实例,您必须遵循以下步骤:

  1. 定义密钥凭证存储
  2. 生成密钥
  3. 定义 elytron 表达式加密,添加解析器列表和默认解析器
  4. 禁用历史记录、加密明文、启用历史记录
  5. 使用新的加密表达式

jboss-cli 提示符示例:

/subsystem=elytron/secret-key-credential-store=myPCS:add(relative-to=jboss.server.config.dir, path=myPCS.pcs, create=true, populate=true)

/subsystem=elytron/secret-key-credential-store=myPCS:generate-secret-key(alias=enckey)

/subsystem=elytron/secret-key-credential-store=myPCS:export-secret-key(alias=enckey) # take note!

/subsystem=elytron/expression=encryption:add(default-resolver=one, resolvers=[{name=one, credential-store=myPCS, secret-key=enckey}])

history --disable

/subsystem=elytron/expression=encryption:create-expression(clear-text="myPass")
{
    "outcome" => "success",
    "result" => {"expression" => "${ENC::RUxZAUMQg5j7gYQhWe5W6Zj9/+kotrVJsHNy0DtBKdWkHPUJ7sk=}"}
}

history --enable

/system-property=my.property:add(value="${ENC::RUxZAUMQg5j7gYQhWe5W6Zj9/+kotrVJsHNy0DtBKdWkHPUJ7sk=}")

另请参阅下面的参考,其中系统属性(信任密码)已作为加密表达式传递,

使用凭证存储的加密表达式

© www.soinside.com 2019 - 2024. All rights reserved.