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>
2.52.3. 使用方法 リンクのコピーリンクがクリップボードにコピーされました!
Camel Quarkus での Jasypt の設定は、設定プロパティー によって決まります。
設定プロパティー quarkus.camel.jasypt.password を使用して、Jasypt 復号化のマスターパスワードを提供することが、最低限必要となります。
以下に説明する 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"
デフォルト (PBEWithMD5AndDES) とは異なる Jasypt アルゴリズムを使用する場合は、暗号化で使用する正しいアルゴリズムを設定するために、-a (アルゴリズム)、-riga (IV ジェネレーターアルゴリズム)、および -rsga (Salt ジェネレーターアルゴリズム) 引数を指定する必要があります。指定しない場合、アプリケーションは設定値を復号化できません。
開発モードで実行している場合は、Dev UI を開き、Camel Jasypt ペインの 'ユーティリティー' リンクをクリックします。次に、'Decrypt' アクションまたは 'Encrypt' アクションのいずれかを選択し、テキストを入力して送信ボタンをクリックします。アクションの結果は、クリップボードにコピーするためのボタンとともに出力されます。
設定プロパティーは、ENC() で囲まれた暗号化された値を使用して application.properties に追加できます。以下はその例です。
my.secret = ENC(BoDSRQfdBME4V/AcugPOkaR+IcyKufGz)
Camel ルートでは、標準のプレースホルダー構文を使用してプロパティー名を参照でき、その値は復号化されます。
public class MySecureRoute extends RouteBuilder {
@Override
public void configure() {
from("timer:tick?period=5s")
.to("{{my.secret}}");
}
}
Camel では、プロパティー値の末尾に .secret を付けることで、セキュリティー上の機密設定をマスクする機能を使用できます。また、camel.main.autoConfigurationLogSummary = false の設定で、起動設定の概要を無効にすることもできます。
2.52.3.1. 暗号化された設定の注入 リンクのコピーリンクがクリップボードにコピーされました!
@ConfigProperty アノテーションを使用して、暗号化された設定を Camel ルートまたは CDI Bean に注入できます。
@ApplicationScoped
public class MySecureRoute extends RouteBuilder {
@ConfigInject("my.secret")
String mySecret;
@Override
public void configure() {
from("timer:tick?period=5s")
.to(mySecret);
}
}
2.52.3.1.1. 代替設定ソースの保護 リンクのコピーリンクがクリップボードにコピーされました!
シークレットの設定を application.properties とは別のファイルに保存したい場合は、quarkus.config.locations 設定オプションを使用して追加の設定ファイルを指定できます。
ネイティブモードでは、追加の設定ファイルリソースパスも quarkus.native.resources.includes に追加する必要があります。
2.52.3.1.2. Jasypt 設定の細かい制御 リンクのコピーリンクがクリップボードにコピーされました!
デフォルト設定よりも細かく Jasypt 設定を制御する必要がある場合は、次のオプションを使用できます。
2.52.3.1.2.1. JasyptConfigurationCustomizer リンクのコピーリンクがクリップボードにコピーされました!
Jasypt EnvironmentStringPBEConfig をカスタマイズするには、JasyptConfigurationCustomizer クラスを実装します。
package org.acme;
import org.apache.camel.quarkus.component.jasypt.JasyptConfigurationCustomizer;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;
import org.jasypt.iv.RandomIvGenerator;
import org.jasypt.salt.RandomSaltGenerator;
public class JasyptConfigurationCustomizer implements JasyptConfigurationCustomizer {
public void customize(EnvironmentStringPBEConfig config) {
// Custom algorithms
config.setAlgorithm("PBEWithHmacSHA256AndAES_256");
config.setSaltGenerator(new RandomSaltGenerator("PKCS11"));
config.setIvGenerator(new RandomIvGenerator("PKCS11"));
// Additional customizations...
}
}
application.properties に、quarkus.camel.jasypt.configuration-customizer-class-name 設定プロパティーを追加します。
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 アノテーションを使用して暗号化された設定プロパティーを注入することはできません。
import org.apache.camel.CamelContext;
import org.apache.camel.component.jasypt.JasyptPropertiesParser;
import org.apache.camel.component.properties.PropertiesComponent;
public class MySecureRoute extends RouteBuilder {
@Override
public void configure() {
JasyptPropertiesParser jasypt = new JasyptPropertiesParser();
jasypt.setPassword("secret");
PropertiesComponent component = (PropertiesComponent) getContext().getPropertiesComponent();
jasypt.setPropertiesComponent(component);
component.setPropertiesParser(jasypt);
from("timer:tick?period=5s")
.to("{{my.secret}}");
}
}
PropertiesComponent で setLocation(…) を呼び出し、classpath: 接頭辞を使用してカスタム設定ファイルの場所を指定する場合、そのファイルを quarkus.native.resources.includes に追加してネイティブモードでのロードを可能にする必要があります。
2.52.4. 追加の Camel Quarkus 設定 リンクのコピーリンクがクリップボードにコピーされました!
| 設定プロパティー | 型 | デフォルト |
|---|---|---|
|
このオプションを false に設定すると、Quarkus SmallRye 設定との Jasypt 統合が無効になります。ただし、JasyptPropertiesParser と PropertiesComponent を手動で設定する '従来' の方法で、Camel を使用して Jasypt を手動で設定することもできます。詳細は、使用方法のセクションを参照してください。 |
|
|
|
復号化に使用するアルゴリズム。 |
|
|
|
Jasypt が設定値を復号化するために使用するマスターパスワード。このオプションは、マスターパスワードの検索動作に影響する接頭辞をサポートします。
|
| |
|
指定されたアルゴリズムを使用して、RandomIvGenerator で Jasypt StandardPBEStringEncryptor を設定します。 |
|
|
|
指定されたアルゴリズムを使用して、RandomSaltGenerator で Jasypt StandardPBEStringEncryptor を設定します。 |
|
|
|
org.apache.camel.quarkus.component.jasypt.JasyptConfigurationCustomizer 実装の完全修飾クラス名。これにより、Jasypt 設定を完全に制御するオプション機能が提供されます。 |
|
ビルド時に修正される設定プロパティー。その他の設定プロパティーはすべて、ランタイム時にオーバーライドが可能です。