Azure Logic Apps のワークフローからの IBM MQ サーバーへの接続
適用対象: Azure Logic Apps (従量課金プラン + Standard)
この記事では、MQ コネクタを使用して、Azure Logic Apps のワークフローから、Azure でホストされる、またはオンプレミスの MQ サーバーにアクセスする方法について説明します。 その後、MQ サーバーに格納されるメッセージを送受信する自動ワークフローを作成できます。 たとえば、ワークフローでキュー内の 1 つのメッセージを参照してから、他のアクションを実行できます。
MQ コネクタは Microsoft MQ クライアントのラッパーを提供し、これには TCP/IP ネットワーク経由でリモート MQ サーバーと通信するためのすべてのメッセージング機能が含まれています。 このコネクタでは、MQ クライアントを呼び出すための接続、操作、パラメーターが定義されています。
IBM WebSphere MQ のサポートされるバージョン
- MQ 7.5
- MQ 8.0
- MQ 9.0、9.1、9.2、9.3
コネクタに関するテクニカル リファレンス
MQ コネクタには、ロジック アプリの種類とホスト環境に基づいてさまざまなバージョンがあります。
ロジック アプリ | 環境 | 接続のバージョン |
---|---|---|
従量課金プラン | マルチテナント Azure Logic Apps | マネージド コネクタ。コネクタ ギャラリーの [ランタイム]>[共有] の下に表示されます。 このコネクタでは、アクションのみが提供され、トリガーは提供されません。 オンプレミスの MQ サーバーのシナリオでは、マネージド コネクタは TLS (SSL) 暗号化による認証を使用するサーバーのみをサポートします。 詳細については、次のドキュメントを確認してください。 - MQ マネージド コネクタのリファレンス - Azure Logic Apps のマネージド コネクタ |
Standard | シングルテナント Azure Logic Apps と App Service Environment v3 (ASE v3 と Windows のプランのみ) | コネクタ ギャラリーの [ランタイム]>[共有] に表示されるマネージド コネクタと、コネクタ ギャラリーの [ランタイム]>[アプリ内] に表示されるサービス プロバイダーベースの組み込みコネクタ。 組み込みバージョンには次のような違いがあります。 - 組み込みバージョンには、アクションとトリガーの "両方" が含まれています。 - 組み込みコネクタは、オンプレミス データ ゲートウェイなしで接続文字列を使って、MQ サーバーに直接接続し、Azure 仮想ネットワークにアクセスできます。 - 組み込みバージョンは、転送中のデータの TLS (SSL) 暗号化を使用したサーバー認証とサーバー クライアント認証の両方、送信と受信両方の操作のメッセージ エンコード、Azure 仮想ネットワーク統合をサポートします。 詳細については、次のドキュメントを確認してください。 - MQ マネージド コネクタのリファレンス - MQ 組み込みコネクタのリファレンス - Azure Logic Apps の組み込みコネクタ |
TLS (SSL) 暗号化による認証
MQ マネージド コネクタ (従量課金ワークフローまたは Standard ワークフロー) または MQ 組み込みコネクタ (Standard ワークフローのみ) のどちらを使うかに基づいて、MQ コネクタは次の認証の向きの一方または両方をサポートします。
認証 | サポートされるロジック アプリの種類と MQ コネクタ | Process |
---|---|---|
サーバーのみ (一方向) |
- 従量課金: マネージドのみ - Standard: マネージドまたは組み込み |
サーバー認証の場合、MQ サーバーは、検証のために、秘密キー証明書 (パブリックに信頼されているもの、またはパブリックに信頼されていないもの) を、ロジック アプリ クライアントに送信します。 MQ コネクタは、標準の .NET SSL ストリーム検証を使い、公開キー証明書 ("署名者" 証明書とも呼ばれます) に照らして、受け取ったサーバー証明書の信頼性を検証します。 ロジック アプリはクライアント証明書を送信しません。 |
サーバー - クライアント (双方向) |
- 従量課金: サポートされていません - Standard: 組み込みのみ |
サーバー認証については、前の行を参照してください。 クライアント認証の場合、ロジック アプリ クライアントは検証のために秘密キー証明書を MQ サーバーに送信します。 MQ サーバーは、公開キー証明書を使って、受け取ったクライアント証明書の信頼性も検証します。 |
秘密キーと公開キー証明書に関する注意事項
検証する必要がある証明書は、常に秘密キー証明書です。 検証の実行に使われる証明書は、常に公開キー証明書です。
パブリックに信頼された秘密キー証明書は、認識された証明機関によって発行されます。 パブリックに信頼されていない秘密キー証明書には、自己署名、プライベート CA、および同様の証明書が含まれます。
MQ サーバーから送信された秘密キー証明書を検証するため、MQ コネクタは、ロジック アプリの仮想マシン ホスト上のホストの信頼されたルート証明機関 (CA) ストアに通常存在する公開キー証明書を使います。
ただし、ホストにすべての必要な公開キー証明書がない場合、または MQ サーバーがパブリックに信頼されていない秘密キー証明書を送信する場合は、追加の手順を行う必要があります。 詳細については、「前提条件」を参照してください。
Standard ロジック アプリから送信されたクライアントの秘密キー証明書を検証するため、MQ サーバーはその証明書ストアに存在する公開キー証明書を使います。 ロジック アプリがクライアント証明書として使う秘密キー証明書の追加については、「秘密キー証明書を追加する」をご覧ください。
制限事項
TLS (SSL) 暗号化による認証
MQ コネクタ サポートされている認証の向き マネージド サーバーのみ (一方向) 組み込み - サーバー - クライアント (双方向)
- サーバーのみ (一方向)サーバー証明書の検証
MQ の組み込みコネクタでは、サーバー証明書の有効期限も証明書チェーンも検証されません。
文字セットの変換
MQ のマネージド コネクタでは、文字セットの変換は行われず、メッセージの Format フィールドも使われません。 コネクタは、メッセージ フィールドのデータをそのままコピーして、メッセージを送信するだけです。
MQ の組み込みコネクタは、文字セットの変換を行うことができますが、データ形式が文字列の場合のみです。 ユーザーが異なる文字セット ID (コード ページ) を指定すると、コネクタは新しいコード ページへのデータの変換を試みます。
MQ コネクタは、セグメント化されたメッセージをサポートしていません。
詳しくは、MQ マネージド コネクタのリファレンスまたは MQ 組み込みコネクタのリファレンスに関する記事をご覧ください。
前提条件
Azure アカウントとサブスクリプション。 Azure サブスクリプションがない場合は、無料の Azure アカウントにサインアップしてください。
オンプレミスの MQ サーバーと接続するには、ネットワーク内のサーバーにオンプレミス データ ゲートウェイをインストールする必要があります。 MQ コネクタが動作するには、オンプレミスのデータ ゲートウェイを備えるサーバーに .NET Framework 4.6 もインストールする必要があります。
ゲートウェイをインストールしたら、Azure でデータ ゲートウェイのリソースも作成しなければなりません。 MQ コネクタは、このリソースを使用して MQ サーバーにアクセスします。 詳細については、データ ゲートウェイ接続の設定に関する記事を確認してください。
Note
次のシナリオでは、ゲートウェイは必要ありません。
- MQ サーバーは、Azure で一般公開されているか、使用可能です。
- マネージド コネクタではなく、MQ 組み込みコネクタを使います。
MQ サーバーにアクセスするロジック アプリのリソースとワークフロー。
オンプレミス データ ゲートウェイでを MQ のマネージド コネクタを使うには、ロジック アプリ リソースで Azure のゲートウェイ リソースと同じ場所を使う必要があります。
トリガーが提供されない MQ マネージド コネクタを使うには、ワークフローがトリガーで始まるようにするか、または最初にワークフローにトリガーを追加するようにします。 たとえば、繰り返しトリガーを使用できます。
MQ 組み込みコネクタからのトリガーを使うには、ブランクのワークフローで始めるようにします。
TLS (SSL) 暗号化を使用する認証の証明書の要件
MQ マネージド コネクタ
MQ サーバー 必要条件 Azure でホストされた MQ サーバー MQ サーバーは、信頼された証明機関によって発行された秘密キー証明書を、検証のためにロジック アプリ クライアントに送信する必要があります。 オンプレミス データ ゲートウェイを使用するオンプレミスの MQ サーバー 自己署名証明書やプライベート CA 証明書など、パブリックに信頼されていない秘密キー証明書を送信するには、オンプレミス データ ゲートウェイがインストールされたローカル コンピューター上の信頼されたルート証明機関 (CA) ストアに、証明書を追加する必要があります。 このタスクには、Windows 証明書マネージャー (certmgr.exe) を使用できます。 MQ 組み込みコネクタ
Standard ロジック アプリでは、Azure App Service をホスト プラットフォームとして使って、証明書を処理します。 任意の WS* プランの Standard ロジック アプリの場合、パブリック、プライベート、カスタム、または自己署名証明書をローカル マシンの証明書ストアに追加できます。 ただし、Standard ロジック アプリが実行されている仮想マシン ホスト上の信頼されたルート CA ストアに証明書を追加する必要がある場合、App Service では、Windows のみプランおよび ASE ベースの App Service プランを使用して分離された App Service Environment v3 (ASE) でロジック アプリを実行することが求められます。 詳細については、「証明書と App Service Environment」を参照してください。
MQ サーバー認証
次の表では、シナリオに応じた証明書の前提条件について説明します。
受信 MQ サーバー証明書 必要条件 信頼された証明機関によって発行された、公的に信頼された秘密キー証明書 ロジック アプリの仮想マシン ホストには通常、受信 MQ サーバーの秘密キー証明書を検証するために必要な公開キー証明書があるため、ロジック アプリには他のセットアップは必要ありません。 これらの公開キー証明書が存在することを確認するには、「既存の公開キー証明書用のサムプリントを表示して確認する」の手順のようにします。
受け取った MQ サーバーの秘密キー証明書とチェーン証明書を検証するために必要なすべての公開キー証明書が仮想マシン ホストにない場合は、次の手順のようにします。
1. Windows のみおよび ASE ベースの App Service プランの Azure App Service Environment v3 (ASE) を使って、Standard ロジック アプリを作り直します。
2. 手動で必要な公開キー証明書をホストの信頼されたルート CA ストアに追加します。自己署名証明書やプライベート CA 証明書など、パブリックに信頼されていない秘密キー証明書 ロジック アプリの仮想マシン ホストの信頼されたルート CA ストアには、MQ サーバーの証明書チェーンを検証するために必要な公開キー証明書がありません。 このような場合は、次の手順を実行します。
1. Windows のみおよび ASE ベースの App Service プランの Azure App Service Environment v3 (ASE) を使って、Standard ロジック アプリを作り直します。
2. 手動で必要な公開キー証明書をホストの信頼されたルート CA ストアに追加します。
詳しくは、次のドキュメントをご覧ください。
- 証明書のバインドと App Service Environment
- Azure App Service で TLS/SSL 証明書を追加および管理するロジック アプリ クライアント認証
MQ 組み込みコネクタの接続詳細では、クライアント証明書として送信する秘密キー証明書を追加し、証明書の拇印の値を指定できます。 詳細については、「秘密キー証明書を追加する」を参照してください。
推奨: MQ サーバー 9.0 以降へのアップグレード。 また、MQ サーバーでは、クライアント接続で使用される暗号化仕様と一致する暗号スイートを使用して、サーバー接続チャネル (ANY_TLS12_OR_HIGHER など) を必ずセットアップしてください。 詳細については、暗号要件に関する次の項目を参照してください。
暗号化仕様の要件
MQ サーバーでは、TLS (SSL) 暗号化を使用する接続の暗号化仕様を定義する必要があります。 この暗号化仕様は、MQ サーバーが実行されるオペレーティング システムでサポート、選択、使用される暗号スイートと一致する必要があります。 最終的に、クライアント接続で使用する暗号化仕様は、MQ サーバー上のサーバー接続チャネルでセットアップされている暗号スイートと一致する必要があります。
詳細については、「接続と認証の問題」を参照してください。
MQ トリガーを追加する (Standard ロジック アプリのみ)
次の手順は、MQ 組み込みコネクタによって提供されるトリガーを使用できる Standard ロジック アプリ ワークフローにのみ適用されます。 MQ マネージド・コネクターにはトリガーは含まれません。
次の手順では Azure portal を使いますが、適切な Azure Logic Apps 拡張機能があれば、Visual Studio Code を使って Standard ロジック アプリ ワークフローを作成することもできます。
Azure portal で、空のロジック アプリ ワークフローをデザイナーで開きます。
こちらの一般的な手順のようにして、必要な MQ 組み込みトリガーを追加します。 詳しくは、MQ 組み込みコネクタのトリガーに関する記事をご覧ください。
接続の認証を行うために必要な情報を指定します。 完了したら [作成] を選択します。
トリガー情報ボックスが表示されたら、必要なトリガーの情報を入力します。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
MQ アクションを追加する
従量課金ロジック アプリ ワークフローでは、MQ マネージド コネクタのみを使用できます。 一方、Standard ロジック アプリ ワークフローでは、MQ マネージド コネクタと MQ 組み込みコネクタを使用できます。 各バージョンには複数のアクションがあります。 たとえば、マネージドと組み込み両方のコネクタ バージョンに、メッセージを参照するための独自のアクションがあります。
マネージド コネクタ アクション: これらのアクションは、従量課金プランまたは Standard ロジック アプリ ワークフローで実行されます。
組み込みコネクタ アクション: これらのアクションは、Standard ロジック アプリ ワークフローでのみ実行されます。
次に示す手順では Azure portal を使用しますが、適切な Azure Logic Apps 拡張機能を使用すれば、次のツールでロジック アプリ ワークフローを作成することもできます。
従量課金プラン ロジック アプリ ワークフロー: Visual Studio または Visual Studio Code
Standard ロジック アプリ ワークフロー: Visual Studio Code
Azure portal で、ロジック アプリ ワークフローをデザイナーで開きます。
こちらの一般的な手順のようにして、必要な MQ アクションを追加します。 詳しくは、MQ コネクタのアクションに関する記事をご覧ください。
接続の認証を行うために必要な情報を指定します。 完了したら [作成] を選択します。
アクション情報ボックスが表示されたら、必要なアクションの情報を入力します。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
ワークフローのテスト
ワークフローから望む結果が返されることを調べるには、ワークフローを実行し、ワークフローの実行履歴から出力を確認します。
ワークフローを実行する。
従量課金ロジック アプリ: ワークフロー デザイナーのツール バーで、[トリガーの実行]>[実行] を選びます。
Standard ロジック アプリ: ワークフロー リソース メニューで、[概要] を選びます。 [概要] ウィンドウのツールバーで、[トリガーの実行]>[実行] を選択します。
実行が完了した後、ワークフローの実行履歴と各ステップの状態が、デザイナーに表示されます。
(スキップせずに) 実行された各ステップの入力と出力を確認するには、ステップを展開するか選択します。
詳細な入力の詳細を確認するには、[Show raw inputs]\(未加工入力の表示\) を選択します。
その他の出力の詳細を確認するには、[Show raw outputs]\(未加工出力の表示\) を選択します。 [IncludeInfo] を true に設定した場合は、その他の出力が表示されます。
TLS (SSL) 暗号化を使用した認証用の証明書を表示および追加する
次の情報は、TLS (SSL) 暗号化でサーバーのみまたはサーバー - クライアントの認証を使う MQ 組み込みコネクタの Standard ロジック アプリ ワークフローにのみ適用されます。
既存の公開キー証明書用のサムプリントを表示して確認する
必要な公開キー証明書のサムプリントが、Standard ロジック アプリの仮想マシン ホスト上の信頼されたルート CA ストアに存在することを確認するには、次のようにして、Standard ロジック アプリのリソース メニューから cert
PowerShell スクリプトを実行します。
Azure portal で、Standard ロジック アプリ リソースを開きます。 ロジック アプリのリソース メニューの [開発ツール] で、[高度なツール]>[Go] を選びます。
Kudu の[Debug console] (デバッグ コンソール) メニューから、[PowerShell] を選びます。
PowerShell ウィンドウが表示されたら、PowerShell のコマンド プロンプトから次のスクリプトを実行します。
dir cert:\localmachine\root
PowerShell ウィンドウに、既存のサムプリントと説明の一覧が表示されます。次に例を示します。
公開キー証明書を追加する
Standard ロジック アプリが実行されている仮想マシン ホスト上の信頼されたルート CA ストアに公開キー証明書を追加するには、次の手順のようにします。
Azure portal で、Standard ロジック アプリ リソースを開きます。 ロジック アプリのリソース メニューの [設定] で、[TLS/SSL 設定 (クラシック)] を選びます。
[TLS/SSL 設定 (クラシック)] ページで、[公開キー証明書 (.cer)] タブを選び、[公開キー証明書のアップロード] を選びます。
[公開キー証明書 (.cer) の追加] ペインが開いたら、証明書を説明する名前を入力します。 公開キー証明書ファイル (.cer) を見つけて選びます。 終わったら、[アップロード] を選びます。
証明書を追加した後、[拇印] 列から証明書のサムプリントの値をコピーします。
ロジック アプリ リソースのメニューで、[構成] を選びます。
[アプリケーションの設定] タブで、 [新しいアプリケーション設定] を選択します。 WEBSITE_LOAD_ROOT_CERTIFICATES という名前の新しいアプリケーション設定を追加し、前にコピーした証明書のサムプリントの値を入力します。 証明書のサムプリントの値が複数ある場合は、各値をコンマ (、) で区切ります。
詳しくは、「シングルテナントの Azure Logic Apps で Standard ロジック アプリのホストとアプリの設定を編集する」をご覧ください。
Note
プライベート CA 証明書のサムプリントを指定した場合、MQ 組み込みコネクタでは、証明書の有効期限やソースのチェックなど、証明書の検証は実行されません。 標準の .NET SSL 検証が失敗した場合、コネクタは渡されたサムプリントの値と WEBSITE_LOAD_ROOT_CERTIFICATES 設定の値の比較だけを行います。
追加した証明書が公開キー証明書の一覧に表示されない場合は、ツール バーの [最新の情報に更新] を選びます。
秘密キー証明書を追加する
Standard ロジック アプリが実行されている仮想マシン ホスト上の信頼されたルート CA ストアに秘密キー証明書を追加するには、次の手順のようにします。
Azure portal で、ロジック アプリ リソースを開きます。 ロジック アプリのリソース メニューの [設定] で、[TLS/SSL 設定 (クラシック)] を選びます。
[TLS/SSL 設定 (クラシック)] ページで、[秘密キー証明書 (.pfx)] タブを選び、[証明書のアップロード] を選びます。
[秘密キー証明書 (.pfx) の追加] ペインが開いたら、秘密キー証明書ファイル (.pfx) を見つけて選び、証明書のパスワードを入力します。 終わったら、[アップロード] を選びます。
証明書を追加した後、[拇印] 列から証明書のサムプリントの値をコピーします。
ロジック アプリ リソースのメニューで、[構成] を選びます。
[アプリケーションの設定] タブで、 [新しいアプリケーション設定] を選択します。 WEBSITE_LOAD_CERTIFICATES という名前の新しいアプリケーション設定を追加し、前にコピーした証明書のサムプリントの値を入力します。
詳しくは、「シングルテナントの Azure Logic Apps で Standard ロジック アプリのホストとアプリの設定を編集する」をご覧ください。
追加した証明書が秘密キー証明書の一覧に表示されない場合は、ツール バーの [最新の情報に更新] を選びます。
MQ 組み込みコネクタを使って接続を作成する場合は、接続情報ボックスで [Use TLS] (TLS を使用) を選びます。
[Client Cert Thumbprint] (クライアント証明書のৠ印) プロパティに、前にコピーした秘密キー証明書のサムプリントの値を入力します。これにより、サーバー - クライアント (双方向) 認証が有効になります。 サムプリントの値を入力しない場合、コネクタはサーバーのみの (一方向) 認証を使います。
問題のトラブルシューティング
アクションの参照または受信の失敗
空のキューでアクションの参照または受信を実行すると、アクションは次のヘッダーを出力して失敗します。
接続と認証の問題
ワークフローで MQ マネージド コネクタを使ってオンプレミスの MQ サーバーに接続すると、次のエラーが発生する可能性があります。
"MQ: Could not Connect the Queue Manager '<queue-manager-name>': The Server was expecting an SSL connection."
信頼された証明機関によって発行された証明書を、MQ サーバーで提供する必要があります。
MQ サーバーでは、TLS 接続に使用する暗号化仕様を定義する必要があります。 ただし、セキュリティ上の目的や、最適なセキュリティ スイートを含めるために、Windows オペレーティング システムは一連のサポートされている暗号仕様を送信します。
MQ サーバーが実行されているオペレーティング システムは、使用するスイートを選択します。 構成を一致させるには、暗号化の仕様が TLS ネゴシエーションで選択されたオプションと一致するように MQ サーバーのセットアップを変更する必要があります。
接続しようとすると、MQ サーバーが間違った暗号化仕様を選択したために接続が失敗したことを示すイベント メッセージをログに記録します。 イベント メッセージには、MQ サーバーが一覧から選択した暗号仕様が含まれています。 サーバー接続チャネルの構成で、イベント メッセージでの暗号仕様と一致するように、暗号仕様を更新します。