7.2. 迁移安全 Vault 和属性
7.2.1. 将 Vault 迁移到安全凭证存储 复制链接链接已复制到粘贴板!
用于在 JBoss EAP 7.0 中的传统 安全 子系统中存储纯文本字符串加密的 vault 与 JBoss EAP 7.1 或更高版本中的 Elytron 不兼容,后者使用新设计的凭据存储来存储字符串。凭据将安全加密凭据存储在 JBoss EAP 配置文件外的存储文件中。您可以使用 Elytron 提供的实现,或者您可以使用凭证存储 API 和 SPI 自定义配置。每个 JBoss EAP 服务器都可以包含多个凭据存储。
如果您之前使用 vault 表达式对非敏感数据进行参数化,建议使用 Elytron 安全属性替换数据。
如果您继续使用旧 的安全 子系统,则无需修改或更新密码库数据。但是,如果您计划迁移应用以使用 Elytron,您必须将现有的密码库转换为凭据存储,以便 elytron 子系统可以处理它们。 如需有关凭据存储的更多信息,请参阅如何为 JBoss EAP 配置服务器安全性的凭据存储 。
使用 WildFly Elytron 工具迁移 Vault 数据
JBoss EAP 附带的 WildFly Elytron 工具提供了一个 vault 命令,可帮助您将 vault 内容迁移到凭据存储中。您可以通过运行位于 EAP_HOME/bin 目录中的 elytron-tool 脚本来执行工具。
$ EAP_HOME/bin/elytron-tool.sh vault VAULT_ARGUMENTS
如果您愿意,您可以通过运行 java -jar 命令来执行工具。
$ java -jar EAP_HOME/bin/wildfly-elytron-tool.jar vault VAULT_ARGUMENTS
您可以使用以下命令获取所有可用参数的描述。
$ EAP_HOME/bin/elytron-tool.sh vault --help
- WildFly Elytron Tool 无法处理安全库数据文件的第一个版本。
-
您可以使用屏蔽的格式输入
--keystore-password参数,如下例所示以迁移单个密码库或明文所示。 -
提供的
--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
此命令将安全密码库转换为凭据存储,并打印用于在输出中转换的管理 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"})
将多个安全 Vault 迁移到 Bulk 中的凭证存储
您可以使用 --bulk-convert 参数将多个 vault 转换为凭证存储,并指向批量转换描述符文件。
本节中的示例使用以下批量转换描述符文件:
示例: quay-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
当每次新 密钥存储: 行时,将开始新的转换。除 salt、迭代 和 属性外,所有选项均为必填。
要执行批量转换并生成格式化管理 CLI 命令的输出,请执行以下命令:
$ EAP_HOME/bin/elytron-tool.sh vault --bulk-convert path/to/bulk-vault-conversion-descriptor.txt --summary
此命令会将文件中指定的所有安全密码库转换为凭据存储,并打印用于管理 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"})
--------------------------------------