Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMule ゲートウェイ起動暗号化を使用すると、ポリシー、コントラクトや、Mule アプリケーションと Anypoint Platform 間の接続の設定に必要なログイン情報など、Mule Runtime Engine (Mule) により保存される機密情報を暗号化できます。
この機能は、Mule 4.2.0 以降でサポートされています。暗号化をサポートするポリシー (基本認証 1.2.0 など) が 4.2.0 より前のバージョンの Mule で実行中の API に適用される場合、ポリシー設定は暗号化されません。
最も短い時間でクライアントのログイン情報を保護する方法は、Anypoint Runtime Manager エージェントを介して暗号化を設定する方法です。エージェントサーバーを作成するときに暗号化キーを追加します。これで、エージェントはプロパティを自動的に暗号化します。
エージェントを介して暗号化を設定する方法についての詳細は、「Runtime Manager エージェントのインストールと設定」を参照してください。
エージェントを使用している場合でも、プロパティを手動で暗号化できます。最も一般的な方法はセキュアプロパティツールを使用することです。
暗号化されたプロパティを使用すると、Mule ゲートウェイは、CBC モードで AES アルゴリズムが使用されていると仮定します。
クライアント ID が bb458e566cba4e2ea5a826d27b46031a
であり、暗号化キーを 128 ビット文字列 MyEncryptionKey1
とするように選択したとします。これらのプロパティを暗号化するには、次のコマンドを実行する必要があります。
> java -jar secure-properties-tool.jar \
string \ (1)
encrypt \ (2)
AES \ (3)
CBC \
MyEncryptionKey1 \ (4)
bb458e566cba4e2ea5a826d27b46031a
1 | string パラメーターを使用して単一値を暗号化します。 |
2 | 値を暗号化するようにツールを設定します。 |
3 | CBC モードで AES を使用します。 Mule は後で値を復号化する際にこの設定を使用するため、これは重要です。 |
4 | 最後に、暗号化する暗号化キー-値ペアを指定します。 |
暗号化されたクライアント ID は、このコマンドにより次のように出力されます。
> smzbg+aV2HbiC9Fv8KBsZpD5PlXiplsfhZ42RWNEbHhUeZ9ZIDftljUx6sYpuQ+b
ログイン情報を暗号化したら、暗号化された値を、Mule 環境のルートフォルダーの conf
ディレクトリ内にある wrapper.conf
ファイルで設定する必要があります。
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
ファイル内で一意の番号を指定してください。
設定ファイルに |
この例の設定では client_id
は次のように表示されます。
wrapper.java.additional.100=-Danypoint.platform.client_id=![smzbg+aV2HbiC9Fv8KBsZpD5PlXiplsfhZ42RWNEbHhUeZ9ZIDftljUx6sYpuQ+b]
![ プレフィックスと ] サフィックスが必要です。これらは、囲まれた値が暗号化されていることを Mule Runtime Engine に示します。
|
保護された値を Mule Runtime Engine で復号化できるようにするには、Mule Runtime を開始するときに、anypoint.platform.encryption_key
プロパティを使用してシークレットキーを渡す必要があります。
$MULE_HOME/bin/mule start -M-Danypoint.platform.encryption_key=MyEncryptionKey1
Mule Runtime Engine は、anypoint.platform.encryption_key
プロパティに渡された暗号化キーを使用して、プロパティを復号化します。
Anypoint Platform ログイン情報 (クライアント ID、クライアントシークレット、およびプロキシパスワード) を暗号化し、その暗号化された値を暗号化キーと共に Mule 環境の wrapper.conf
ファイルに追加できます。
Mule ゲートウェイ機能は起動時に暗号化鍵があるかどうかを確認します。その後クライアント ID とクライアントシークレットがその wrapper.conf
ファイルから取得されます。このファイルのいずれかの値が暗号化インジケーター (![
と ]
) で囲まれている場合、Mule は以前に読み込んだ暗号化キーを使用して値を復号化し、その元のコンテンツを使用します。
起動中に暗号化メカニズムに関する情報を表示するようにランタイム Log4J ロガーを設定できます。
$MULE_HOME/conf/log4j2.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 Engine は次のメッセージと共に起動します。
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 に表示された値と比較することができます。
セキュアプロパティツールを実行してログイン情報を復号化します。
> java -jar secure-properties-tool.jar string decrypt AES CBC <yourEncryptionKey>
復号化された値を Anypoint Platform 内の値と比較します。
Anypoint Platform のログイン情報を検証する方法についての詳細は、「ログイン情報の取得」を参照してください。
暗号化をサポートする wrapper.conf
プロパティを次に示します。
プロパティ | Property Key (プロパティキー) | 説明 |
---|---|---|
Client ID (クライアント ID) |
|
Anypoint Platform のクライアント ID |
Client secret (クライアントシークレット) |
|
Anypoint Platform のクライアントシークレット |
Proxy password (プロキシパスワード) |
|
Anypoint Platform に接続するためのプロキシ設定のパスワード |
API ポリシーの設定は policies
ディレクトリに保存されています。認証されていないパーティには非表示にする必要がある機密情報 (Basic Authentication
ヘッダーのパスワード項目など) が一部のポリシーに含まれている場合があります。
提供された API ポリシー内の機密値は、ポリシー設定用の API Manager UI では機密としてマークされます。カスタムポリシーを作成するときに、どの値が機密かを定義することができます。
ポリシーの暗号化を有効にするには、wrapper.conf
ファイルで 2 つのシステムプロパティを提供する必要があります。
anypoint.platform.encryption_key
ポリシーの暗号化キー。
すべてのポリシーを暗号化した後、暗号化キーなしで Mule Runtime Engine を再起動した場合、すべてのポリシーが再度ダウンロードされます。ただし、機密情報はどれも暗号化されません。 |
anypoint.platform.policy_encryption_mode
このプロパティキーは、2 つの値を取ります。
|
すべての値が暗号化されます。 |
|
|
このプロパティを設定しないと、デフォルトの SENSITIVE_ONLY
暗号化モードが使用されます。
暗号化モードは適用後に変更できます。policies
ディレクトリ内のファイルは、新しい暗号化モードに従って再生成されます。
|
値の暗号化がサポートされるすべてのポリシーと、その機能をサポートするために必要な最小バージョンが以下のリストで説明されています。
これらのポリシーの以前のバージョンと以下のリストに示されていないポリシーでは、設定内の暗号化キーがゲートウェイ機能により検出されても、ポリシーの値は暗号化されません。
ポリシー | バージョン |
---|---|
基本認証 |
1.2.0 以降。 |
クライアント ID 適用 |
1.2.0 以降。 |
ヘッダーの挿入 |
1.1.0 以降。 |
IP 許可リスト |
1.0.0 以降。 |
IP ブロックリスト |
1.0.0 以降。 |
JWT 検証 |
1.1.0 以降。 |
Open AM |
1.2.0 以降。 |
Open ID |
1.2.0 以降。 |
OAuth 2.0 |
1.2.0 以降。 |
Ping Federate |
1.2.0 以降。 |
新しいカスタムポリシープロジェクトの推奨の作成方法は、Maven アーキタイプを使用することです。
アーキタイプを使用して新しいカスタムポリシープロジェクトを作成する場合、-DencryptionSupported=true
プロパティを渡して、カスタムポリシー内の暗号化を有効にできます。
この手順についての詳細は、「アーキタイプを使用したプロジェクトのセットアップ」を参照してください。
カスタムポリシーを手動で開発する場合、または既存のポリシーに暗号化を追加する場合、次の手順を実行します。
必要な連動関係をポリシーの pom.xml
ファイルに追加します。
Secure Configuration Property Module 連動関係を pom.xml
ファイルに追加する必要があります。
<dependency>
<groupId>com.mulesoft.modules</groupId>
<artifactId>mule-secure-configuration-property-module</artifactId>
<version>${securePropertyModuleVersion}</version>
<classifier>mule-plugin</classifier>
</dependency>
Secure Properties 要素をポリシーのテンプレートファイルに追加します。
次のスニペットをポリシーの XML テンプレートファイルの <mule …>
要素の後に貼り付けます。
{{#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
の値を取得します。
ポリシーの YAML ファイルで機密値を定義します。
デフォルトでは、カスタムポリシー内の値は機密ではありません。値が機密であることを指定するには、sensitive
要素を使用します。
configuration:
- propertyName: username
type: string
sensitive: false
- propertyName: password
type: string
sensitive: true (1)
1 | これで、ポリシー内の password 値は機密とみなされます。 |
オフラインポリシーの設定を暗号化するには、セキュアプロパティツールを使用して値を暗号化できます。
> java -jar secure-properties-tool.jar \ string \ (1) encrypt \ (2) AES \ (3) CBC \ MyEncryptionKey1 \ (4) bb458e566cba4e2ea5a826d27b46031a
string パラメーターを使用して単一値を暗号化します。
値を暗号化するようにツールを設定します。
CBC モードで AES を使用します。Mule は後で値を復号化する際にこの設定を使用するため、これは重要です。
最後に、暗号化する暗号化キー-値ペアを指定します。
詳細は、オフラインポリシーの割り当てを参照してください。