Azure App Services からのハイブリッド接続

ハイブリッド接続は、Azure のサービスであり、Azure App Service の機能でもあります。 サービスとして使用した場合、その用途と機能は、Azure App Service の用途と機能を上回ります。 ハイブリッド接続の詳細と Azure App Service では提供されない使用方法については、Azure Relay ハイブリッド接続に関するページを参照してください。

App Service 内では、任意のネットワークに含まれていて、443 ポートから Azure に発信呼び出しができるアプリケーション リソースにアクセスするため、ハイブリッド接続が使用できます。 ハイブリッド接続によって、アプリから TCP エンドポイントへのアクセスができるようになりますが、アプリにアクセスするための新しい方法が有効になるわけではありません。 App Service で使用されるとき、各ハイブリッド接続は、単一の TCP ホストとポートの組み合わせに相互に関連付けられます。 この機能を使用すると、アプリは TCP エンドポイントである場合、任意の OS 上のリソースにアクセスできます。 ハイブリッド接続機能では、アプリケーション プロトコルやアクセス先は認識されません。 それは、ネットワーク アクセスを提供するだけです。

しくみ

ハイブリッド接続では、目的のエンドポイントと Azure の両方に到達できるリレー エージェントをデプロイする必要があります。 リレー エージェント (ハイブリッド接続マネージャー (HCM)) では、443 ポートを介して Azure Relay への呼び出しが行われます。 Web アプリのサイトからも、App Service インフラストラクチャにより、アプリケーションに代わって Azure Relay への接続が行われます。 このように組み合わされた接続により、アプリから対象のエンドポイントにアクセスできるようになります。 接続では、セキュリティには TLS 1.2 が、認証/承認には Shared Access Signature (SAS) キーが使用されます。

Diagram of Hybrid Connection high-level flow.

アプリが構成されたハイブリッド接続エンドポイントと一致する DNS 要求を行うと、送信 TCP トラフィックはハイブリッド接続を介してリダイレクトされます。

Note

つまり、ハイブリッド接続では常に DNS 名を使用するようにします。 一部のクライアント ソフトウェアは、エンドポイントで IP アドレスが使用されている場合は DNS 参照を実行しません。

App Service のハイブリッド接続のメリット

ハイブリッド接続機能には、次のような多くの利点があります。

  • アプリは、オンプレミスのシステムとサービスへセキュリティで保護されたアクセスを実行できます。
  • インターネットにアクセス可能なエンドポイントは必要ありません。
  • すばやく簡単に設定できます。 ゲートウェイは必要ありません。
  • 各ハイブリッド接続が単一のホストとポートの組み合わせに照合されるため、セキュリティ面で優れています。
  • 通常はファイアウォールを通過するための設定は必要はありません。 接続はすべて、標準的な Web ポート経由の発信です。
  • ネットワーク レベルの機能であるため、アプリで使用される言語とエンドポイントで使用されるテクノロジに依存しません。
  • 単一のアプリから複数のネットワークにアクセスするために使用できます。
  • Windows アプリと Linux アプリの GA でサポートされます。 Windows カスタム コンテナーではサポートされていません。

ハイブリッド接続ではできないこと

ハイブリッド接続では実行できない操作を次に示します。

  • ドライブのマウント
  • UDP の使用
  • FTP パッシブ モードや拡張パッシブ モードなどの動的ポートを使用する TCP ベースのサービスへのアクセス
  • LDAP のサポート (UDP が必要な場合があるため)
  • Active Directory をサポートします。これは、App Service worker に参加メインできません。

アプリでハイブリッド接続を追加または作成する

ハイブリッド接続を作成するには、Azure portal に移動し、アプリを選択します。 [ネットワーク]>[ハイブリッド接続エンドポイントの構成] の順に選択します。 ここで、アプリ用に構成されているハイブリッド接続を確認できます。

Screenshot of Hybrid Connection list.

新しいハイブリッド接続を追加するには、[+] [ハイブリッド接続の追加] を選択します。 既に作成したハイブリッド接続の一覧が表示されます。 アプリに 1 つ以上のハイブリッド接続を追加するには、追加する接続をクリックし、[選択したハイブリッド接続の追加] をクリックします。

Screenshot of Hybrid Connection portal.

新しいハイブリッド接続を作成するには、[ハイブリッド接続の新規作成] を選択します。 以下を指定します。

  • ハイブリッド接続の名前。
  • エンドポイント ホストの名前。
  • エンドポイント ポート。
  • 使用する Service Bus 名前空間。

Screenshot of Create new hybrid connection dialog box.

すべてのハイブリッド接続は Service Bus 名前空間に関連付けられており、各 Service Bus 名前空間は Azure リージョンに存在します。 ネットワーク待機時間の誘発を避けるためには、できるだけアプリと同じリージョンの Service Bus 名前空間を使用することが重要です。

