---
schema_version: "1"
id: 46703870344912cb011daa615b56b49124ee33091331a77dceaf9c85e2f94b9e
title: Mule 4 のゲートウェイ起動暗号化
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mule-gateway/mule-gateway-encryption-mule4.md
canonical_url: https://docs.mulesoft.com/jp/mule-gateway/mule-gateway-encryption-mule4
source_site: docs.mulesoft.com
content_type: documentation
content_hash: ade9560bdf7bc410b2fd92f977da821a4ea1cdd11928f334e61afb7dc03b998d
description: MuleSoft Documentation Site
latest: true
---
# Mule 4 のゲートウェイ起動暗号化

Mule ゲートウェイ起動暗号化を使用すると、ポリシー、コントラクトや、Mule アプリケーションと Anypoint Platform 間の接続の設定に必要なログイン情報など、Mule Runtime Engine (Mule) により保存される機密情報を暗号化できます。

この機能は、Mule 4.2.0 以降でサポートされています。​[暗号化をサポートするポリシー](#policies-that-support-encryption)​ (基本認証 1.2.0 など) が 4.2.0 より前のバージョンの Mule で実行中の API に適用される場合、ポリシー設定は暗号化されません。

## [](#エージェントを使用した-anypoint-platform-ログイン情報の暗号化)エージェントを使用した Anypoint Platform ログイン情報の暗号化

最も短い時間でクライアントのログイン情報を保護する方法は、Anypoint Runtime Manager エージェントを介して暗号化を設定する方法です。エージェントサーバーを作成するときに暗号化鍵を追加します。これで、エージェントはプロパティを自動的に暗号化します。  
エージェントを介して暗号化を設定する方法についての詳細は、​[「Runtime Manager エージェントのインストールと設定」](https://docs.mulesoft.com/jp/runtime-manager/installing-and-configuring-runtime-manager-agent)​を参照してください。

## [](#クライアント-id-とクライアントシークレットの暗号化)クライアント ID とクライアントシークレットの暗号化

エージェントを使用している場合でも、プロパティを手動で暗号化できます。最も一般的な方法は​[セキュアプロパティツール](https://docs.mulesoft.com/mule-runtime/latest/secure-configuration-properties#secure-properties-tool)​を使用することです。  
暗号化されたプロパティを使用すると、Mule ゲートウェイは、CBC モードで AES アルゴリズムが使用されていると仮定します。

### [](#例)例

クライアント ID が ​`bb458e566cba4e2ea5a826d27b46031a`​ であり、暗号化鍵を 128 ビット文字列 ​`MyEncryptionKey1`​ とするように選択したとします。これらのプロパティを暗号化するには、次のコマンドを実行する必要があります。

```console
> java -jar secure-properties-tool.jar \
string \ (1)
encrypt \ (2)
AES \ (3)
CBC \
MyEncryptionKey1 \ (4)
bb458e566cba4e2ea5a826d27b46031a
```

<table><tbody><tr><td><i class="conum" data-value="1"></i><b>1</b></td><td>string パラメーターを使用して単一値を暗号化します。</td></tr><tr><td><i class="conum" data-value="2"></i><b>2</b></td><td>値を暗号化するようにツールを設定します。</td></tr><tr><td><i class="conum" data-value="3"></i><b>3</b></td><td>CBC モードで AES を使用します。<br>Mule は後で値を復号化する際にこの設定を使用するため、これは重要です。</td></tr><tr><td><i class="conum" data-value="4"></i><b>4</b></td><td>最後に、暗号化する暗号化鍵-値ペアを指定します。</td></tr></tbody></table>

暗号化されたクライアント ID は、このコマンドにより次のように出力されます。

```none
> smzbg+aV2HbiC9Fv8KBsZpD5PlXiplsfhZ42RWNEbHhUeZ9ZIDftljUx6sYpuQ+b
```

## [](#暗号化されたクライアント-id-とクライアントシークレットを渡す)暗号化されたクライアント ID とクライアントシークレットを渡す

ログイン情報を暗号化したら、暗号化された値を、Mule 環境のルートフォルダーの ​`conf`​ ディレクトリ内にある ​`wrapper.conf`​ ファイルで設定する必要があります。

```none
wrapper.java.additional.<n>=-Danypoint.platform.client_id=![_encrypted client ID_]
wrapper.java.additional.<n>=-Danypoint.platform.anypoint.platform.client_secret=![_encryptedclient secret_]
wrapper.java.additional.<n>=-Danypoint.platform.proxy_password=![_encrypted password_]
```

<n> には、​`wrapper.java.additional`​ ファイル内で一意の番号を指定してください。

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-caution" title="Caution"></i>
</td>
<td class="content">
<div class="paragraph">
<p>設定ファイルに ​<code>wrapper.java.additional.n</code>​ エントリを追加する場合は、​<code>&lt;n&gt;</code>​ の各インスタンスを連続する番号に変更する必要があります。 そうしないと、Java はプロパティを正しく解析しません。</p>
</div>
</td>
</tr>
</tbody></table>

この例の設定では ​`client_id`​ は次のように表示されます。

```none
wrapper.java.additional.100=-Danypoint.platform.client_id=![smzbg+aV2HbiC9Fv8KBsZpD5PlXiplsfhZ42RWNEbHhUeZ9ZIDftljUx6sYpuQ+b]
```

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">必須の ​<code>![</code>​ プレフィックスと ​<code>]</code>​ サフィックスは、囲まれた値が暗号化されていることを Mule Runtime Engine に示します。</td></tr></tbody></table>

Mule Runtime の起動時に、​`anypoint.platform.encryption_key`​ プロパティを使用して秘密鍵を渡す必要があります。

```none
$MULE_HOME/bin/mule start -M-Danypoint.platform.encryption_key=MyEncryptionKey1
```

Mule Runtime は、​`anypoint.platform.encryption_key`​ プロパティに渡された暗号化鍵を使用して、プロパティを復号化します。

### [](#しくみ)しくみ

Anypoint Platform ログイン情報 (クライアント ID、クライアントの秘密、およびプロキシパスワード) を暗号化し、その暗号化された値を暗号化鍵と共に Mule 環境の ​`wrapper.conf`​ ファイルに追加できます。

Mule ゲートウェイ機能は起動時に暗号化鍵があるかどうかを確認します。その後クライアント ID とクライアントシークレットがその ​`wrapper.conf`​ ファイルから取得されます。このファイルのいずれかの値が暗号化インジケーター (​`![`​ と ​`]`​) で囲まれている場合、Mule Runtime は以前に読み込んだ暗号化鍵を使用して値を復号化し、その元のコンテンツを使用します。

## [](#起動暗号化のデバッグ)起動暗号化のデバッグ

起動中に暗号化メカニズムに関する情報を表示するようにランタイム Log4J ロガーを設定できます。

`$MULE_HOME/conf/log4j2.xml`​ で、ゲートウェイデプロイの非同期ロガーをセットアップします。

```XML
...
  <AsyncLogger name="com.mulesoft.mule.runtime.gw.deployment" level="DEBUG" />
...
```

鍵を指定すると、Mule 環境は次のメッセージを表示します。

An encryption key is present. Policies and API contracts will be encrypted.

指定しない場合、Mule Runtime は次のメッセージと共に起動します。

No encryption key provided. Policies and API contracts will not be encrypted.

暗号化プロセスが失敗した場合、Mule 環境はエラーを表示します。

Client ID cannot be decrypted

ログイン情報を復号化できない場合は、Anypoint Platform には接続できず、以降はポリシーやコントラクトをダウンロードしたり、追跡されている API の分析情報を生成したりできなくなります。

## [](#ログイン情報に関するトラブルシューティング)ログイン情報に関するトラブルシューティング

暗号化されたログイン情報を Anypoint Platform に渡すときに問題が発生した場合、指定したログイン情報が有効であることを確認することをお勧めします。セキュアプロパティツールを使用して、値を元の値に復号化し、Anypoint Platform に表示された値と比較することができます。

1. セキュアプロパティツールを実行してログイン情報を復号化します。
    
    ```none
    > java -jar secure-properties-tool.jar string decrypt AES CBC <yourEncryptionKey>
    ```
2. 復号化された値を Anypoint Platform 内の値と比較します。  
    Anypoint Platform のログイン情報を検証する方法についての詳細は、​[「ログイン情報の取得」](https://docs.mulesoft.com/jp/mule-gateway/mule-gateway-org-credentials-mule4#obtaining-credentials)​を参照してください。

## [](#サポートされるプロパティ)サポートされるプロパティ

暗号化をサポートする ​`wrapper.conf`​ プロパティを次に示します。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">プロパティ</th>
<th class="tableblock halign-left valign-top">Property Key (プロパティキー)</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>Client ID (クライアント ID)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>anypoint.platform.client_id</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Anypoint Platform のクライアント ID</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Client secret (クライアントシークレット)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>anypoint.platform.client_secret</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Anypoint Platform のクライアントシークレット</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Proxy password (プロキシパスワード)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>anypoint.platform.proxy_password</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Anypoint Platform に接続するためのプロキシ設定のパスワード</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#ポリシーの暗号化)ポリシーの暗号化

API ポリシーの設定は ​`policies`​ ディレクトリに保存されています。認証されていないパーティには非表示にする必要がある機密情報 (​`Basic Authentication`​ ヘッダーのパスワード項目など) が一部のポリシーに含まれている場合があります。

提供された API ポリシー内の機密値は、ポリシー設定用の API Manager UI では機密としてマークされます。カスタムポリシーを作成するときに、どの値が機密かを定義することができます。

## [](#ポリシーの暗号化の設定)ポリシーの暗号化の設定

ポリシーの暗号化を有効にするには、​`wrapper.conf`​ ファイルで 2 つのシステムプロパティを提供する必要があります。

- `anypoint.platform.encryption_key`  
    ポリシーの暗号化鍵。
    
    <table>
<tbody><tr>
<td class="icon">
<i class="fa icon-caution" title="Caution"></i>
</td>
<td class="content">
<div class="paragraph">
<p>暗号化鍵なしで Mule Runtime を再起動すると、すべてのポリシーが再度ダウンロードされ、機密情報は暗号化されません。</p>
</div>
</td>
</tr>
</tbody></table>
- `anypoint.platform.policy_encryption_mode`  
    このプロパティキーは、2 つの値を取ります。
    
    <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>FULL</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>SENSITIVE_ONLY</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>sensitive</code>​ としてマークした値のみが暗号化されます。<br>
これはデフォルトの暗号化モードです。</p>
</div></div></td>
</tr>
</tbody>
</table>
    
    このプロパティを設定しないと、デフォルトの ​`SENSITIVE_ONLY`​ 暗号化モードが使用されます。  
    暗号化モードは適用後に変更できます。​`policies`​ ディレクトリ内のファイルは、新しい暗号化モードに従って再生成されます。
    
    <table>
<tbody><tr>
<td class="icon">
<i class="fa icon-caution" title="Caution"></i>
</td>
<td class="content">
<div class="paragraph">
<p><code>FULL</code>​ から ​<code>SENSITIVE_ONLY</code>​ に変更している場合、​<code>sensitive</code>​ としてマークされていないすべてのパラメーターはファイルシステム内でプレーンテキストとして表示されます。</p>
</div>
</td>
</tr>
</tbody></table>

## [](#policies-that-support-encryption)暗号化をサポートするポリシー

値の暗号化がサポートされるすべてのポリシーと、その機能をサポートするために必要な最小バージョンが以下のリストで説明されています。

これらのポリシーの以前のバージョンと以下のリストに示されていないポリシーでは、設定内の暗号化鍵がゲートウェイ機能により検出されても、ポリシーの値は暗号化されません。

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
</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>基本認証</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.2.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>クライアント ID 適用</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.2.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ヘッダーの挿入</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.1.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>IP 許可リスト</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.0.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>IP ブロックリスト</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.0.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>JWT 検証</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.1.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Open AM</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.2.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Open ID</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.2.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>OAuth 2.0</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.2.0 以降。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Ping Federate</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>1.2.0 以降。</p>
</div></div></td>
</tr>
</tbody>
</table>

## [](#カスタムポリシーの暗号化)カスタムポリシーの暗号化

新しいカスタムポリシープロジェクトの推奨の作成方法は、Maven アーキタイプを使用することです。  
アーキタイプを使用して新しいカスタムポリシープロジェクトを作成する場合、​`-DencryptionSupported=true`​ プロパティを渡して、カスタムポリシー内の暗号化を有効にできます。  
この手順についての詳細は、​[「アーキタイプを使用したプロジェクトのセットアップ」](https://docs.mulesoft.com/jp/mule-gateway/policies-custom-getting-started#setting-up-a-project-with-the-archetype)​を参照してください。 カスタムポリシーを手動で開発する場合、または既存のポリシーに暗号化を追加する場合、次の手順を実行します。

1. 必要な連動関係をポリシーの ​`pom.xml`​ ファイルに追加します。  
    **Secure Configuration Property Module**​ 連動関係を ​`pom.xml`​ ファイルに追加する必要があります。
    
    ```XML
    <dependency>
       <groupId>com.mulesoft.modules</groupId>
       <artifactId>mule-secure-configuration-property-module</artifactId>
       <version>${securePropertyModuleVersion}</version>
       <classifier>mule-plugin</classifier>
    </dependency>
    ```
2. **Secure Properties 要素**​をポリシーのテンプレートファイルに追加します。  
    次のスニペットをポリシーの XML テンプレートファイルの ​`<mule …​>`​ 要素の後に貼り付けます。
    
    ```XML
    {{#if encrypted}}
    <secure-properties:config key="${anypoint.platform.encryption_key}" file="${encryptedPropertiesFile}" name="encryptionConfiguration">
       <secure-properties:encrypt algorithm="AES" mode="CBC"/>
    </secure-properties:config>
    {{/if}}
    ```
    
    この機能は CBC モードの AES アルゴリズムのみをサポートします。  
    ゲートウェイ機能は、ゲートウェイの起動時に設定されたシステムプロパティから ​`anypoint.platform.encryption_key`​ と ​`encryptedPropertiesFile`​ の値を取得します。
3. ポリシーの YAML ファイルで機密値を定義します。  
    デフォルトでは、カスタムポリシー内の値は機密ではありません。値が機密であることを指定するには、​`sensitive`​ 要素を使用します。
    
    ```YAML
      configuration:
       - propertyName: username
         type: string
         sensitive: false
       - propertyName: password
         type: string
         sensitive: true (1)
    ```
    
    <table><tbody><tr><td><i class="conum" data-value="1"></i><b>1</b></td><td>これで、ポリシー内の ​<code>password</code>​ 値は機密とみなされます。</td></tr></tbody></table>

## [](#オフラインポリシーの暗号化)オフラインポリシーの暗号化

オフラインポリシーの設定を暗号化するには、​[セキュアプロパティツール](https://docs.mulesoft.com/mule-runtime/latest/secure-configuration-properties#secure-properties-tool)​を使用して値を暗号化できます。

\> java -jar secure-properties-tool.jar \\
string \\ **(1)**
encrypt \\ **(2)**
AES \\ **(3)**
CBC \\
MyEncryptionKey1 \\ **(4)**
bb458e566cba4e2ea5a826d27b46031a

1. string パラメーターを使用して単一値を暗号化します。
2. 値を暗号化するようにツールを設定します。
3. CBC モードで AES を使用します。Mule Runtime は後で値を復号化するときにこの設定を使用するため、これは重要です。
4. 最後に、暗号化する暗号化鍵-値ペアを指定します。

詳細は、​[オフラインポリシーの割り当て](https://docs.mulesoft.com/jp/mule-gateway/policies-custom-offline-apply)​を参照してください。

## [](#コントラクトの暗号化)コントラクトの暗号化

Mule ゲートウェイが暗号化を使用して設定されている場合、コントラクト適用ポリシーに関連付けられているコントラクトも暗号化されます。

## [](#スコープと考慮事項)スコープと考慮事項

クラスターのシナリオでは、ノードごとに暗号化プロパティを設定する必要があります。それ以外の場合、一部のノードを無保護のままとすることができます。