Flex Gateway新着情報
Governance新着情報
Monitoring API Manager設定プロパティはアプリケーションの別のセキュリティレベルとして暗号化できます。セキュア設定プロパティを作成するには、次のプロセスを確認してください。
セキュア設定プロパティファイルを作成します。
暗号化された値をシーケンス ![value]
間に囲み、ファイルでセキュアプロパティを定義します。
Mule Secure Configuration Properties Extension Module を使用してプロジェクトでファイルを設定します。ファイルでは復号化キーを参照するか、復号化キーが含まれている必要があります。
セキュアなプロパティファイルを作成してそのプロパティを定義する前に、プロセスで使用されるセキュア設定プロパティ属性と暗号化属性を確認してください。
属性名 | 説明 |
---|---|
Name (名前) |
グローバルセキュア設定プロパティの一意の名前。 |
Key (キー) |
プロパティ値をロック解除するために指定する単語またはフレーズ。たとえば、 |
File (ファイル) |
キーが復号化するファイルの場所。 |
Encoding (エンコード) |
キーがロック解除するファイルのエンコード。デフォルト値は UTF-8 です。 |
File Level Encryption (ファイルレベル暗号化) |
ファイル全体を暗号化する場合は |
属性名 | 説明 |
---|---|
Algorithm (アルゴリズム) |
プロパティのコンテンツを暗号化するために使用するアルゴリズムの種別。完全なリストについては、「サポートされているアルゴリズム」を参照してください。 |
Mode (モード) |
Mule Runtime Engine が単一のキーでブロック暗号を繰り返し使用するためのプロシージャーです。完全なリストについては、「サポートされているモード」を参照してください。 |
Use random IVs (ランダム IV の使用) |
ランダム初期化ベクトル (IV) を使用するには、この属性を |
設定プロパティをセキュアにする最初のタスクは、プロパティを定義する YAML 設定ファイル (.yaml
) または Spring 形式のプロパティファイル (.properties
) を作成することです。Mule Secure Configuration Properties Extension Module を使用すれば、YAML またはプロパティファイル種別を設定できます。
セキュア設定プロパティファイルは、Mule プロジェクトの src/main/resources
で、または絶対パスを使用して作成できます。
暗号化された値をシーケンス ![value]
間に囲み、ファイルでセキュアプロパティを定義します。このファイルには、Mule アプリケーション内のどの場所でも使用できる暗号化された値と暗号化されていない値の両方を含むことができます。
オペレーティングシステムへのアクセスをセキュアにしてください。ps コマンドを実行できたり、Java コンソールを表示できたりするユーザーであれば、Mule アプリケーションのメモリに格納されている復号化された値を見ることができてしまうからです。
|
次の file1.yaml
の例には、暗号化された設定プロパティ値と暗号化されていない設定プロパティ値が含まれています。
encrypted: value1: "![nHWo5JhNAYM+TzxqeHdRDXx15Q5R56YVGiQgXCoBCew=]" value2: "![nHWo6XyCADP+TzxqeHdRDXx15Q5R56YVGiQgXCoDFaj=]" testPropertyA: "testValueA" testPropertyB: "testValueB"
暗号化された値は、文字列として読めるように引用符で囲む必要があります。 |
次の file1.properties
の例には、前の例で使用した設定プロパティが含まれていますが、Spring 形式のプロパティファイルを使用しています。
encrypted.value1=![nHWo5JhNAYM+TzxqeHdRDXx15Q5R56YVGiQgXCoBCew=] encrypted.value2=![nHWo6XyCADP+TzxqeHdRDXx15Q5R56YVGiQgXCoDFaj=] testPropertyA=testValueA testPropertyB=testValueB
テキスト文字列、プロパティファイル内の値、またはプロパティファイルのすべてのコンテンツを暗号化または復号化するには、セキュアプロパティツールを使用します。
この記事で説明するすべての機能を使用するには、このツールの使用可能な最新バージョンを使用していることを確認してください。
ダウンロードリンク: セキュアプロパティツール Jar ファイル。
最新リリース: 2022 年 9 月 14 日。
構文は、以前のバージョンから変更されています。問題を回避するため、この記事で指定されている構文と JAR ファイルを使用してください。
受け入れられるすべてのパラメーターの完全なリストおよび定義については、「[パラメーターリファレンス]」を参照してください。
次の構文を使用して、パラメーターとして指定されたテキスト文字列を暗号化または復号化します。
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
<method> \
<operation> \
<algorithm> \
<mode> \
<key> \
<value> \
--use-random-iv [optional]
テキスト文字列を処理するようにツールを設定するには、<method>
を string
に設定します。
目的の操作が実行されるようにその他のパラメーターを指定します。
たとえば、次の操作を実行するとします。
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
string \
encrypt \
Blowfish \
CBC \
mulesoft \
"some value to encrypt"
この場合、ツールで次の内容が返されます。
8q5e1+jy0cND2iV2WPThahmz6XsDwB6Z
文字列の処理に加えて、暗号化ツールでは .yaml
または .properties
ファイルも処理されます。プロパティファイル内の値、またはファイルのすべてのコンテンツを暗号化または復号化できます。
次の構文を使用して、プロパティファイル内のすべての値を暗号化または復号化します。
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
<method> \
<operation> \
<algorithm> \
<mode> \
<key> \
<input file> \
<output file> \
--use-random-iv [optional]
<method>
を file
に設定します。
<input file>
を処理するプロパティファイルに設定します。
<output file>
をプロセス後に生成されるファイルに設定します。
目的の操作が実行されるようにその他のパラメーターを指定します。
たとえば、次のコンテンツが含まれるファイル example_in.yaml
を考えます。
properties:
example1:
value: "Muleman is here"
example2: "Max the mule"
次の操作を実行したとします。
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
file \
encrypt \
Blowfish \
CBC \
mulesoft \
example_in.yaml \
example_out.yaml
この場合、ツールで次のコンテンツが含まれるファイル example_out.yaml
が生成されます。
properties:
example1:
value: "![qCReIPK3jcqD7WR84ISSIQ==]"
example2: "![En8lII21ZHrdIaINw0+mSA==]"
次の構文を使用して、プロパティファイルのすべてのコンテンツを暗号化または復号化します。
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
<method> \
<operation> \
<algorithm> \
<mode> \
<key> \
<input file> \
<output file>
--use-random-iv [optional]
<method>
を file-level
に設定します。
<input file>
を処理するプロパティファイルに設定します。
<output file>
をプロセス後に生成されるファイルに設定します。
目的の操作が実行されるようにその他のパラメーターを指定します。
たとえば、次のコンテンツが含まれるファイル example_in.yaml
を考えます。
properties:
example1:
value: "Muleman is here"
example2: "Max the mule"
次の操作を実行したとします。
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
file-level \
encrypt \
Blowfish \
CBC \
mulesoft \
example_in.yaml \
example_out.yaml
この場合、ツールで次のコンテンツが含まれるファイル example_out.yaml
が生成されます。
k/J1EHyxJagOcyQELoaqIDCzzKc1bLGJiHY2dv6jzuhtVpP1LTlgK3y8EH7OkK5iuuu8kik3P5dCDMixZXwn/EV6xbUwLFKnEb4x1pUX6aopLP/KULm0pQ==
パラメーター | 説明 | ||||||
---|---|---|---|---|---|---|---|
|
暗号化または復号化メソッドを設定します。可能な値:
|
||||||
|
実行する操作を設定します。可能な値:
|
||||||
|
操作中に使用するアルゴリズムを指定します。 |
||||||
|
操作中に使用するモードを指定します。 |
||||||
|
操作中にファイルまたは値をロックまたはロック解除するために使用する単語を指定します。
|
||||||
|
|
||||||
|
操作中にランダム初期化ベクトル (IV) が使用されるかどうかを指定します。 |
||||||
|
|
||||||
|
|
セキュアなプロパティファイルは、 Exchange から入手できる Mule Secure Configuration Properties Extension Module を使用して、スタンドアロン XML と Anypoint Studio のどちらでも設定できます。
XML フローで、モジュール <secure-properties:config>
を使用してファイルを設定します。次の例を確認してください。
デフォルト値を使用したセキュア設定プロパティ
<secure-properties:config key="${runtime.property}"
file="file1.yaml" name="test">
<secure-properties:encrypt/>
</secure-properties:config>
<global-property name="prop" value="my-${secure::property.key1}"/>
デフォルト値を使用する場合でも <secure-properties:encrypt>
タグは必要です。
プレフィックス secure::
はキーの読み込みに必要です。
セキュアなプロパティファイル内の値にアクセスするには、値が暗号化されていない場合でも secure:: プレフィックスを使用する必要があります。これにより、設定全体を変更しなくてもファイル (または環境) を切り替えることができます。
|
デプロイメント時に、復号化キーはシステム環境変数 runtime.property
として Mule Runtime Engine に渡されます。このプロパティは、file1.yaml
ファイルに格納されている値を暗号化するために使用するのとまったく同じキーでなければなりません。
デフォルトの暗号化アルゴリズムとモードが使用されます。
たとえば、property.key1
プロパティの実際の (復号化された) 値が "property"
であれば、prop
プロパティの値は "my-property"
となります。
<secure-properties:encrypt>
タグで追加の属性を設定して、暗号化アルゴリズムや暗号化モードを変更することもできます。
カスタム値を使用したセキュア設定プロパティ
<secure-properties:config key="${runtime.property}"
file="file1.properties" name="test">
<secure-properties:encrypt algorithm="AES" mode="CBC" useRandomIVs="true"/>
</secure-properties:config>
上の例で、<secure-properties:encrypt>
タグでは AES
アルゴリズム、CBC
モード、random IV
を使用しています。
|
Anypoint Studio を使用してアプリケーションを開発している場合、Mule アプリケーションで連動関係として追加したモジュールを使用してセキュア設定プロパティを作成することもできます。
Anypoint Studio で Mule プロジェクトを開きます。
[Mule Palette (Mule パレット)] セクションに移動します。
[Search in Exchange (Exchange 内を検索)] をクリックします。
[Add Module to Project (モジュールをプロジェクトに追加)] ウィンドウの [Type a search term to look up in Exchange (検索語を入力して Exchange 内で検索)] ボックスで、[Mule Secure Configuration Property Extension (Mule セキュア設定プロパティ拡張)] を検索します。
リストでモジュール名を選択します。
[Add (追加)] に続いて [Finish (完了)] をクリックします。
Mule アプリケーションの設定ファイルに移動します。
[Global Elements (グローバル要素)] タブを選択します。
[Create (作成)] をクリックします。
[Secure Properties Config (セキュアプロパティ設定)] を選択します。
[File (ファイル)] の場所、[Key (キー)]、[Algorithm (アルゴリズム)]、[Mode (モード)]、[Use random IV (ランダム IV の使用)]、[File level encryption (ファイルレベル暗号化)]、[Encoding (エンコード)] を使用してグローバル要素を設定します。
[OK] をクリックします。
Secure Configuration Properties Module で設定された |
Studio でアプリケーションを開発している場合、コネクタ接続をテストしてコネクタのセキュア設定プロパティが正しくセットアップされていることを確認できます。
次の例では、そのセキュアプロパティ (ユーザー名、パスワード、トークン) が .yaml
ファイルで暗号化された Salesforce Connector 設定を示しています。
値が暗号化されていない場合でもセキュアなプロパティファイル内のすべての値にアクセスできるように、secure::
プレフィックスがプロパティ名の定義の前に追加されます。
[Test Connection (接続をテスト)] をクリックすれば、接続が期待どおりに機能していることを確認し、セキュアなプロパティが正常に読み取られることを保証できます。
Secure Configuration Properties Module のバージョン 1.1.0 以降では、各プロパティの値だけでなく、ファイル全体を暗号化できるようになっています。XML または Anypoint Studio の両方でファイルを暗号化できます。
XML フローで、fileLevelEncryption
属性を追加して true
に設定します。
<secure-properties:config key="${runtime.property}" file="file1.yaml" fileLevelEncryption="true" name="test">
<secure-properties:encrypt algorithm="AES" mode="CBC"/>
</secure-properties:config>
Studio の [Secure Configuration Properties (セキュア設定プロパティ)] ウィンドウで、[File level encryption (ファイルレベル暗号化)] に [True] を選択します。
セキュア設定プロパティに関する次のユースケースを確認してください。このユースケースでは、フローで暗号化された値と暗号化されていない値を使用する方法、セキュア設定プロパティファイルを動的に設定する方法、複数の設定ファイルを使用する方法を学ぶことができます。
次の例では、フローで暗号化された encrypted.value1
値を使用してペイロードを設定する方法を示しています。実行時には、復号化アルゴリズムによって encrypted.value1
を復号化した値をメモリに格納します。
<flow name="main">
<set-payload value="${secure::encrypted.value1}"/>
</flow>
次の例では、フローで同じセキュアプロパティファイルから暗号化されていない値を使用する方法を示しています。
<flow name="mainNonEncrypted">
<set-payload value="${secure::testPropertyA}"/>
</flow>
一般的な設定のユースケースとして、プロパティ (例: env
) によって使用するファイルを決定するようにファイルを設定することができます。
たとえば、開発フェーズ中に (暗号化できなかった) development-properties
ファイルと (暗号化された値を使用する) 本番ファイルのどちらかを使用するように設定できます。
環境ファイルが定義されたセキュア設定プロパティ
<secure-properties:config key="${runtime.property}" file="${env}-properties.yaml" name="test"/>
この方法を使用すると、env
プロパティの値によって、セキュア設定プロパティを読み込むために使用するファイルが決定されます。その env
プロパティは、global property
、システムプロパティ、または環境プロパティで設定することもできます。
環境ファイルが定義されたセキュアなグローバル設定プロパティ
<global-property name="env" value="dev"/>
<secure-properties:config key="${runtime.property}" file="${env}-properties.yaml" name="test"/>
この方法を使用すると、env
プロパティのデフォルト値は "dev"
になりますが、システムプロパティや環境プロパティで上書きすることはできます。Anypoint Studio では、この方法はメタデータの解決に必須となります。コマンドラインで渡されるプロパティのデフォルト値を定義しないと、それらのプロパティに連動するすべてのメッセージプロセッサーのアプリケーションモデルを作成するときにエラーが発生します。
プロパティを読み込む設定ファイルを複数定義することができます。必要なのは、読み込みたい各ファイルに対して <secure-properties:config />
タグを定義するだけです。各セキュア設定プロパティファイルは、それぞれの暗号化アルゴリズム、暗号化モード、そして暗号化/復号化キーによって独立して設定されます。これらの設定はファイル間で同じになるとは限りません。
次の例は、複数の設定ファイルの使用方法を示しています。
<secure-properties:config key="${runtime.property}" file="file1.yaml" name="test">
<secure-properties:encrypt algorithm="AES" mode="CBC"/>
</secure-properties:config>
<secure-properties:config key="${runtime.property}" file="file2.yaml" name="otherConfig">
<secure-properties:encrypt algorithm="AES" mode="CBC"/>
</secure-properties:config>
AES (デフォルト)
Blowfish
DES
DESede
RC2
RCA
次のアルゴリズムは、サポートが追加される Java Cryptography Extension (JCE) プロバイダーを設定する場合のみ使用できます。
Camellia
CAST5
CAST6
Noekeon
Rijndael
SEED
Serpent
Skipjack
TEA
Twofish
XTEA
RC5
RC6
セキュア設定プロパティファイルについて学び、作成して、しばらく使用したら、トラブルシューティングおよびその最大限の活用法についてさらに疑問が生まれる可能性もあります。一般的な質問と回答をいくつか紹介します。「関連情報」でリンクしているトピックも参照してください。
複数のファイルで同じプロパティを設定したらどうなりますか?
その場合は、最初に定義されたプロパティの値が実際のプロパティ値となります。
以前に定義したセキュアプロパティに依存するセキュアプロパティを定義できますか?
はい。単に同じ構文を使用するだけです: property=My dependent ${secure::dependent.property} value
。
セキュア設定プロパティは他のセキュア設定プロパティには依存できますが、他の Mule 設定プロパティには依存できません。