Flex Gateway新着情報
Governance新着情報
Monitoring API Manager次の操作を可能にするプロパティを作成します。
Mule アプリケーションで使用される機密値を暗号化します。
設定 XML で値を設定するときにリテラル文字列ではなく変数を定義して使用します。
開発、Sandbox、本番など、特定のデプロイメント環境で異なるプロパティファイルを選択するための変数を設定します。
プロパティの暗号化や、プロパティを使用するアプリケーションのデプロイを行う詳細な手順を実行する前に、基本を学習します。
MuleSoft では、機密データを暗号化するための実行可能 JAR ファイル (secure-properties-tool.jar
): MuleSoft セキュアプロパティツールが提供されています。
このツールでは次のアルゴリズムを受け入れます。
AES
Blowfish
DES
DESede
RC2
RCA
このツールでは次の暗号化を受け入れます。
CBC (デフォルト)
CFB
ECB
OFB
Mule アプリケーションでプロパティを暗号化するための詳細な手順は、機密値を暗号化するを参照してください。
Mule 設定 XML 内のコネクタとコンポーネントでは、機密データおよび非機密データの変数を受け入れます。変数は、Mule アプリケーションのプロジェクトの src/main/resources
ディレクトリに作成して保存する .yaml
ファイルまたは Spring 形式の .properties
ファイルで定義されます。次に例を示します。
暗号化されていないすべてのキーの値 | 暗号化された uname および pw キーの値 |
---|---|
|
|
暗号化されていないプロパティと暗号化されたプロパティで個別のプロパティファイルを作成できます。たとえば、YAML ファイルでは次のようになります。
暗号化されていない workingDir および host キーの値 |
暗号化された uname および pw キーの値 |
---|---|
dev.properties.yaml のコンテンツ:
|
dev.secure.yaml のコンテンツ:
|
Spring 形式の .properties
ファイルでは、同じ設定は次のようになります。
暗号化されていない workingDir および host キーの値 |
暗号化された uname および pw キーの値 |
---|---|
dev.properties のコンテンツ:
|
dev.secure.properties のコンテンツ:
|
詳細な手順は、機密値を暗号化するを参照してください。
本番環境や開発環境など、さまざまな環境のプロパティ設定を提供するには、環境用の個別のプロパティファイルを作成します。手順は、さまざまな環境の設定の提供を参照してください。
設定 XML でプロパティファイルを参照し、プロパティ値を使用します。
プロパティファイルに、暗号化されたプロパティがない場合、次のように操作します。
${property-key}
の構文を使用してプロパティ値を参照します。
<configuration-properties/>
のグローバル要素を使用してファイルを参照します。
たとえば、プロパティファイル ports.yaml
に port: "8081"
プロパティがあると仮定した場合、<http:listener-config/>
で ${port}
を port
属性の値として使用します。
<configuration-properties file="ports.yaml"/>
<http:listener-config name="HTTP_Listener_config" >
<http:listener-connection host="0.0.0.0" port="${port}" />
</http:listener-config>
<flow name="flow" >
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/trigger"/>
</flow>
プロパティファイルに、暗号化されたプロパティがある場合、次のように操作します。
${secure::property-key}
の構文を使用してプロパティ値を参照します。
<secure-properties:config/>
のグローバル要素を使用してファイルを参照します。
この FTP の例では、<secure-properties:config/>
で dev.secure.yaml
を参照し、secure::
プレフィックスを使用してそのプロパティファイル内のすべてのプロパティを参照しています。
<secure-properties:config name="Secure_Properties_Config"
doc:name="Secure Properties Config" doc:id="acegik"
file="dev.secure.yaml" key="${encryption.key}" >
<secure-properties:encrypt algorithm="Blowfish" />
</secure-properties:config>
<ftp:config name="FTP_Config" doc:name="FTP Config" doc:id="abcdefg" >
<ftp:connection workingDir="${secure::ftp.workingDir}" host="${secure::ftp.host}"
port="21" username="${secure::ftp.uname}" password="${secure::ftp.pw}" />
</ftp:config>
<flow>
...
</flow>
暗号化された値を使用する詳細な手順は、暗号化プロパティの使用を参照してください。
セキュアプロパティツールを使用して、Mule アプリケーションのプロパティファイルに追加する機密データを暗号化します。
dev.secure.yaml
の例:暗号化されていないプロパティを含むプロパティファイルを作成します。
プロジェクトの src/main/resources
ディレクトリを開きます。
次のようにプロパティをキー-値ペアとして設定する dev.secure.yaml
または local.secure.yaml
のような名前の YAML ファイルを作成します。
myprop : "somevalue"
mysensitiveprop : "mysensitivevalue"
詳細は、設定プロパティファイルを参照してください。
機密プロパティを暗号化します。
セキュアプロパティツール (プロパティを暗号化するための実行可能 JAR ファイル) をダウンロードします。
コマンドラインから、保護する値に対してセキュアプロパティツールを実行します。
my-key-value
を使用して "mysensitivevalue"
を暗号化する例:$ java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
string \
encrypt \
Blowfish \
CBC \
my-key-value \
"mysensitivevalue"
/MU0/xB/zoMPjxBA7/9X44Ad2H8O8AY5
暗号化キー値 (パスワード) は安全な場所に保管してください。後でアプリケーションをデプロイするときにキー値が必要になります。 |
プロパティファイルでは、暗号化された各プロパティ値を ![]
括弧内に追加します。
"mysensitivevalue"
を暗号化された値 "![/MU0/xB/zoMPjxBA7/9X44Ad2H8O8AY5]"
に置き換える例:myprop : "somevalue"
mysensitiveprop : "![/MU0/xB/zoMPjxBA7/9X44Ad2H8O8AY5]"
詳細は、設定プロパティファイルを参照してください。
暗号化されたプロパティを Mule アプリケーション内のコンポーネントに追加します。<secure-properties/>
でプロパティファイルを参照し、プロパティを復号化するローカルデプロイメントを実行します。
この手順の各ステップで示されている例は、次の設定例に基づきます。
my-secure-integration.xml
)<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:secure-properties="http://www.mulesoft.org/schema/mule/secure-properties"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/secure-properties http://www.mulesoft.org/schema/mule/secure-properties/current/mule-secure-properties.xsd">
<secure-properties:config name="Secure_Properties_Config" doc:name="Secure Properties Config" doc:id="utlnst" file="${env}.secure.yaml" key="${encryption.key}" >
<secure-properties:encrypt algorithm="Blowfish" />
</secure-properties:config>
<flow name="my-secure-data-flow" >
<scheduler doc:name="Scheduler" doc:id="adstdc" >
<scheduling-strategy>
<fixed-frequency frequency="15" timeUnit="SECONDS" />
</scheduling-strategy>
</scheduler>
<set-payload value="${secure::myprop}" doc:name="Set payload" doc:id="izdtkc" />
<logger doc:name="Logger" doc:id="ljjcpz" level="WARN" message="#[payload]" category="INSECURE PROPERTY EXAMPLE" />
<set-payload value="${secure::mysensitiveprop}" doc:name="Set payload" doc:id="abcdef" />
<logger doc:name="Logger" doc:id="ghijkl" level="WARN" message="#[payload]" category="SECURE PROPERTY EXAMPLE" />
</flow>
</mule>
dev.secure.yaml
)設定 XML では次のプロパティが使用されます。
myprop : "somevalue"
mysensitiveprop : "![/MU0/xB/zoMPjxBA7/9X44Ad2H8O8AY5]"
pom.xml
)POM ファイルには、設定 XML 内のコンポーネントの連動関係が含まれます。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>my-secure-integration</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>mule-application</packaging>
<name>my-secure-integration</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<mule.maven.plugin.version>3.3.5</mule.maven.plugin.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration/>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>anypoint-exchange-v2</id>
<name>Anypoint Exchange</name>
<url>https://maven.anypoint.mulesoft.com/api/v2/maven</url>
<layout>default</layout>
</repository>
<repository>
<id>mulesoft-releases</id>
<name>MuleSoft Releases Repository</name>
<url>https://repository.mulesoft.org/releases/</url>
<layout>default</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>mulesoft-releases</id>
<name>mulesoft release repository</name>
<layout>default</layout>
<url>https://repository.mulesoft.org/releases/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>com.mulesoft.services</groupId>
<artifactId>mule-service-weave-ee</artifactId>
<version>2.4.0-20221212</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.mulesoft.modules</groupId>
<artifactId>mule-secure-configuration-property-module</artifactId>
<version>1.2.5</version>
<classifier>mule-plugin</classifier>
</dependency>
</dependencies>
</project>
暗号化された値を Mule アプリケーションで使用する手順は、次のとおりです。
設定 XML の <flow/>
要素の前にセキュア設定プロパティスニペット (<secure-properties:config/>
) を追加します。これを行うには、Cmd+Space (Mac) または Ctrl+Space (Windows) を押し、要素名の最初の文字を (secu
など) を入力して、スニペットを選択します。
<flow/>
要素の前の未変更のスニペットの XML は次のようになります。
<secure-properties:config name="Secure_Properties_Config"
doc:name="Secure Properties Config" doc:id="ukvpll"
file="${env}.secure.yaml" key="${encryption.key}" >
<secure-properties:encrypt algorithm="Blowfish" />
</secure-properties:config>
<flow name="my-secure-data-flow" >
...
基本 XML 設定では事前設定されない要素の部分がスニペットで事前設定されるため、この要素では必ずスニペットを選択し、基本 XML を選択しないでください。スニペットは、名前は同じですがアイコンが異なります。すべてのスニペットと同様にこのスニペットは 2 次元ボックスアイコンで識別されます。一方、この要素の基本 XML では 3 次元ボックスアイコンが使用されます。
初めて <secure-properties:config/>
スニペットを設定 XML に追加する場合、algorithm
属性にタブで移動して別のアルゴリズムを選択するか、値を手動で変更することができます。
file
、key
、および algorithm
属性の値を使用してスニペットを設定します。次に例を示します。
<secure-properties:config name="Secure_Properties_Config"
doc:name="Secure Properties Config" doc:id="ddzpxf"
file="dev.secure.yaml" key="${encryption.key}" >
<secure-properties:encrypt algorithm="Blowfish" />
</secure-properties:config>
file
: プロパティファイルの名前
ファイル名設定で変数 ${env}
を使用する場合、さまざまな環境の設定の提供で手順を確認してください。
name
: 暗号化キーの任意の名前 (デフォルトでは ${encryption.key}
に設定)
この名前は、セキュアプロパティツールでセキュアプロパティを暗号化するために使用する暗号化値 (パスワード) のキーとして機能します。
algorithm
: セキュアプロパティを暗号化するために使用したアルゴリズム (スニペットではデフォルトで Blowfish に設定)。他のアルゴリズムを使用することができます。
コネクタまたはコンポーネントの XML で、暗号化されたプロパティのキーを XML 属性の値として追加します。次に例を示します。
<set-payload
value="${secure::mysensitiveprop}"
doc:name="Set payload" doc:id="abcdef" />
キーの secure::
プレフィックスに注意してください。
暗号化されたプロパティをアプリケーションで使用している場合、暗号化キーと値の引数を IDE のランタイムコマンドに追加します。この引数を設定に追加すると、アプリケーションで使用するプロパティをランタイムで復号化できるため、プロパティは IDE のローカルランタイムに正常にデプロイされます。
IDE で [Run and Debug (実行およびデバッグ)] を使用したときにデプロイメントが失敗する原因となるエラーをこの設定で回避できます。
Couldn't find configuration property value for key ${encryption.key} from properties provider environment properties provider
暗号化キー名とその値に対するローカルのキー-値ペアを UI を介して指定します。
[Manage (管理)] (歯車アイコン) > [Settings (設定)] に移動して、[Settings (設定)] ページで [Runtime: Default Arguments (ランタイム: デフォルト引数)] を見つけます。
[Runtime: Default Arguments (ランタイム: デフォルト引数)] 項目で、暗号化キーのキー-値ペアを設定の末尾に追加します。次に例を示します。
-M-Dencryption.key=my-key-value
この例では、-M-D
は必須のプレフィックス、encryption.key
は暗号化キーのデフォルト名、my-key-value
はセキュアプロパティツールを介してプロパティを暗号化するために使用する値です。
${env}.secure.yaml
で ${env}
などの変数を使用して <secure-properties:config/>
内のプロパティファイルを識別している場合、${env}
の値を [Runtime: Default Arguments (ランタイム: デフォルト引数)] 項目に追加します。
たとえば、IDE 内の開発環境のプロパティが含まれているファイル dev.secure.yaml
の場合、次のようになります。
-M-Denv=dev
Cmd+shift+p (Mac) または Ctrl+shift+p (Windows) を押して、「View: Show Run and Debug」と入力し、[Run and Debug (実行およびデバッグ)] をクリックして、アプリケーションを IDE 内にローカルにデプロイします。
デプロイメントに成功すると、出力パネルの [OUTPUT (出力)] タブに次のメッセージが表示されます。
********************************************************************** * - - + DOMAIN + - - * - - + STATUS + - - * ********************************************************************** * default * DEPLOYED * **********************************************************************
出力パネルについての詳細は、出力パネルを開くを参照してください。
アプリケーションが正常にデプロイされない場合、コンソールでエラーを確認し、トラブルシューティングします。
アプリケーションを CloudHub にデプロイする場合、機密値を非表示にした CloudHub へのデプロイに進みます。
この手順では、Runtime Manager 内で暗号化キー値を非表示にする方法が示されています。
Anypoint Code Builder で構築したアプリケーションを CloudHub にデプロイする場合、暗号化キーの値を非表示にして、Runtime Manager UI に値が表示されないようにします (CloudHub 上のアプリケーションのプロパティ管理を参照)。
Runtime Manager は CloudHub デプロイメントの管理コンソールとして機能します。暗号化キー値は、暗号化と復号化のパスワードとして機能します。
この手順により、mule-artifact.json 内で暗号化キーの名前は設定されますが、その値は設定されません。セキュリティ上の理由で、デプロイするプロジェクト内でパッケージ化するこのファイルまたは他のファイルで、暗号化キーの値を絶対に設定しないでください。
|
始める前に:
IDE 内で Mule アプリケーションで使用する暗号化されたプロパティを実行してテストします。詳細は、設定プロパティファイルを参照してください。
クラウド IDE を使用している場合、必須権限「Anypoint Code Builder Developer (Anypoint Code Builder 開発者)」があることを確認します。configure-permissions.adocを参照してください。
CloudHub にデプロイする場合に Runtime Manager UI で機密値を非表示にする手順は、次のとおりです。
アプリケーションの mule-artifact.json
ファイルで、設定 XML 内のグローバル <secure-properties:config/>
スニペットで指定した暗号化キーの名前 (デフォルトでは encryption.key
) を指定します。次に例を示します。
{ "minMuleVersion": "4.6.2", "javaSpecificationVersions": [ "11" ], "secureProperties": ["encryption.key", "other.value.to.hide"] }
暗号化キーの名前 (値ではない) はカンマ区切りの secureProperties
配列に挿入されます。この手順の後半で、アプリケーションを CloudHub にデプロイするときに、機密プロパティの暗号化時にセキュア設定ツールを介して指定した暗号化キーの値を指定するように IDE により促されます。
Cmd+shift+p (Mac) または Ctrl+shift+p (Windows) を押し、次のコマンドを入力して、アプリケーションを CloudHub にデプロイします。
MuleSoft: Deploy to CloudHub
または、設定 XML ファイルが開いているときに [Deploy to CloudHub (CloudHub にデプロイ)] (ロケット) アイコンをクリックします。次に例を示します。
プロンプトが表示されたら、セキュアプロパティの暗号化に使用した値と同じ値を入力します。
同じ値を入力しない場合、アプリケーションは CloudHub にアップロードできますが、暗号化キー値が機能しないため、デプロイメントは失敗します。
デプロイメントには Sandbox 環境を選択します。
他の環境はサポートされていません。デザイン環境にデプロイしようとすると、500
エラーコードで失敗します。デプロイメントが進行中の間、IDE によりプロセスの状況が提供されます。デプロイメントが完了すると、Runtime Manager でアプリケーションを開くように促されます。
アプリケーションが CloudHub の「Sandbox」に正常にデプロイされなかった
ことを示すエラーメッセージが表示されたら、Runtime Manager を開いてログを確認し、問題を修正することができます。
[Open in Runtime Manager (Runtime Manager で開く)] をクリックし、Runtime Manager でアプリケーションの管理オプションを開きます。
Runtime Manager でデプロイメントを確認し、アプリケーションの [Settings (設定)] > [Properties (プロパティ)] に移動して暗号化キーが非表示になっていることを確認します。
SANDBOX 環境の [Applications (アプリケーション)] 画面で、アプリケーションの [Status (状況)] 項目を確認します。
状況が [Started (開始済み)] の場合、デプロイメントは成功し、アプリケーションは実行されています。
状況が [Deploy failed (デプロイ失敗)] の場合、アプリケーションの名前をクリックし、[Logs (ログ)] に移動して、失敗の原因を見つけます。
暗号化キー値が間違っている場合、エラー「org.mule.encryption.exception.MuleEncryptionException: Could not encrypt or decrypt the data (org.mule.encryption.exception.MuleEncryptionException: データを暗号化または復号化できませんでした)」
が表示されます。
このエラーを修正する手順は、次のとおりです。
Runtime Manager でアプリケーションの [Settings (設定)] > [Properties (プロパティ)] に移動して、暗号化キーの正しい値を暗号化キーの項目に入力します。
[Apply Changes (変更を適用)] をクリックします。
Runtime Manager により変更が適用され、アプリケーションがデプロイされます。
詳細は、Anypoint Runtime Manager. For information about CloudHub, see CloudHub の概要を参照してください。
多くの場合、設定 XML 内のホスト、ポート、ディレクトリ、およびその他の設定は開発、Sandbox、本番環境など、デプロイメントの対象環境によって異なります。たとえば、通常、デスクトップでは、ホスト名は localhost
、ポートは 8081
に似た番号、ディレクトリは外部ホストへのパスではなくローカルマシンのパスです。
IDE にアプリケーションをデプロイする場合、異なる設定が必要な対象環境ごとに個別のプロパティファイルを作成し、各ファイルで適切な設定を指定します。
通常のファイル名は次のようなパターンに従います。
IDE 内の開発環境: dev.properties.yaml
または dev.secure.yaml
本番準備環境: sandbox.properties.yaml
または sandbox.secure.yaml
本番環境: prod.properties.yaml
または prod.secure.yaml
一貫したファイル名パターンでは、設定 XML 内でファイル名のプレフィックスとして ${env}
変数を使用できます。たとえば、${env}.properties.yaml
や ${env}.secure.yaml
のようになります。このパターンを使用すると、アプリケーションの実行環境の設定が含まれるファイルに切り替えることができます。ファイルには暗号化されたプロパティ値と暗号化されていないプロパティ値を含めることができます。
ファイル名のプレフィックスとして env
変数を設定して使用する手順は、次のとおりです。
一貫したファイル名パターンを使用して、異なる設定が必要な各環境のプロパティファイルを作成します。
プロパティファイルを参照する <secure-properties/>
または別の要素を使用している場合、ファイル名のプレフィックス (${env}
など) を指定します。
次の例の file
属性の値に注意してください。
<secure-properties:config name="Secure_Properties_Config"
doc:name="Secure Properties Config" doc:id="acegik"
file="${env}.secure.yaml" key="${encryption.key}" >
<secure-properties:encrypt algorithm="Blowfish" />
</secure-properties:config>
CloudHub にデプロイする前に、アプリケーションが IDE でローカルにデプロイされることを確認します。
IDE で Cmd+shift+p (Mac) または Ctrl+shift+p (Windows) を押して、次のコマンドを入力します。
Open 'launch.json'
launch.json
で、IDE からアプリケーションを実行するときに使用する env
変数の値を追加します。
この launch.json
例の設定 -M-Denv=dev
に注意してください。
{
"version": "0.2.0",
"configurations": [
{
"type": "mule-xml-debugger",
"request": "launch",
"name": "Debug Mule Application",
"mule.project": "${workspaceFolder}",
"mule.home": "${config:mule.runtime.muleHome}",
"mule.runtime.args": "${config:mule.runtime.defaultArguments} -M-Denv=dev"
}
]
}
-M-Denv=dev
では、Mule Runtime 引数 ("mule.runtime.args"
) として env
変数が dev
に設定されています。
プロパティファイル内で暗号化されたプロパティをアプリケーションで定義する場合、暗号化キーと値を使用して IDE 内で [Runtime: Default Arguments (ランタイム: デフォルト引数)] コマンドを設定し、アプリケーションの実行時に IDE へのローカルデプロイメントでプロパティを復号化できるようにします。
機密プロパティ値を含む launch.json
を設定しないでください。推奨設定についての詳細は、暗号化されたプロパティを IDE でテストするを参照してください。
Cmd+shift+p (Mac) または Ctrl+shift+p (Windows) を押し、次のコマンドを入力して、アプリケーションの deploy.json
ファイルを起動します。
MuleSoft: Deploy to CloudHub
または、設定 XML ファイルが開いているときに [Deploy to CloudHub (CloudHub にデプロイ)] (ロケット) アイコンをクリックします。次に例を示します。
デプロイするように選択する前に deploy.json
を編集してプロパティファイルの正しいプレフィックスを指定します。次に例を示します。
{
"runtime": "4.4.0",
"workerSize": 0.1,
"applicationName": "my-secure-int2-duke",
"workers": 1,
"autoStart": true,
"properties": (1)
{
"env": "sandbox" (2)
}
}
1 | "properties" キーを追加します。 |
2 | プロパティファイルの ${env} プレフィックスの値 (sandbox など) を指定するオブジェクトを追加します。 |
プロンプトが表示されたら、セキュアプロパティの暗号化に使用した値と同じ値を入力します。
デプロイメントには Sandbox 環境を選択します。
デプロイメントが完了したら、[Open in Runtime Manager (Runtime Manager で開く)] をクリックし、Runtime Manager でアプリケーションの管理オプションを開きます。
env
設定などのプロパティや、非表示になっている暗号化キーの値を確認するには、アプリケーションの [Settings (設定)] > [Properties (プロパティ)] をクリックします。
プロパティを作成したり、既存のプロパティの値を変更したりして、たとえば、デプロイメントエラーを修正することができます。