---
schema_version: "1"
id: 4ad04feb1b7e54d81c37ecd9a033c6dd0756a8bc17291adf93878adc20a33c3c
title: セキュア設定プロパティ
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-runtime/4.8/secure-configuration-properties.md
canonical_url: https://docs.mulesoft.com/jp/mule-runtime/4.8/secure-configuration-properties
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 0408b42252093de14c423c9082fb48aca64622d569eb3db4c3f573142fcfdcad
description: MuleSoft Documentation Site
release: "4.8"
latest: false
---
# セキュア設定プロパティ

設定プロパティはアプリケーションの別のセキュリティレベルとして暗号化できます。セキュア設定プロパティを作成するには、次のプロセスを確認してください。

1. セキュア設定プロパティファイルを作成します。
2. 暗号化された値をシーケンス ​`![value]`​ 間に囲み、ファイルでセキュアプロパティを定義します。
3. Mule Secure Configuration Properties Extension Module を使用してプロジェクトでファイルを設定します。ファイルでは復号化キーを参照するか、復号化キーが含まれている必要があります。

## [](#属性)属性

セキュアなプロパティファイルを作成してそのプロパティを定義する前に、プロセスで使用されるセキュア設定プロパティ属性と暗号化属性を確認してください。

<table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 1. セキュア設定プロパティの属性</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">属性名</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Name (名前)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">グローバルセキュア設定プロパティの一意の名前。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Key (キー)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">プロパティ値をロック解除するために指定する単語またはフレーズ。たとえば、​<code>${production.myproperty}</code>​ と指定すると、Mule Runtime Engine は実行時にキーを要求します。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">ファイル</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">キーが復号化するファイルの場所。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Encoding (エンコード)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">キーがロック解除するファイルのエンコード。デフォルト値は UTF-8 です。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">File Level Encryption (ファイルレベル暗号化)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ファイル全体を暗号化する場合は ​<code>true</code>​ に設定します。デフォルト値は ​<code>false</code>​ です。</p></td>
</tr>
</tbody>
</table> <table class="tableblock frame-all grid-all stretch">
<caption class="title">Table 2. セキュア設定プロパティの暗号化属性</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">属性名</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Algorithm (アルゴリズム)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">プロパティのコンテンツを暗号化するために使用するアルゴリズムの種別。完全なリストについては、​<a href="#supported_algorithms">サポートされているアルゴリズム</a>​を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Mode (モード)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Mule Runtime Engine が単一のキーでブロック暗号を繰り返し使用するためのプロシージャーです。完全なリストについては、​<a href="#supported_modes">サポートされているモード</a>​を参照してください。</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Use random IVs (ランダム IV の使用)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ランダム初期化ベクトル (IV) を使用するには、この属性を ​<code>true</code>​ にします。このオプションを ​<code>true</code>​ に設定すると、復号化アルゴリズムは復号化操作中に IV が暗号テキストの先頭に追加されていると見なします。</p></td>
</tr>
</tbody>
</table>

## [](#セキュア設定プロパティファイルを作成する)セキュア設定プロパティファイルを作成する

設定プロパティをセキュアにする最初のタスクは、プロパティを定義する YAML 設定ファイル (​`.yaml`​) または Spring 形式のプロパティファイル (​`.properties`​) を作成することです。Mule Secure Configuration Properties Extension Module を使用すれば、YAML またはプロパティファイル種別を設定できます。  

セキュア設定プロパティファイルは、Mule プロジェクトの ​`src/main/resources`​ で、または絶対パスを使用して作成できます。

## [](#ファイルでセキュア設定プロパティを定義する)ファイルでセキュア設定プロパティを定義する

暗号化された値をシーケンス ​`![value]`​ 間に囲み、ファイルでセキュアプロパティを定義します。このファイルには、Mule アプリケーション内のどの場所でも使用できる暗号化された値と暗号化されていない値の両方を含むことができます。  

<table><tbody><tr><td class="icon"><i class="fa icon-caution" title="Caution"></i></td><td class="content">オペレーティングシステムへのアクセスをセキュアにしてください。​<code>ps</code>​ コマンドを実行できたり、Java コンソールを表示できたりするユーザーであれば、Mule アプリケーションのメモリに格納されている復号化された値を見ることができてしまうからです。</td></tr></tbody></table>

次の ​`file1.yaml`​ の例には、暗号化された設定プロパティ値と暗号化されていない設定プロパティ値が含まれています。