ハイブリッド接続をアプリから削除するには、ハイブリッド接続を右クリックし、[切断] を選択します。

ハイブリッド接続をアプリに追加すると、ハイブリッド接続を選択するだけで詳細情報を表示できます。

Screenshot of Hybrid connections details.

Azure Relay ポータルでのハイブリッド接続の作成

アプリ内からポータルを操作するだけでなく、Azure Relay ポータルからハイブリッド接続を作成することもできます。 ハイブリッド接続を App Service で使用するには、以下が必要です。

  • クライアント承認を要求する。
  • 値として host:port の組み合わせを含むメタデータ項目と名前付きエンドポイントがあります。

ハイブリッド接続と App Service プラン

App Service ハイブリッド接続は、Basic、Standard、Premium、および Isolated の価格 SKU でのみ利用できます。 ハイブリッド接続は、Consumption プランの関数アプリでは使用できません。 料金プランに関連付けられている制限があります。

料金プラン プランで使用できるハイブリッド接続の数
Basic プランあたり 5
Standard プランあたり 25
Premium (v1 から v3) アプリあたり 220
Isolated (v1 から v2) アプリあたり 220

App Service プランの UI には、使用されているハイブリッド接続の数と、それを使用するアプリが表示されます。

Screenshot of App Service plan properties.

[ハイブリッド接続] を選択して詳細を表示します。 アプリ ビューに表示されるすべての情報を表示できます。 そのハイブリッド接続を使用している同じプラン内の他のアプリの数も確認できます。

App Service プランで使用できるハイブリッド接続エンドポイントの数には制限があります。 ただし、各ハイブリッド接続は、そのプラン内の無制限の数のアプリで使用できます。 たとえば、1 つの App Service プラン内の 5 つの異なるアプリによって使用されている 1 つのハイブリッド接続は、1 つのハイブリッド接続とみなされます。

価格

App Service プラン SKU の要件に加えて、ハイブリッド接続の使用には追加のコストがかかります。 ハイブリッド接続によって使用されるリスナーごとに料金が発生します。 リスナーはハイブリッド接続マネージャーです。 5 個のハイブリッド接続が 2 つのハイブリッド接続マネージャーによってサポートされている場合、リスナーは 10 になります。 詳細については、「Service Bus の価格」をご覧ください。

Hybrid Connection Manager の使用

ハイブリッド接続を機能させるためには、ハイブリッド接続エンドポイントをホストしているネットワークにリレー エージェントを作成する必要があります。 そのリレー エージェントは、Hybrid Connection Manager (HCM) と呼ばれます。 Azure portal にあるアプリから HCM をダウンロードするには、 [ネットワーク]>[ハイブリッド接続エンドポイントの構成] を選択します。

このツールは、Windows Server 2012 以降のバージョンの Windows で実行されます。 HCM はサービスとして実行し、送信のためにポート 443 で Azure Relay に接続します。

HCM をインストールしたら、HybridConnectionManagerUi.exe を実行して、このツールの UI を使用できます。 このファイルは、Hybrid Connection Manager のインストール ディレクトリにあります。 Windows 10 では、検索ボックスにハイブリッド接続マネージャー UIと入力して検索できます。

Screenshot of Hybrid Connection Manager.

HCM UI を起動すると、HCM のこのインスタンスに構成されているすべてのハイブリッド接続の一覧が最初に表示されます。 変更を加える場合は、まず Azure で認証します。

1 つまたは複数のハイブリッド接続を HCM に追加するには:

  1. HCM UI を起動します。

  2. [Add a new Hybrid Connection](新規ハイブリッド接続の追加) を選択します。 Screenshot of Configure New Hybrid Connections.

  3. お使いのサブスクリプションで使用できるハイブリッド接続を取得する Azure アカウントでサインインします。 HCM では、この手順を超えて Azure アカウントは引き続き使用されません。

  4. サブスクリプションを選択します。

  5. HCM をリレーするハイブリッド接続を選択します。 Screenshot of Hybrid Connections.

  6. [保存] を選択します。

追加したハイブリッド接続が表示されます。 構成済みのハイブリッド接続を選択すると詳細を表示することもできます。

Screenshot of Hybrid Connection Details.

構成済みのハイブリッド接続を HCM でサポートするには、以下が必要です。

  • ポート 443 経由の Azure への TCP アクセス
  • ハイブリッド接続エンドポイントに対する TCP アクセス
  • エンドポイント ホストおよび Service Bus 名前空間で DNS 参照を実行する機能。 言い換えると、Azure Relay 接続のホスト名は、HCM をホストしているマシンから解決できる必要があります。

Note

