2.52. Jasypt
使用 Jasypt 的安全性
2.52.1. 什么是内部 复制链接链接已复制到粘贴板!
有关用法和配置详情,请参阅上述链接。
2.52.2. Maven 协调 复制链接链接已复制到粘贴板!
在 code.quarkus.redhat.com 上使用此扩展创建新项目
或者将协调添加到现有项目中:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jasypt</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jasypt</artifactId>
</dependency>
2.52.3. 使用方法 复制链接链接已复制到粘贴板!
Camel Quarkus 中的 Jasypt 配置由配置属性 驱动。
最小预期是,您使用配置属性 quarkus.camel.jasypt.password 为 Jasypt 解密提供 master 密码。
您可以通过以下描述的 quarkus.camel.jasypt 选项选择 Jasypt 配置的加密算法和其他方面。
默认情况下,您不需要编写自定义代码来配置 Camel JasyptPropertiesParser 或 PropertiesComponent。这是自动为您完成的。
任何添加到 application.properties 的 Camel 配置属性都可以使用 Jasypt 保护。要加密值,有一个可使用 JBang 运行的实用程序。
jbang org.apache.camel:camel-jasypt:{camel-version} -c encrypt -p secret-password -i "Some secret content"
jbang org.apache.camel:camel-jasypt:{camel-version} -c encrypt -p secret-password -i "Some secret content"
如果您选择将不同的 Jasypt 算法用于默认值(PBEWithMD5AndDES),您必须提供 -a (算法)、-riga (IV generator algorithm)& -rsga (Salt generator 算法)参数来设置加密中使用的正确算法。否则,您的应用程序将无法解密配置值。
或者,在 dev 模式下运行时,打开 Dev UI,再单击 Camel Jasypt 窗格中的"utilities"链接。接下来,选择 'Decrypt' 或 'Encrypt' 操作,输入一些文本并点提交按钮。操作的结果会与一个按钮一起输出,以将其复制到剪贴板中。
配置属性可以添加到 application.properties 中,其加密值包括在 ENC () 内。
my.secret = ENC(BoDSRQfdBME4V/AcugPOkaR+IcyKufGz)
my.secret = ENC(BoDSRQfdBME4V/AcugPOkaR+IcyKufGz)
在 Camel 路由中,您可以使用标准占位符语法引用属性名称,其值将被解密。
您可以通过带有 .secret 的后缀属性值来屏蔽 Camel 中的安全敏感配置。您还可以使用配置 camel.main.autoConfigurationLogSummary = false 来禁用启动配置摘要。
2.52.3.1. 注入加密的配置 复制链接链接已复制到粘贴板!
您可以使用 @ConfigProperty 注释将加密配置注入 Camel 路由或 CDI Bean 中。
2.52.3.1.1. 保护备用配置源 复制链接链接已复制到粘贴板!
如果要在独立于 application.properties 的文件中保留 secret 配置,您可以使用 quarkus.config.locations 配置选项来指定额外的配置文件。
在原生模式中,还必须向 quarkus.native.resources.includes 添加任何其他配置文件资源路径。
2.52.3.1.2. 精细控制 Jasypt 配置 复制链接链接已复制到粘贴板!
如果您需要比默认配置提供的 Jasypt 配置更精细的控制,可以使用以下选项:
2.52.3.1.2.1. JasyptConfigurationCustomizer 复制链接链接已复制到粘贴板!
实施 JasyptConfigurationCustomizer 类,以自定义 Jasypt EnvironmentStringPBEConfig 的任何方面。
在 application.properties 中,添加 quarkus.camel.jasypt.configuration-customizer-class-name 配置属性。
quarkus.camel.jasypt.configuration-customizer-class-name = org.acme.MyJasyptEncryptorCustomizer
quarkus.camel.jasypt.configuration-customizer-class-name = org.acme.MyJasyptEncryptorCustomizer
2.52.3.1.2.2. 禁用自动 Jasypt 配置 复制链接链接已复制到粘贴板!
如果要使用 'classic' Java DSL 方法配置 Camel Jasypt,您可以使用 quarkus.camel.jasypt.enabled = false 禁用自动配置。
这可让您手动配置 Camel JasyptPropertiesParser 和 PropertiesComponent。
在此模式中,您无法使用 @ConfigProperty 注释来注入加密的配置属性。
如果您在 PropertiesComponent 上调用 setLocation (…) 来使用 classpath: 前缀指定自定义配置文件位置,您必须将文件添加到 quarkus.native.resources.includes 中,以便将其加载到原生模式中。
2.52.4. 其他 Camel Quarkus 配置 复制链接链接已复制到粘贴板!
| 配置属性 | 类型 | default |
|---|---|---|
|
将这个选项设置为 false 将禁用 Jasypt 与 Quarkus SmallRye 配置的集成。但是,您可以使用"类"方法手动配置 Jasypt,来手动配置 JasyptPropertiesParser 和 PropertiesComponent。如需更多详细信息,请参阅用法部分。 |
|
|
|
用于解密的算法。 |
|
|
|
Jasypt 用于解密配置值的主密码。这个选项支持影响 master 密码查找的前缀。
|
| |
|
使用给定算法使用 RandomIvGenerator 配置 Jasypt StandardPBEStringEncryptor。 |
|
|
|
使用给定算法使用 RandomSaltGenerator 配置 Jasypt StandardPBEStringEncryptor。 |
|
|
|
org.apache.camel.quarkus.component.jasypt.JasyptConfigurationCustomizer 的完全限定类名称。这提供了可完全控制 Jasypt 配置的可选功能。 |
|
在构建时修复的配置属性。所有其他配置属性可在运行时覆盖。