encrypted:
    value1: "!\[nHWo5JhNAYM+TzxqeHdRDXx15Q5R56YVGiQgXCoBCew=\]"
    value2: "!\[nHWo6XyCADP+TzxqeHdRDXx15Q5R56YVGiQgXCoDFaj=\]"

testPropertyA: "testValueA"
testPropertyB: "testValueB"

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">暗号化された値は、文字列として読めるように引用符で囲む必要があります。</td></tr></tbody></table>

次の ​`file1.properties`​ の例には、前の例で使用した設定プロパティが含まれていますが、Spring 形式のプロパティファイルを使用しています。

encrypted.value1=!\[nHWo5JhNAYM+TzxqeHdRDXx15Q5R56YVGiQgXCoBCew=\]
encrypted.value2=!\[nHWo6XyCADP+TzxqeHdRDXx15Q5R56YVGiQgXCoDFaj=\]

testPropertyA=testValueA
testPropertyB=testValueB

## [](#secure_props_tool)セキュアプロパティツールを使用してプロパティを暗号化する

テキスト文字列、プロパティファイル内の値、またはプロパティファイルのすべてのコンテンツを暗号化または復号化するには、セキュアプロパティツールを使用します。

この記事で説明するすべての機能を使用するには、このツールの使用可能な最新バージョンを使用していることを確認してください。  