Azure Relay は、Web ソケットを使用して接続します。 この機能は、Windows Server 2012 以降でのみご利用いただけます。 このため、ハイブリッド接続マネージャーは、Windows Server 2012 より前のバージョンではサポートされていません。

冗長性

HCM はそれぞれ、複数のハイブリッド接続をサポートできます。 また、特定のハイブリッド接続については、複数の HCM がサポートすることができます。 既定の動作は、特定のエンドポイントに対して構成された HCM でのトラフィックの転送です。 ネットワークからのハイブリッド接続の高可用性が必要な場合は、複数の HCM を別個のコンピューターで実行します。 リレー サービスがトラフィックを HCM に分散するために使用する負荷分散アルゴリズムでは、割り当てがランダムに行われます。

ハイブリッド接続の手動追加

サブスクリプションを持っていないユーザーが特定のハイブリッド接続に対する HCM インスタンスをホストするには、ハイブリッド接続用のゲートウェイ接続文字列を共有します。 Azure portal の [ハイブリッド接続プロパティ] でゲートウェイ接続文字列を確認できます。 この文字列を使用するには、HCM で [手動で入力] ボタンをクリックし、ゲートウェイ接続文字列を貼り付けます。

Manually add a Hybrid Connection.

アップグレード

ハイブリッド接続マネージャーは、問題の修正や機能強化のために定期的に更新されます。 アップグレードがリリースされると、HCM UI にポップアップが表示されます。 アップグレードを適用すると、変更が適用され、HCM が再起動されます。

ハイブリッド接続をプログラミングによってアプリに追加する

ハイブリッド接続は、Azure CLI でサポートされています。 提供されているコマンドは、アプリおよび App Service プランの両方のレベルで動作します。 アプリ レベルのコマンドは次のとおりです。

az webapp hybrid-connection

Group
    az webapp hybrid-connection : Methods that list, add and remove hybrid-connections from webapps.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    add    : Add a hybrid-connection to a webapp.
    list   : List the hybrid-connections on a webapp.
    remove : Remove a hybrid-connection from a webapp.

App Service プラン コマンドを使用すると、特定のハイブリッド接続で使用されるキーを設定できます。 各ハイブリッド接続では、プライマリとセカンダリの 2 つのキーが設定されます。 次のコマンドにより、プライマリ キーとセカンダリ キーのどちらを使用するかを選択できます。 このオプションを使用すると、キーを定期的に再生成する場合にキーを切り替えることができます。

az appservice hybrid-connection --help

Group
    az appservice hybrid-connection : A method that sets the key a hybrid-connection uses.
        This command group is in preview. It may be changed/removed in a future release.
Commands:
    set-key : Set the key that all apps in an appservice plan use to connect to the hybrid-
                connections in that appservice plan.

ハイブリッド接続をセキュリティで保護する

基になる Azure Service Bus Relay に対する十分なアクセス許可を持つユーザーは、既存のハイブリッド接続を他の App Service Web Apps に追加できます。 つまり、他のユーザーが同じハイブリッド接続を再利用できないようにする必要がある場合 (たとえば、ターゲット リソースが、承認されていないアクセスを防ぐために他のセキュリティ対策が適用されていないサービスである場合)、Azure Service Bus Relay へのアクセスをロックダウンする必要があります。

Reader Relay にアクセスできるユーザーは、Azure portal で Web アプリに追加しようとしたときにハイブリッド接続を確認できますが、リレー接続の確立に使用される接続文字列を取得するアクセス許可がないため、追加できません。 ハイブリッド接続を正常に追加するには、listKeys アクセス許可 (Microsoft.Relay/namespaces/hybridConnections/authorizationRules/listKeys/action) が必要です。 Relay でこのアクセス許可を含むロールまたはその他のロールを使用すると、ユーザーは Contributor ハイブリッド接続を使用して、独自の Web アプリに追加できます。

ハイブリッド接続を管理する

ハイブリッド接続のエンドポイント ホストまたはポートを変更する必要がある場合は、次の手順に従います。

  1. 接続を選択し、ハイブリッド接続の詳細ウィンドウの左上にある [削除] を選択して、ローカル マシンのハイブリッド接続マネージャーからハイブリッド接続を削除します。
  2. App Service の [ネットワーク] ページにある [ハイブリッド接続] に移動して、App Service からハイブリッド接続を切断します。
  3. 更新する必要があるエンドポイントのリレーに移動し、左側のナビゲーション メニューの [エンティティ] から [ハイブリッド接続] を選択します。
  4. 更新するハイブリッド接続を選択して、左側のナビゲーション メニューの [設定] から [プロパティ] を選択します。
  5. 変更を行い、上部にある [変更を保存する] を選択します。
  6. App Service の [ハイブリッド接続] 設定に戻り、ハイブリッド接続を再度追加します。 エンドポイントが意図した通りにアップデートされていることを確認します。 ハイブリッド接続がリストに表示されていない場合は、5 から 10 分経ってから最新の情報に更新します。
  7. ローカル コンピューターのハイブリッド接続マネージャーに戻り、接続を再度追加します。

