7.2. 迁移安全 Vault 和属性


7.2.1. 将 Vault 迁移到安全凭证存储

用于将纯文本字符串加密存储在 JBoss EAP 7.0 中的旧 安全 子系统中的密码库与 JBoss EAP 7.1 或更高版本中的 Elytron 不兼容,使用新设计的凭证存储来存储字符串。凭据安全地存储在 JBoss EAP 配置文件之外的存储文件中。您可以使用 Elytron 提供的实现,也可以使用凭据存储 API 和 SPI 来自定义配置。每个 JBoss EAP 服务器都可以包含多个凭据存储。

注意

如果您之前使用 vault 表达式对非敏感数据进行参数化,建议您将数据替换为 Elytron 安全属性

如果继续使用旧的 security 子系统,则应该不需要修改或更新您的 vault 数据。但是,如果您计划迁移应用程序以使用 Elytron,您必须将现有的 vaults 转换为凭证存储,以便可以通过 elytron 子系统来处理它们。有关凭证存储的更多信息,请参阅如何配置 JBoss EAP 服务器安全性中的凭据存储

使用 WildFly Elytron 工具迁移 Vault 数据

JBoss EAP 附带的 WildFly Elytron 工具提供了 vault 命令,可帮助您将 vault 内容迁移到凭据存储中。您可以通过运行 elytron-tool 脚本(位于 EAP_HOME/bin 目录中)来执行该工具。

$ EAP_HOME/bin/elytron-tool.sh vault VAULT_ARGUMENTS
Copy to Clipboard Toggle word wrap

如果您愿意,可以通过运行 java -jar 命令来执行该工具。

$ java -jar EAP_HOME/bin/wildfly-elytron-tool.jar vault VAULT_ARGUMENTS
Copy to Clipboard Toggle word wrap

您可以使用以下命令获取所有可用参数的描述。

$ EAP_HOME/bin/elytron-tool.sh vault --help
Copy to Clipboard Toggle word wrap
注意
  • WildFly Elytron 工具无法处理安全 vault 数据文件的第一个版本。
  • 您可以使用屏蔽的格式输入 --keystore-password 参数,如下例所示,以迁移单个 vault 或使用明文。
  • 提供的 --salt--iteration 参数用于提供解密已屏蔽密码的信息,或在输出中生成屏蔽的密码。如果省略 --salt--iteration 参数,则使用默认值。
  • --summary 参数生成格式化的管理 CLI 命令,该命令可用于将转换的凭据存储添加到 JBoss EAP 配置中。纯文本密码在概述输出中屏蔽。
重要

请注意,凭证存储只能用于保护密码。它们不支持管理模型中任何位置可以使用的 vault 表达式功能。

选择以下迁移选项之一:

将单一安全 Vault 迁移到凭证存储

以下是 命令的一个示例,用于将单一安全密码库转换为凭据存储。

$ EAP_HOME/bin/elytron-tool.sh vault --enc-dir vault_data/ --keystore vault-jceks.keystore --keystore-password MASK-2hKo56F1a3jYGnJwhPmiF5 --iteration 34 --salt 12345678 --alias test --location cs-v1.store --summary
Copy to Clipboard Toggle word wrap

此命令将安全密码库转换为凭据存储,并打印用于在输出中进行转换的管理 CLI 命令摘要。

Vault (enc-dir="vault_data/";keystore="vault-jceks.keystore") converted to credential store "cs-v1.store"
Vault Conversion summary:
--------------------------------------
Vault Conversion Successful
CLI command to add new credential store:
/subsystem=elytron/credential-store=test:add(relative-to=jboss.server.data.dir,create=true,modifiable=true,location="cs-v1.store",implementation-properties={"keyStoreType"=>"JCEKS"},credential-reference={clear-text="MASK-2hKo56F1a3jYGnJwhPmiF5;12345678;34"})
Copy to Clipboard Toggle word wrap
将多个安全 Vault 迁移至 Bulk 中的凭证存储

您可以使用 --bulk-convert 参数将多个 vault 转换为凭证存储,并指向批量转换描述符文件。

本节中的示例使用以下批量转换描述符文件。

示例: bulk-vault-conversion-descriptor.txt 文件

keystore:vault-v1/vault-jceks.keystore
keystore-password:MASK-2hKo56F1a3jYGnJwhPmiF5
enc-dir:vault-v1/vault_data/
salt:12345678
iteration:34
location:v1-cs-1.store
alias:test