[セキュアプロパティツール Jar ファイル - Java 17 をサポート](https://docs.mulesoft.com/jp/mule-runtime/4.8/_attachments/secure-properties-tool-j17.jar)​。  
最新リリース: 2024 年 11 月 22 日。

[セキュアプロパティツール Jar ファイル - Java 8 および 11 をサポート](https://docs.mulesoft.com/jp/mule-runtime/4.8/_attachments/secure-properties-tool.jar)​。  
最新リリース: 2022 年 9 月 14 日。

構文は、以前のバージョンから変更されています。問題を回避するため、この記事で指定されている構文と JAR ファイルを使用してください。また、ツールの入力テキストでハッシュ文字 ​`#`​ を使用することはできません。

受け入れられるすべてのパラメーターの完全なリストおよび定義については、​[パラメーターリファレンス](#parameter-reference)​を参照してください。

### [](#テキスト文字列を暗号化する)テキスト文字列を暗号化する

次の構文を使用して、パラメーターとして指定されたテキスト文字列を暗号化または復号化します。

```console.linenums
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
<method> \
<operation> \
<algorithm> \
<mode> \
<key> \
<value> \
--use-random-iv [optional]
```

- テキスト文字列を処理するようにツールを設定するには、​`<method>`​ を ​`string`​ に設定します。
- 目的の操作が実行されるようにその他のパラメーターを指定します。

たとえば、次の操作を実行するとします。

```console.linenums
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
string \
encrypt \
Blowfish \
CBC \
mulesoft \
"some value to encrypt"
```

この場合、ツールで次の内容が返されます。

```console.linenums
8q5e1+jy0cND2iV2WPThahmz6XsDwB6Z
```

### [](#ファイルを暗号化する)ファイルを暗号化する

文字列の処理に加えて、暗号化ツールでは ​`.yaml`​ または ​`.properties`​ ファイルも処理されます。プロパティファイル内の値、またはファイルのすべてのコンテンツを暗号化または復号化できます。

#### [](#ファイル内のプロパティを暗号化する)ファイル内のプロパティを暗号化する

次の構文を使用して、プロパティファイル内のすべての値を暗号化または復号化します。

```console.linenums
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`​ を考えます。

```yaml
properties:
  example1:
    value: "Muleman is here"
  example2: "Max the mule"
```

次の操作を実行したとします。

```console.linenums
java -cp secure-properties-tool.jar com.mulesoft.tools.SecurePropertiesTool \
file \
encrypt \
Blowfish \
CBC \
mulesoft \
example_in.yaml \
example_out.yaml
```

この場合、ツールで次のコンテンツが含まれるファイル ​`example_out.yaml`​ が生成されます。

```yaml
properties:
  example1:
    value: "![qCReIPK3jcqD7WR84ISSIQ==]"
  example2: "![En8lII21ZHrdIaINw0+mSA==]"
```

#### [](#ファイルのすべてのコンテンツを暗号化する)ファイルのすべてのコンテンツを暗号化する

次の構文を使用して、プロパティファイルのすべてのコンテンツを暗号化または復号化します。

```console.linenums
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`​ を考えます。

```yaml
properties:
  example1:
    value: "Muleman is here"
  example2: "Max the mule"
```

次の操作を実行したとします。

```console.linenums
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`​ が生成されます。

```txt
k/J1EHyxJagOcyQELoaqIDCzzKc1bLGJiHY2dv6jzuhtVpP1LTlgK3y8EH7OkK5iuuu8kik3P5dCDMixZXwn/EV6xbUwLFKnEb4x1pUX6aopLP/KULm0pQ==
```

### [](#parameter-reference)パラメーターリファレンス

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 80%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;method&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>暗号化または復号化メソッドを設定します。可能な値:</p>
</div>
<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>string</code>​</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>パラメーター ​<code>&lt;value&gt;</code>​ として指定された 1 つのテキスト文字列を暗号化します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>file</code>​</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>パラメーター ​<code>&lt;input file&gt;</code>​ として指定されたプロパティファイルで設定された各プロパティの値を暗号化します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>file-level</code>​</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>​<code>&lt;input file&gt;</code>​ として指定されたプロパティファイルのすべてのコンテンツを暗号化します。</p>
</div></div></td>
</tr>
</tbody>
</table></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;operation&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>実行する操作を設定します。可能な値:</p>
</div>
<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>encrypt</code>​</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>暗号化する操作を設定します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>decrypt</code>​</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>復号化する操作を設定します。</p>
</div></div></td>
</tr>
</tbody>
</table></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;algorithm&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>操作中に使用するアルゴリズムを指定します。<br>
完全なリストについては、​<a href="#supported_algorithms">サポートされているアルゴリズム</a>​を参照してください。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;mode&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>操作中に使用するモードを指定します。<br>
完全なリストについては、​<a href="#supported_modes">サポートされているモード</a>​を参照してください。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;key&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>操作中にファイルまたは値をロックまたはロック解除するために使用する単語を指定します。<br></p>
</div>
<div class="admonitionblock note">
<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="ulist">
<ul>
<li>
<p>キーで ​<code>$</code>​ 文字を使用する場合、その前に ​<code>\</code>​ を置く必要があります。
たとえば、キー ​<code>myKey#$%123</code>​ を使用するには、​<code>&lt;key&gt;</code>​ パラメーターを ​<code>myKey#\$%123</code>​ として指定する必要があります。<br></p>
</li>
<li>
<p>Java Cryptography Extension (JCE) バージョン 1.8.0_161​ 以降、AES キーの長さは 32 文字 (128 ビット) にする必要があります。</p>
</li>
</ul>
</div>
</td>
</tr>
</tbody></table>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;value&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>string</code>​ 操作中に暗号化または復号化される文字列値を指定します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;use random IV&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>操作中にランダム初期化ベクトル (IV) が使用されるかどうかを指定します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;input file&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>file</code>​ または ​<code>file-level</code>​ 操作中に暗号化または復号化されるプロパティファイルを指定します。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>&lt;output file&gt;</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>file</code>​ または ​<code>file-level</code>​ 操作後に作成される暗号化または復号化されたプロパティファイルを指定します。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#プロジェクトでファイルを設定する)プロジェクトでファイルを設定する

セキュアなプロパティファイルは、 [Exchange](https://anypoint.mulesoft.com/exchange/com.mulesoft.modules/mule-secure-configuration-property-module/)​ から入手できる Mule Secure Configuration Properties Extension Module を使用して、スタンドアロン XML と Anypoint Studio のどちらでも設定できます。

### [](#xml-で-extension-module-を使用してファイルを設定する)XML で Extension Module を使用してファイルを設定する

XML フローで、モジュール ​`<secure-properties:config>`​ を使用してファイルを設定します。次の例を確認してください。  

**デフォルト値を使用したセキュア設定プロパティ**

```xml
<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::`​ はキーの読み込みに必要です。
    
    <table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">セキュアなプロパティファイル内の値にアクセスするには、値が暗号化されていない場合でも ​<code>secure::</code>​ プレフィックスを使用する必要があります。これにより、設定全体を変更しなくてもファイル (または環境) を切り替えることができます。</td></tr></tbody></table>
- デプロイメント時に、復号化キーはシステム環境変数 ​`runtime.property`​ として Mule Runtime Engine に渡されます。このプロパティは、​`file1.yaml`​ ファイルに格納されている値を暗号化するために使用するのとまったく同じキーでなければなりません。
- デフォルトの暗号化アルゴリズムとモードが使用されます。
- たとえば、​`property.key1`​ プロパティの実際の (復号化された) 値が ​`"property"`​ であれば、​`prop`​ プロパティの値は ​`"my-property"`​ となります。

`<secure-properties:encrypt>`​ タグで追加の属性を設定して、暗号化アルゴリズムや暗号化モードを変更することもできます。

**カスタム値を使用したセキュア設定プロパティ**

```xml
<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`​ を使用しています。

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p><code>&lt;secure-properties:config&gt;</code>​ で設定された ​<code>key</code>​、​<code>algorithm</code>​、​<code>mode</code>​、​<code>useRandomIVs</code>​ の値は、プロパティファイルを暗号化するために使用した値と一致する必要があります。</p>
</div>
</td>
</tr>
</tbody></table>

### [](#studio-で-extension-module-を使用してファイルを設定する)Studio で Extension Module を使用してファイルを設定する

Anypoint Studio を使用してアプリケーションを開発している場合、Mule アプリケーションで連動関係として追加したモジュールを使用してセキュア設定プロパティを作成することもできます。

#### [](#extension-module-をインストールする)Extension Module をインストールする

1. Anypoint Studio で Mule プロジェクトを開きます。
2. \[Mule Palette (Mule パレット)\] セクションに移動します。
3. **\[Search in Exchange (Exchange 内を検索)\]**​ をクリックします。
4. \[Add Module to Project (モジュールをプロジェクトに追加)\] ウィンドウの ​**\[Type a search term to look up in Exchange (検索語を入力して Exchange 内で検索)\]**​ ボックスで、​**\[Mule Secure Configuration Property Extension (Mule セキュア設定プロパティ拡張)\]**​ を検索します。
5. リストでモジュール名を選択します。
6. **\[Add (追加)\]**​ に続いて ​**\[Finish (完了)\]**​ をクリックします。

#### [](#セキュア設定プロパティをアプリケーションに追加して設定する)セキュア設定プロパティをアプリケーションに追加して設定する

1. Mule アプリケーションの設定ファイルに移動します。
2. **\[Global Elements (グローバル要素)\]**​ タブを選択します。
3. **\[Create (作成)\]**​ をクリックします。
4. **\[Secure Properties Config (セキュアプロパティ設定)\]**​ を選択します。
5. **\[File (ファイル)\]**​ の場所、​**\[Key (キー)\]**​、​**\[Algorithm (アルゴリズム)\]**​、​**\[Mode (モード)\]**​、​**\[Use random IV (ランダム IV の使用)\]**​、​**\[File level encryption (ファイルレベル暗号化)\]**​、​**\[Encoding (エンコード)\]**​ を使用してグローバル要素を設定します。
6. **\[OK\]**​ をクリックします。

![セキュアプロパティの設定パネル](/mulesoft/current/ja-jp/mule-runtime/4.8/_images/mruntime-secure-config-properties-studio.png)

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>Secure Configuration Properties Module で設定された ​<code>key</code>​、​<code>algorithm</code>​、​<code>mode</code>​、​<code>use random IV</code>​ の値は、プロパティファイルを暗号化するために使用した値と一致する必要があります。</p>
</div>
</td>
</tr>
</tbody></table>

#### [](#開発時にセキュア設定プロパティを確認する)開発時にセキュア設定プロパティを確認する

Studio でアプリケーションを開発している場合、コネクタ接続をテストしてコネクタのセキュア設定プロパティが正しくセットアップされていることを確認できます。 次の例では、そのセキュアプロパティ (ユーザー名、パスワード、トークン) が ​`.yaml`​ ファイルで暗号化された Salesforce Connector 設定を示しています。

![Salesforce 接続の設定パネル](/mulesoft/current/ja-jp/mule-runtime/4.8/_images/mruntime-secure-config-properties-studio2.png)

値が暗号化されていない場合でもセキュアなプロパティファイル内のすべての値にアクセスできるように、​`secure::`​ プレフィックスがプロパティ名の定義の前に追加されます。  

**\[Test Connection (接続をテスト)\]**​ をクリックすれば、接続が期待どおりに機能していることを確認し、セキュアなプロパティが正常に読み取られることを保証できます。

## [](#ファイルレベル暗号化)ファイルレベル暗号化

セキュア設定プロパティモジュールのバージョン 1.1.0 以降では、各プロパティの値だけでなく、ファイル全体を暗号化できるようになっています。XML または Anypoint Studio の両方でファイルを暗号化できます。

XML フローで、​`fileLevelEncryption`​ 属性を追加して ​`true`​ に設定します。

```xml
<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\]**​ を選択します。

![AES 暗号化と CBC モード設定が表示されているセキュアプロパティ設定](/mulesoft/current/ja-jp/mule-runtime/4.8/_images/mruntime-secure-config-properties-studio3.png)

## [](#セキュア設定プロパティのユースケース)セキュア設定プロパティのユースケース

セキュア設定プロパティに関する次のユースケースを確認してください。このユースケースでは、フローで暗号化された値と暗号化されていない値を使用する方法、セキュア設定プロパティファイルを動的に設定する方法、複数の設定ファイルを使用する方法を学ぶことができます。

### [](#暗号化された値と暗号化されていない値)暗号化された値と暗号化されていない値

次の例では、フローで暗号化された ​`encrypted.value1`​ 値を使用してペイロードを設定する方法を示しています。実行時には、復号化アルゴリズムによって ​`encrypted.value1`​ を復号化した値をメモリに格納します。

```xml
<flow name="main">
    <set-payload value="${secure::encrypted.value1}"/>
</flow>
```

次の例では、フローで同じセキュアプロパティファイルから暗号化されていない値を使用する方法を示しています。

```xml
<flow name="mainNonEncrypted">
    <set-payload value="${secure::testPropertyA}"/>
</flow>
```

### [](#セキュア設定プロパティファイルを動的に設定する)セキュア設定プロパティファイルを動的に設定する

一般的な設定のユースケースとして、プロパティ (例: `env`​) によって使用するファイルを決定するようにファイルを設定することができます。  
たとえば、開発フェーズ中に (暗号化できなかった) ​`development-properties`​ ファイルと (暗号化された値を使用する) 本番ファイルのどちらかを使用するように設定できます。

**環境ファイルが定義されたセキュア設定プロパティ**

```xml
<secure-properties:config key="${runtime.property}" file="${env}-properties.yaml" name="test"/>
```

この方法を使用すると、​`env`​ プロパティの値によって、セキュア設定プロパティを読み込むために使用するファイルが決定されます。その ​`env`​ プロパティは、​`global property`​、システムプロパティ、または環境プロパティで設定することもできます。

**環境ファイルが定義されたセキュアなグローバル設定プロパティ**

```xml
<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 />`​ タグを定義するだけです。各セキュア設定プロパティファイルは、それぞれの暗号化アルゴリズム、暗号化モード、そして暗号化/復号化キーによって独立して設定されます。これらの設定はファイル間で同じになるとは限りません。  
次の例は、複数の設定ファイルの使用方法を示しています。

```xml
<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>
```

## [](#サポートされる設定ファイル種別)サポートされる設定ファイル種別

- Spring 形式のプロパティ: `.properties`
- YAML: `.yaml`

## [](#supported_crypto)サポートされているアルゴリズムとモード

### [](#supported_algorithms)サポートされているアルゴリズム

- AES (デフォルト)
- Blowfish
- DES
- DESede
- RC2
- RCA

次のアルゴリズムは、サポートが追加される [Java Cryptography Extension (JCE) プロバイダー](https://docs.oracle.com/cd/E19830-01/819-4712/ablsc/index.html)​を設定する場合のみ使用できます。

- Camellia
- CAST5
- CAST6
- Noekeon
- Rijndael
- SEED
- Serpent
- Skipjack
- TEA
- Twofish
- XTEA
- RC5
- RC6

### [](#supported_modes)サポートされているモード

- CBC (デフォルト)
- CFB
- ECB
- OFB

## [](#よくある質問と回答)よくある質問と回答

セキュア設定プロパティファイルについて学び、作成して、しばらく使用したら、トラブルシューティングおよびその最大限の活用法についてさらに疑問が生まれる可能性もあります。一般的な質問と回答をいくつか紹介します。「関連情報」でリンクしているトピックも参照してください。  

**複数のファイルで同じプロパティを設定したらどうなりますか?**

その場合は、最初に定義されたプロパティの値が実際のプロパティ値となります。

**以前に定義したセキュアプロパティに依存するセキュアプロパティを定義できますか?**

はい。単に同じ構文を使用するだけです: `property=My dependent ${secure::dependent.property} value`​。

セキュア設定プロパティは他のセキュア設定プロパティには依存できますが、他の Mule 設定プロパティには依存できません。

## [](#関連情報)関連情報

- [プロパティの設定](https://docs.mulesoft.com/jp/mule-runtime/4.8/configuring-properties)
- [Define and Secure Properties for a Mule Application in Anypoint Code Builder (Anypoint Code Builder での Mule アプリケーションのプロパティの定義と保護)](https://docs.mulesoft.com/jp/anypoint-code-builder/int-create-secure-configs)