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
$ EAP_HOME/bin/elytron-tool.sh vault VAULT_ARGUMENTS
您可以使用以下命令获取所有可用参数的描述。
EAP_HOME/bin/elytron-tool.sh vault --help
$ EAP_HOME/bin/elytron-tool.sh vault --help
凭证存储仅用于保护密码。不支持管理模型中使用的 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
$ 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 命令的摘要。
9.2.1.1.2. 将多个安全库迁移到批量的凭证存储 复制链接链接已复制到粘贴板!
您可以使用 --bulk-convert 参数将多个库转换为凭证存储,并指向批量转换描述符文件。
先决条件
本节中的示例使用以下批量转换描述符文件。
示例: bulk-vault-conversion-descriptor.txt File
当遇到每个新 keystore: 行时,会启动新的转换。除 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 命令的摘要。
9.2.2. 将安全属性迁移到 Elytron 复制链接链接已复制到粘贴板!
以下示例假定 group.name 和 encoding.algorithm 安全属性在传统的 security 子系统中被定义为 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 命令中使用 映射 操作:
/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)