Azure App Services からのハイブリッド接続
ハイブリッド接続は、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 トラフィックがハイブリッド接続を介してリダイレクトされます。
Note
つまり、ハイブリッド接続では常に DNS 名を使用するようにします。 一部のクライアント ソフトウェアは、エンドポイントで IP アドレスが使用されている場合は DNS 参照を実行しません。
App Service のハイブリッド接続のメリット
ハイブリッド接続機能には、次のようなさまざまなメリットがあります:
- アプリは、オンプレミスのシステムとサービスへセキュリティで保護されたアクセスを実行できます。
- インターネットにアクセス可能なエンドポイントは必要ありません。
- すばやく簡単に設定できます。 ゲートウェイは必要ありません。
- 各ハイブリッド接続が単一のホストとポートの組み合わせに照合されるため、セキュリティ面で優れています。
- 通常はファイアウォールを通過するための設定は必要はありません。 接続はすべて、標準的な Web ポート経由の発信です。
- ネットワーク レベルの機能であるため、アプリで使用される言語とエンドポイントで使用されるテクノロジに依存しません。
- 単一のアプリから複数のネットワークにアクセスするために使用できます。
- Windows アプリと Linux アプリ向けに GA でサポートされています。 ハイブリッド接続は、Windows カスタム コンテナーではサポートされていません。
ハイブリッド接続で実行できないこと
ハイブリッド接続では次のようなことができません:
- ドライブのマウント
- UDP の使用
- FTP パッシブ モードや拡張パッシブ モードなどの動的ポートを使用する TCP ベースのサービスへのアクセス
- LDAP のサポート (UDP が必要な場合があるため)
- Active Directory のサポート (App Service worker にドメイン参加できないため)。
アプリでハイブリッド接続を追加または作成する
ハイブリッド接続を作成するには:
Azure portal で、お使いのアプリを選択します。 [設定]>[ネットワーク] の順に選択します。
[ハイブリッド接続]の横にある [未構成] リンクを選択します。 ここで、アプリ用に構成されているハイブリッド接続を確認できます。
新しいハイブリッド接続を追加するには、[ハイブリッド接続の追加] を選択します。 既に作成したハイブリッド接続が一覧表示されます。 アプリに 1 つ以上のハイブリッド接続を追加するには、追加する接続をクリックし、[選択したハイブリッド接続の追加] をクリックします。
新しいハイブリッド接続を作成するには、[ハイブリッド接続の新規作成] を選択します。 次の値を指定します。
- ハイブリッド接続の名前。
- エンドポイント ホストの名前。
- エンドポイント ポート。
- 使用する Service Bus 名前空間。
すべてのハイブリッド接続は、Service Bus 名前空間に関連付けられています。 それぞれの Service Bus 名前空間は、Azure リージョンにあります。 ネットワークによる待機時間を回避するには、アプリと同じリージョンの Service Bus 名前空間を使用してください。
ハイブリッド接続をアプリから削除するには、ハイブリッド接続を右クリックし、[切断] を選択します。
ハイブリッド接続をアプリに追加すると、ハイブリッド接続を選択するだけで詳細情報を表示できます。
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 には、使用されているハイブリッド接続の数と、それを使用するアプリが表示されます。
[ハイブリッド接続] を選択して詳細を表示します。 アプリ ビューに表示されるすべての情報を表示できます。 そのハイブリッド接続を使用している同じプラン内の他のアプリの数も確認できます。
App Service プランで使用できるハイブリッド接続エンドポイントの数には制限があります。 各ハイブリッド接続は、そのプラン内の無制限の数のアプリで使用できます。 たとえば、1 つの App Service プラン内の 5 つの異なるアプリによって使用されている 1 つのハイブリッド接続は、1 つのハイブリッド接続とみなされます。
価格
App Service プランの SKU 要件が存在する以外に、ハイブリッド接続を使用するには追加コストがかかります。 ハイブリッド接続によって使用されるリスナーごとに料金が発生します。 リスナーはハイブリッド接続マネージャーです。 5 個のハイブリッド接続が 2 つのハイブリッド接続マネージャーによってサポートされている場合、リスナーは 10 になります。 詳細については、「Service Bus の価格」をご覧ください。
Hybrid Connection Manager の使用
ハイブリッド接続を機能させるためには、ハイブリッド接続エンドポイントをホストしているネットワークにリレー エージェントを作成する必要があります。 そのリレー エージェントは、Hybrid Connection Manager (HCM) と呼ばれます。 HCM をダウンロードするには:
- Azure portal で、お使いのアプリを選択します。 [設定]>[ネットワーク] の順に選択します。
- [ハイブリッド接続]の横にあるリンクを選択して、[ハイブリッド接続] ページを開きます。
- [接続マネージャーのダウンロード] を選択します。
このツールは、Windows Server 2012 以降のバージョンの Windows で実行されます。 HCM はサービスとして実行し、送信のためにポート 443 で Azure Relay に接続します。
HCM をインストールしたら、HybridConnectionManagerUi.exe を実行して、このツールの UI を使用できます。 このファイルは、Hybrid Connection Manager のインストール ディレクトリにあります。 Windows 10 では、検索ボックスにハイブリッド接続マネージャー UI と入力して検索することもできます。
HCM UI を起動すると、HCM のこのインスタンスに構成されているすべてのハイブリッド接続の一覧が最初に表示されます。 変更を加える場合は、まず Azure で認証します。
1 つまたは複数のハイブリッド接続を HCM に追加するには:
HCM UI を起動します。
[Add a new Hybrid Connection](新規ハイブリッド接続の追加) を選択します。
お使いのサブスクリプションで使用できるハイブリッド接続を取得する Azure アカウントでサインインします。 この手順以降、HCM では Azure アカウントの使用は続行されません。
サブスクリプションを選択します。
HCM をリレーするハイブリッド接続を選択します。
[保存] を選択します。
追加したハイブリッド接続が表示されます。 構成済みのハイブリッド接続を選択すると詳細を表示することもできます。
構成済みのハイブリッド接続を HCM でサポートするには、以下が必要です。
- ポート 443 経由の Azure への TCP アクセス
- ハイブリッド接続エンドポイントに対する TCP アクセス
- エンドポイント ホストおよび Service Bus 名前空間で DNS 参照を実行する機能。 言い換えると、Azure Relay 接続のホスト名は、HCM をホストしているマシンから解決できる必要があります。
Note
Azure Relay は、Web ソケットを使用して接続します。 この機能は、Windows Server 2012 以降でのみご利用いただけます。 このため、HCM は Windows Server 2012 より前のシステムではサポートされていません。
冗長性
HCM はそれぞれ、複数のハイブリッド接続をサポートできます。 複数の HCM で任意のハイブリッド接続をサポートできます。 既定の動作は、特定のエンドポイントに対して構成された HCM でのトラフィックの転送です。 ネットワークからのハイブリッド接続の高可用性が必要な場合は、複数の HCM を別個のコンピューターで実行します。 リレー サービスがトラフィックを HCM に分散するために使用する負荷分散アルゴリズムでは、割り当てがランダムに行われます。
ハイブリッド接続の手動追加
サブスクリプションを持っていないユーザーが特定のハイブリッド接続に対する HCM インスタンスをホストするには、ハイブリッド接続用のゲートウェイ接続文字列を共有します。 Azure portal の [ハイブリッド接続プロパティ] でゲートウェイ接続文字列を確認できます。 この文字列を使用するには、HCM で [手動で入力] ボタンをクリックし、ゲートウェイ接続文字列を貼り付けます。
アップグレード
ハイブリッド接続マネージャーは、問題の修正や機能強化のために定期的に更新されます。 アップグレードがリリースされると、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 へのアクセスをロックダウンします。 この状況は、ターゲット リソースが、承認されていないアクセスを防ぐための他のセキュリティ対策が適用されていないサービスである場合に発生する可能性があります。
Relay に対して Reader
アクセスできるユーザーは、Azure portal で Web アプリハイブリッド接続を追加しようとした場合、そのハイブリッド接続を確認できます。 リレー接続の確立に使用される接続文字列を取得するためのアクセス許可がないため、追加できません。 ハイブリッド接続を追加するには、listKeys
アクセス許可 (Microsoft.Relay/namespaces/hybridConnections/authorizationRules/listKeys/action
) が必要です。 Relay に対するこのアクセス許可を含む Contributor
ロールまたはその他のロールにより、ユーザーはハイブリッド接続を使用し、独自の Web Apps にそれを追加することが許可されます。
ハイブリッド接続を管理する
ハイブリッド接続のエンドポイント ホストまたはポートを変更する必要がある場合は、次の手順に従います:
- ハイブリッド接続マネージャーで、接続を選択して詳細ウィンドウを表示します。 [削除] を選択します。
- Azure portal で、お使いのアプリを選択します。 [設定]>[ネットワーク] の順に選択します。
- [ハイブリッド接続]の横にある [構成済み] リンクを選択します。
- [ハイブリッド接続]で、接続を右クリックし、[切断] を選択します。
- 更新する必要があるエンドポイントの Relay に移動します。 ナビゲーション メニューの [エンティティ] で、[エンティティ] の下にある [ハイブリッド接続] を選択します。
- [ハイブリッド接続] を選択します。 そのナビゲーション メニューの [設定] で、[プロパティ] を選択します。
- 変更を加え、[変更の保存] 選択します。
- App Service の [ハイブリッド接続] 設定に戻り、ハイブリッド接続を再度追加します。 エンドポイントが意図した通りにアップデートされていることを確認します。 ハイブリッド接続がリストに表示されていない場合は、5 から 10 分経ってから最新の情報に更新します。
- ローカル コンピューターのハイブリッド接続マネージャーに戻り、接続を再度追加します。
トラブルシューティング
[接続済み] 状態の場合は、少なくとも 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 にあります。
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 を使用して確認できます。
この例では、スタンプは
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 Port
を使用して、HCM ホストからエンドポイントへのアクセスをテストします。 HCM ホストからエンドポイントに到達できない場合は、宛先ホスト上のホストベースのファイアウォールを含めて、2 つのホスト間にファイアウォールがないか確認します。 - App Service on Linux を使用している場合は、エンドポイント ホストとして
localhost
を使用していないことを確認します。 ローカル コンピューター上のリソースとの接続を作成する場合は、代わりにマシン名を使用してください。
App Service では、Advanced Tools (Kudu) コンソールから tcpping コマンドライン ツールを呼び出すことができます。 このツールは、TCP エンドポイントにアクセスできるかどうかを通知できますが、ハイブリッド接続エンドポイントにアクセスできるかどうは通知しません。 コンソールで、ハイブリッド接続エンドポイントに対してツールを使用している場合は、host:port の組み合わせが使用されていることのみを確認できます。
お使いのエンドポイント用のコマンドライン クライアントがある場合は、アプリ コンソールから接続をテストできます。 たとえば、curl を使用して、Web サーバーのエンドポイントへのアクセスをテストできます。