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
$ EAP_HOME/bin/elytron-tool.sh vault VAULT_ARGUMENTS
如果您愿意,可以通过运行 java -jar 命令来执行该工具。
java -jar EAP_HOME/bin/wildfly-elytron-tool.jar vault VAULT_ARGUMENTS
$ java -jar EAP_HOME/bin/wildfly-elytron-tool.jar vault VAULT_ARGUMENTS
您可以使用以下命令获取所有可用参数的描述。
EAP_HOME/bin/elytron-tool.sh vault --help
$ EAP_HOME/bin/elytron-tool.sh vault --help
- 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
$ 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
此命令将安全密码库转换为凭据存储,并打印用于在输出中进行转换的管理 CLI 命令摘要。
将多个安全 Vault 迁移至 Bulk 中的凭证存储
您可以使用 --bulk-convert 参数将多个 vault 转换为凭证存储,并指向批量转换描述符文件。
本节中的示例使用以下批量转换描述符文件。
示例: bulk-vault-conversion-descriptor.txt 文件
当遇到每个新 密钥存储: 行时,将开始新的转换。除 salt, iteration, 和 properties 外,所有选项均是必需的。
要执行批量转换并生成格式管理 CLI 命令的输出结果,请执行以下命令:
EAP_HOME/bin/elytron-tool.sh vault --bulk-convert path/to/bulk-vault-conversion-descriptor.txt --summary
$ EAP_HOME/bin/elytron-tool.sh vault --bulk-convert path/to/bulk-vault-conversion-descriptor.txt --summary
此命令将文件中指定的所有安全库转换为凭据存储,并打印用于在输出中转换它们的管理 CLI 命令摘要。
7.2.2. 将安全属性迁移到 Elytron 复制链接链接已复制到粘贴板!
本节中的示例假定 group.name 和 encoding.algorithm 安全属性定义为旧 security-properties 中的 security -properties,如下所示。
示例:在 security 子系统中定义的安全属性
要在 elytron 子系统中定义相同的安全属性,可使用以下管理 CLI 命令设置 elytron 子系统的 security-properties 属性。
/subsystem=elytron:write-attribute(name=security-properties, value={ group.name = "engineering-group", encoding.algorithm = "BASE64" })
/subsystem=elytron:write-attribute(name=security-properties, value={ group.name = "engineering-group", encoding.algorithm = "BASE64" })
这会在服务器配置文件中的 elytron 子系统中配置以下 security-properties。
上一命令中使用的 write-attribute 操作会覆盖现有属性。要在不影响其他安全属性的情况下添加或更改安全属性,请在管理 CLI 命令中使用 map 操作。
/subsystem=elytron:map-put(name=security-properties, key=group.name, value=technical-support)
/subsystem=elytron:map-put(name=security-properties, key=group.name, value=technical-support)
同样,您可以使用 map-remove 操作删除特定的安全属性。
/subsystem=elytron:map-remove(name=security-properties, key=group.name)
/subsystem=elytron:map-remove(name=security-properties, key=group.name)