keystore:vault-v1/vault-jceks.keystore
keystore-password:secretsecret
enc-dir:vault-v1/vault_data/
location:v1-cs-2.store
alias:test

# different vault vault-v1-more
keystore:vault-v1-more/vault-jceks.keystore
keystore-password:MASK-2hKo56F1a3jYGnJwhPmiF5
enc-dir:vault-v1-more/vault_data/
salt:12345678
iteration:34
location:v1-cs-more.store
alias:test
Copy to Clipboard Toggle word wrap

当遇到每个新 密钥存储: 行时,将开始新的转换。除 salt, iteration, 和 properties 外,所有选项均是必需的。

要执行批量转换并生成格式管理 CLI 命令的输出结果,请执行以下命令:

$ EAP_HOME/bin/elytron-tool.sh vault --bulk-convert path/to/bulk-vault-conversion-descriptor.txt --summary
Copy to Clipboard Toggle word wrap

此命令将文件中指定的所有安全库转换为凭据存储,并打印用于在输出中转换它们的管理 CLI 命令摘要。

Vault (enc-dir="vault-v1/vault_data/";keystore="vault-v1/vault-jceks.keystore") converted to credential store "v1-cs-1.store"
Vault Conversion summary:
--------------------------------------
Vault Conversion Successful
CLI command to add new credential store:
/subsystem=elytron/credential-store=test:add(relative-to=jboss.server.data.dir,create=true,modifiable=true,location="v1-cs-1.store",implementation-properties={"keyStoreType"=>"JCEKS"},credential-reference={clear-text="MASK-2hKo56F1a3jYGnJwhPmiF5;12345678;34"})
--------------------------------------

Vault (enc-dir="vault-v1/vault_data/";keystore="vault-v1/vault-jceks.keystore") converted to credential store "v1-cs-2.store"
Vault Conversion summary:
--------------------------------------
Vault Conversion Successful
CLI command to add new credential store:
/subsystem=elytron/credential-store=test:add(relative-to=jboss.server.data.dir,create=true,modifiable=true,location="v1-cs-2.store",implementation-properties={"keyStoreType"=>"JCEKS"},credential-reference={clear-text="secretsecret"})
--------------------------------------

Vault (enc-dir="vault-v1-more/vault_data/";keystore="vault-v1-more/vault-jceks.keystore") converted to credential store "v1-cs-more.store"
Vault Conversion summary:
--------------------------------------
Vault Conversion Successful
CLI command to add new credential store:
/subsystem=elytron/credential-store=test:add(relative-to=jboss.server.data.dir,create=true,modifiable=true,location="v1-cs-more.store",implementation-properties={"keyStoreType"=>"JCEKS"},credential-reference={clear-text="MASK-2hKo56F1a3jYGnJwhPmiF5;12345678;34"})
--------------------------------------
Copy to Clipboard Toggle word wrap

7.2.2. 将安全属性迁移到 Elytron

本节中的示例假定 group.nameencoding.algorithm 安全属性定义为旧 security-properties 中的 security -properties,如下所示。

示例:在 security 子系统中定义的安全属性

<subsystem xmlns="urn:jboss:domain:security:2.0">
    ...
    <security-properties>
        <property name="group.name" value="engineering-group" />
        <property name="encoding.algorithm" value="BASE64" />
    </security-properties>
</subsystem>
Copy to Clipboard Toggle word wrap

要在 elytron 子系统中定义相同的安全属性,可使用以下管理 CLI 命令设置 elytron 子系统的 security-properties 属性。

/subsystem=elytron:write-attribute(name=security-properties, value={ group.name = "engineering-group", encoding.algorithm = "BASE64" })
Copy to Clipboard Toggle word wrap

这会在服务器配置文件中的 elytron 子系统中配置以下 security-properties

<subsystem xmlns="urn:wildfly:elytron:4.0" final-providers="combined-providers" disallowed-providers="OracleUcrypto">
    <security-properties>
        <security-property name="group.name" value="engineering-group"/>
        <security-property name="encoding.algorithm" value="BASE64"/>
    </security-properties>
    ...
</subsystem>
Copy to Clipboard Toggle word wrap

上一命令中使用的 write-attribute 操作会覆盖现有属性。要在不影响其他安全属性的情况下添加或更改安全属性,请在管理 CLI 命令中使用 map 操作。

/subsystem=elytron:map-put(name=security-properties, key=group.name, value=technical-support)
Copy to Clipboard Toggle word wrap

同样,您可以使用 map-remove 操作删除特定的安全属性。

/subsystem=elytron:map-remove(name=security-properties, key=group.name)
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat