次の方法で共有


Azure App Service ハイブリッド接続

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

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

この機能によって、リソースが TCP エンドポイントである限り、それがどのオペレーティング システム上にあろうとアプリからアクセスできるようになります。 ハイブリッド接続機能では、アプリケーション プロトコルやアクセス先は認識されません。 それは、ネットワーク アクセスを提供するだけです。

しくみ

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

ハイブリッド接続のフローの概要図。

アプリが DNS 要求を行い、その要求が構成済みのハイブリッド接続エンドポイントと一致した場合、発信 TCP トラフィックがハイブリッド接続を介してリダイレクトされます。

メモ

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

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

ハイブリッド接続機能には、次のようなさまざまなメリットがあります:

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

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

ハイブリッド接続では次のようなことができません:

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

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

Azure portal でハイブリッド接続を作成するには:

  1. Azure portal で、お使いのアプリを選択します。 [設定]>[ネットワーク] の順に選択します。

  2. [ハイブリッド接続]の横にある [未構成] リンクを選択します。 ここで、アプリ用に構成されているハイブリッド接続を確認できます。

    接続を追加および管理できるハイブリッド接続の一覧のスクリーンショット。

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

    接続を追加できる [ハイブリッド接続] ページのスクリーンショット。

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

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

[ハイブリッド接続の新規作成] ダイアログ ボックスのスクリーンショット。

すべてのハイブリッド接続は、Service Bus 名前空間に関連付けられています。 それぞれの Service Bus 名前空間は、Azure リージョンにあります。 ネットワークによる待機時間を回避するには、アプリと同じリージョンの Service Bus 名前空間を使用してください。

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

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

ハイブリッド接続の詳細のスクリーンショット。

ARM/Bicep でハイブリッド接続を作成する

ARM/Bicep テンプレートを使用してハイブリッド接続を作成するには、既存のテンプレートに次のリソースを追加します。 有効なハイブリッド接続を使用するには、 userMetadata を含める必要があります。 userMetadataを含めない場合、ハイブリッド接続は機能しません。 Azure portal でハイブリッド接続を作成すると、このプロパティが自動的に入力されます。

userMetadata プロパティは、[{"key": "endpoint", "value : "host:port"}]形式の JSON 配列の文字列表現である必要があります。 次の Bicep テンプレートには、このプロパティのサンプルがあります。 詳細については、「 Microsoft.Relay 名前空間/hybridConnections」を参照してください。

resource hybridConnection 'Microsoft.Relay/namespaces/hybridConnections@2024-01-01' = {
  parent: relayNamespace
  name: hybridConnectionName
  properties: {
    requiresClientAuthorization: true
    userMetadata: '[{"key": "endpoint", "value : "<HOST>:<PORT>"}]'
  }
}

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

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

  • クライアント承認を要求する。
  • メタデータ項目と、host:port の組み合わせを値として含む名前の付いたエンドポイントを準備しておいてください。

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

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

料金プラン プランで使用できるハイブリッド接続の数
ベーシック プランあたり 5
スタンダード プランあたり 25
Premium (v1 から v3) アプリあたり 220
IsolatedV2 アプリあたり 220

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

App Service プラン プロパティのスクリーン ショット。

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

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

価格

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

ハイブリッド接続マネージャー

ハイブリッド接続を機能させるためには、ハイブリッド接続エンドポイントをホストしているネットワークにリレー エージェントを作成する必要があります。 そのリレー エージェントは、Hybrid Connection Manager (HCM) と呼ばれます。 ハイブリッド接続マネージャーをダウンロードするには、クライアントの指示に従います。

このツールは、Windows と Linux の両方で実行されます。 Windows では、ハイブリッド接続マネージャーには Windows Server 2012 以降が必要です。 ハイブリッド接続マネージャーはサービスとして実行され、ポート 443 で Azure Relay に送信接続されます。

インストール手順

Windows にハイブリッド接続マネージャーをインストールするには、MSI パッケージをダウンロードし、インストール手順に従います。

メモ

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

構成されているハイブリッド接続をサポートするには、ハイブリッド接続マネージャーで次のものが必要です。

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

ハイブリッド接続マネージャー GUI の始め方

ハイブリッド接続マネージャーをインストールした後、Windows で検索ボックスで ハイブリッド接続マネージャー GUI を 検索します。

ハイブリッド接続マネージャーのスクリーンショット。

ハイブリッド接続マネージャー GUI を起動すると、最初に表示されるのが、ハイブリッド接続マネージャーのこのインスタンスで構成されているすべてのハイブリッド接続の一覧を示す表です。

ハイブリッド接続マネージャー GUI に 1 つ以上のハイブリッド接続を追加するには:

  1. ハイブリッド接続マネージャー GUI を起動します。
  2. [+新規] を選択します。
  3. [Azure で選択] を選択します。
  4. お使いのサブスクリプションで使用できるハイブリッド接続を取得する Azure アカウントでサインインします。 ハイブリッド接続マネージャーは、この手順を超えて Azure アカウントを引き続き使用しません。
  5. サブスクリプションを選択します。
  6. ハイブリッド接続マネージャーで中継するハイブリッド接続を選択します。
  7. を選択してを作成します。

追加したハイブリッド接続が表示されます。

ハイブリッド接続マネージャーに追加されたハイブリッド接続のスクリーンショット。

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

ハイブリッド接続の詳細のスクリーンショット。

ハイブリッド接続マネージャー CLI の入門

Windows では、ハイブリッド接続マネージャー CLI を検索して開くことで 、ハイブリッド接続マネージャー CLI を使用できます。

Azure サブスクリプションとハイブリッド接続の詳細を表示できる Hybrid Connection Manager CLI で対話型モードを使用するには、Azure CLI をインストールしてサインインする必要があります。 インストール手順については、「 Azure CLI をインストールする方法 」を参照し、クライアントに適したオプションを選択します。 インストールが完了したら、 az login を実行し、指示に従ってサインインを完了します。

ハイブリッド接続マネージャー CLI を起動すると、 hcm list を実行して、既に追加されているハイブリッド接続を確認できます。

ハイブリッド接続マネージャー CLI にハイブリッド接続を追加するには:

  1. ハイブリッド接続マネージャー CLI を起動します。

  2. hcm addを実行し、Azure への認証が完了するまで待ちます。 Azure CLI をインストールしてログインしていない場合は、対話型モードを使用するために最初にこの手順を完了する必要があります。 Azure CLI をインストールしない場合は、CLI を使用して ハイブリッド接続を手動で追加する手順に従います。

    CLI を使用してハイブリッド接続を追加するスクリーンショット。

  3. サブスクリプションを選択します。 ハイブリッド接続マネージャーは、そのサブスクリプション内のすべてのハイブリッド接続を取得します。 この手順は、完了するまでに最大 1 分かかる場合があります。

  4. ハイブリッド接続マネージャーで中継するハイブリッド接続を選択します。

hcm listを実行して、追加したハイブリッド接続を確認します。

hcm show コマンドを使用して、特定のハイブリッド接続の詳細を表示することもできます。

CLI のハイブリッド接続の詳細のスクリーンショット。

冗長性

各ハイブリッド接続マネージャーは、複数のハイブリッド接続をサポートできます。 複数のハイブリッド接続マネージャーは、任意のハイブリッド接続をサポートできます。 既定の動作では、特定のエンドポイントに対して構成されたハイブリッド接続マネージャー間でトラフィックをルーティングします。 ネットワークからのハイブリッド接続で高可用性が必要な場合は、別のマシンで複数のハイブリッド接続マネージャーを実行します。 ハイブリッド接続マネージャーにトラフィックを分散するために Relay サービスによって使用される負荷分散アルゴリズムは、ランダムな割り当てです。

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

サブスクリプション外のユーザーが特定のハイブリッド接続のハイブリッド接続マネージャー インスタンスをホストできるようにするには、ハイブリッド接続のゲートウェイ接続文字列を共有します。 ゲートウェイ接続文字列は、 Azure portal の App Service のハイブリッド接続プロパティで確認できます。 ゲートウェイ接続文字列は、 Endpoint=sb://[NAMESPACE].servicebus.windows.net/;SharedAccessKeyName=defaultListener;SharedAccessKey=[KEY];EntityPath=[HYBRID-CONNECTION-NAME]形式です。

Azure portal のハイブリッド接続ゲートウェイ接続文字列のスクリーンショット。

ハイブリッド接続マネージャー GUI でその文字列を使用するには、[ + 新規 ] を選択し、[ 接続文字列を使用] を選択し、ゲートウェイ接続文字列を貼り付けます。

ハイブリッド接続を手動で追加するダイアログ ボックスのスクリーンショット。

ハイブリッド接続マネージャー CLI でその文字列を使用するには、接続文字列またはハイブリッド接続リソースの詳細を使用して hcm add を実行します。

ハイブリッド接続を手動で追加する方法を示す Hybrid Connection Manager CLI のスクリーンショット。

アップグレード

ハイブリッド接続マネージャーは、問題の修正や機能強化のために定期的に更新されます。 アップグレードがリリースされると、起動時にハイブリッド接続マネージャー GUI にダイアログ ボックスが表示されます。 Hybrid Connection Manager CLI で使用可能なアップグレードを確認するには、 hcm versionを実行します。 アップグレードは MSI インストーラーを使用して行う必要があり、CLI を使用して行うことはできません。 アップグレードを適用すると、変更が適用され、ハイブリッド接続マネージャーが再起動されます。

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

ハイブリッド接続は、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 へのアクセスをロックダウンします。 この状況は、ターゲット リソースが、承認されていないアクセスを防ぐための他のセキュリティ対策が適用されていないサービスである場合に発生する可能性があります。

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

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

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

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

トラブルシューティング

[接続済み] の状態は、少なくとも 1 つのハイブリッド接続マネージャーがそのハイブリッド接続で構成されており、Azure に接続できることを意味します。 ハイブリッド接続の状態が [ 接続済み] と表示されない場合、ハイブリッド接続は、Azure にアクセスできるハイブリッド接続マネージャーで構成されていません。 ハイブリッド接続マネージャーに [未接続] と表示されている場合は、次の点を確認する必要があります。

  • ホストに、ポート 443 での Azure への発信アクセスはありますか? PowerShell コマンド Test-NetConnection Destination -P Portを使用して、ハイブリッド接続マネージャー ホストからテストできます。

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

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

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

    • Service Bus エンドポイントの URL は、ハイブリッド接続マネージャー GUI で確認できます。

      ハイブリッド接続 Service Bus エンドポイントのスクリーンショット。

    • Service Bus エンドポイントの URL は、ハイブリッド接続マネージャー CLI でも確認できます。

      CLI のハイブリッド接続 Service Bus エンドポイントのスクリーンショット。

    • Service Bus ゲートウェイは、要求をハイブリッド接続に受け入れ、Azure Relay を介して渡すリソースです。 すべてのゲートウェイを許可リストに載せる必要があります。 ゲートウェイの形式は、 G#-prod-[stamp]-sb.servicebus.windows.netGV#-prod-[stamp]-sb.servicebus.windows.netです。 番号記号 (#) は 0 から 127 までの数値で、 stamp は Service Bus エンドポイントが存在する Azure データ センター内のインスタンスの名前です。

    • ワイルドカードを使用できる場合は、*.servicebus.windows.net を許可リストに載せることができます。

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

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

      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
      GV0-prod-sn3-010-sb.servicebus.windows.net
      GV1-prod-sn3-010-sb.servicebus.windows.net
      GV2-prod-sn3-010-sb.servicebus.windows.net
      GV3-prod-sn3-010-sb.servicebus.windows.net
      ...
      GV126-prod-sn3-010-sb.servicebus.windows.net
      GV127-prod-sn3-010-sb.servicebus.windows.net

状態に [接続済み] と表示されているにもかかわらず、アプリがエンドポイントに接続できない場合は:

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

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

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

メモ

App Service ハイブリッド接続と App Service ハイブリッド接続マネージャーに固有の質問とサポートについては、 hcmsupport@service.microsoft.comにお問い合わせください。