トラブルシューティング

"接続済み" 状態の場合は、少なくとも 1 つの HCM がそのハイブリッド接続で構成され、Azure にアクセスできます。 ハイブリッド接続の状態が [接続済み] にならない場合、Azure にアクセスできる HCM でハイブリッド接続が構成されていません。 HCM に [接続されていません] と表示されている場合は、いくつかのチェックがあります。

  • ホストに、ポート 443 での Azure への発信アクセスはありますか? PowerShell コマンド Test-NetConnection Destination -P Port を使用して、HCM ホストからテストすることができます。

  • HCM が正しくない状態である可能性はありますか? ‘Azure ハイブリッド接続マネージャー サービス' ローカル サービスを再起動してみてください。

  • 競合するソフトウェアがインストールされていますか? ハイブリッド接続マネージャーは、Biztalk ハイブリッド接続マネージャー または Service Bus for Windows Server と共存できません。 HCM をインストールするときは、これらのパッケージのすべてのバージョンを最初に削除する必要があります。

  • HCM ホストと Azure の間にファイアウォールがありますか? その場合は、Service Bus エンドポイント URL ハイブリッド接続にサービスを提供する Service Bus ゲートウェイの両方への送信アクセスを許可する必要があります。

    • Service Bus エンドポイントの URL は、ハイブリッド接続マネージャー UI にあります。

    Screenshot of Hybrid Connection Service Bus endpoint.

    • Service Bus ゲートウェイは、要求をハイブリッド接続に受け入れ、Azure Relay を介して渡すリソースです。 ゲートウェイの 128 個すべてを許可リストに登録する必要があります。 ゲートウェイは G#-prod-[stamp]-sb.servicebus.windows.net の形式です。"#" は 0 から 127 までの数値で、"stamp" は Service Bus エンドポイントが存在する Azure データ センター内のインスタンスの名前です。
      • ワイルドカードを使用できる場合は、許可リスト "*.servicebus.windows.net" を使用できます。

      • ワイルドカードを使用できない場合は、128 個のゲートウェイすべてを許可リストに登録する必要があります。

        スタンプは、Service Bus エンドポイント URL の "nslookup" を使用して確認できます。

        Screenshot of terminal showing where to find the stamp name for the Service Bus.

        この例では、スタンプは "sn3-010" です。 Service Bus ゲートウェイを許可リストするには、次のエントリが必要です。

        G0-prod-sn3-010-sb.servicebus.windows.net
        G1-prod-sn3-010-sb.servicebus.windows.net
        G2-prod-sn3-010-sb.servicebus.windows.net
        G3-prod-sn3-010-sb.servicebus.windows.net
        ...
        G126-prod-sn3-010-sb.servicebus.windows.net
        G127-prod-sn3-010-sb.servicebus.windows.net

状態が [接続済み] と表示されているが、アプリがエンドポイントに到達できない場合は、次の操作を行います。

  • ハイブリッド接続で DNS 名を使用していることを確認します。 IP アドレスを使用する場合、必要なクライアント DNS 参照が発生しない可能性があります。 Web アプリで実行されているクライアントが DNS 参照を実行しない場合、ハイブリッド接続は機能しません。
  • ハイブリッド接続で使用されている DNS 名が HCM ホストから解決できることを確認します。 nslookup EndpointDNSname を使用して解決を確認します。ここで、EndpointDNSname は、ハイブリッド接続定義で使用されているものと完全に一致します。
  • PowerShell コマンド Test-NetConnection EndpointDNSname -P ポートを使用して HCM ホストからエンドポイントへのアクセスをテストします。HCM ホストからエンドポイントに到達できない場合は、宛先ホスト上のホストベースのファイアウォールを含む 2 つのホスト間のファイアウォールをチェックします。
  • App Service on Linux を使用している場合は、エンドポイント ホストとして "localhost" を使用していないことを確認してください。 ローカル コンピューター上のリソースとの接続を作成する場合は、代わりにマシン名を使用してください。

App Service では、Advanced Tools (Kudu) コンソールから tcpping コマンドライン ツールを呼び出すことができます。 このツールは、TCP エンドポイントにアクセスできるかどうかを通知できますが、ハイブリッド接続エンドポイントにアクセスできるかどうは通知しません。 コンソールで、ハイブリッド接続エンドポイントに対してツールを使用している場合は、host:port の組み合わせが使用されていることのみを確認できます。

お使いのエンドポイント用のコマンドライン クライアントがある場合は、アプリ コンソールから接続をテストできます。 たとえば、curl を使用して、Web サーバーのエンドポイントへのアクセスをテストできます。