9.2. 迁移安全 Vault 和属性


要使用 Elytron,您必须迁移安全库来保护凭证存储,并将旧的安全属性迁移到 Elytron 安全属性。

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

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

注意

如果您之前使用 vault 表达式对非敏感数据进行参数化,您必须将数据替换为 Elytron 安全属性。有关 Elytron 安全属性的更多信息,请参阅 Elytron 安全属性

有关凭证存储的更多信息,请参阅 JBoss EAP 7.4 如何配置服务器安全性 中的凭据存储。https://access.redhat.com/documentation/zh-cn/red_hat_jboss_enterprise_application_platform/7.4/html-single/how_to_configure_server_security/#credential_store

9.2.1.1. 使用 WildFly Elytron 工具迁移 vault 数据

JBoss EAP 附带的 WildFly Elytron 工具提供了 vault 命令,可帮助您将 vault 内容迁移到凭据存储中。要执行 vault 命令,请在 EAP_HOME/bin 目录中运行 elytron-tool 脚本。

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

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

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

凭证存储仅用于保护密码。不支持管理模型中使用的 vault 表达式功能。如需更多信息,请参阅在 Elytron 中创建一个加密表达式

选择以下迁移选项之一:

注意
  • WildFly Elytron 工具无法处理安全库数据文件的第一个版本。
  • 您可以使用 masked 格式输入 --keystore-password 参数,如下例所示迁移单个 vault 或明文。
  • 提供的 --salt--iteration 参数用于提供解密已屏蔽密码的信息,或在输出中生成屏蔽的密码。如果省略了 --salt--iteration 参数,则使用默认值。
  • --summary 参数生成格式化的管理 CLI 命令,该命令可用于将转换的凭据存储添加到 JBoss EAP 配置中。纯文本密码在概述输出中被屏蔽。
9.2.1.1.1. 将单个安全 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
9.2.1.1.2. 将多个安全库迁移到批量的凭证存储

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

先决条件

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

示例: bulk-vault-conversion-descriptor.txt File

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

当遇到每个新 keystore: 行时,会启动新的转换。除 salt, iteration, 和 properties 外,所有选项均是必需的。

流程

  1. 要执行批量转换并生成格式化管理 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

9.2.2. 将安全属性迁移到 Elytron

以下示例假定 group.nameencoding.algorithm 安全属性在传统的 security 子系统中被定义为 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 命令中使用 映射 操作:

/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

© 2026 Red Hat
返回顶部