Azure SignalR Service のプライベート エンドポイントを使用する
Azure SignalR Service のプライベート エンドポイントを使用すると、仮想ネットワーク (VNet) 上のクライアントはプライベート リンクを介してデータに安全にアクセスできるようになります。 プライベート エンドポイントでは、Azure SignalR サービスの VNet アドレス空間からの IP アドレスが使用されます。 VNet 上のクライアントと Azure SignalR Service 間のネットワーク トラフィックが、Microsoft バックボーン ネットワーク上のプライベート リンク経由で送受信され、パブリック インターネットへの露出を避けることができます。
Azure SignalR Service のプライベート エンドポイントを使用すると、次のことが可能になります。
- ネットワーク アクセス制御を使用して Azure SignalR Service をセキュリティで保護し、Azure SignalR Service に対するすべての接続をパブリック エンドポイント上でブロックします。
- VNnet からのデータの流出をブロックできるようにすることで、仮想ネットワーク (VNet) のセキュリティを強化します。
- VPN または ExpressRoutes をプライベート ピアリングと共に使用して、VNet に接続するオンプレミス ネットワークから Azure SignalR Service に安全に接続します。
この記事では、Azure SignalR Service にプライベート エンドポイントを使用する方法について説明します。
概念の概要
プライベート エンドポイントは、仮想ネットワーク (VNet) 内の Azure サービス用の特別なネットワーク インターフェイスです。 Azure SignalR サービスのプライベート エンドポイントを作成すると、VNet 上のクライアントとサービス間の安全な接続が提供されます。 プライベート エンドポイントには、VNet の IP アドレス範囲から IP アドレスが割り当てられます。 プライベート エンドポイントと Azure SignalR Service 間の接続には、セキュリティで保護されたプライベート リンクが使用されます。
VNet 内のアプリケーションは、プライベート エンドポイント経由で Azure SignalR Service にシームレスに接続できます。その際、使用される接続文字列と承認メカニズムは、それを経由しない場合と同じになります。 プライベート エンドポイントは、Azure SignalR Service でサポートされているすべてのプロトコル (REST API を含む) で使用できます。
お使いの VNet で Azure SignalR サービスのプライベート エンドポイントを作成すると、承認を得るために同意要求が Azure SignalR Service の所有者に送信されます。 プライベート エンドポイントの作成を要求しているユーザーが Azure SignalR サービスの所有者でもある場合、この同意要求は自動的に承認されます。
Azure SignalR Service の所有者は、Azure portal で Azure SignalR Service の [プライベート エンドポイント] タブを使用して、同意要求とプライベート エンドポイントを管理できます。
ヒント
Azure SignalR サービスへのアクセスを、プライベート エンドポイント経由のみに制限する場合は、パブリック エンドポイント経由のアクセスを拒否または制御するようにネットワーク アクセス制御を構成します。
プライベート エンドポイントへの接続
プライベート エンドポイントを使用する VNet 上のクライアントは、パブリック エンドポイントに接続するクライアントと同じ接続文字列を、Azure SignalR Service に対して使用する必要があります。 プライベート リンク経由で VNet から Azure SignalR Service への接続を自動的にルーティングするために、DNS 解決に依存しています。
重要
プライベート エンドポイントを利用しない場合と同じ接続文字列を使用して、Azure SignalR Service に接続します。 privatelink
サブドメイン URL を使用して、Azure SignalR Service に接続しないでください。
既定では、VNet に接続されているプライベート DNS ゾーンが作成され、プライベート エンドポイントに必要な更新も行われます。 ただし、独自の DNS サーバーを使用している場合は、DNS 構成に他の変更が必要になることがあります。 プライベート エンドポイントの DNS の変更に関するセクションでは、プライベート エンドポイントに必要な更新について説明しています。
プライベート エンドポイントの DNS の変更
プライベート エンドポイントを作成すると、Azure SignalR Service の DNS CNAME リソース レコードは、プレフィックス privatelink
を含むサブドメイン内のエイリアスに更新されます。 既定で、privatelink
サブドメインに対応するプライベート DNS ゾーンも作成されます。これには、プライベート エンドポイントの DNS A リソース レコードが含まれます。
プライベート エンドポイントを含む VNet の外部から Azure SignalR Service ドメイン名を解決すると、Azure SignalR サービスのパブリック エンドポイントに解決されます。 プライベート エンドポイントをホストしている VNet から解決されると、ドメイン名はプライベート エンドポイントの IP アドレスに解決されます。
図の例では、プライベート エンドポイントをホストしている VNet の外部から解決された場合、Azure SignalR Service の 'foobar' の DNS リソース レコードは次のようになります。
名前 | Type | 値 |
---|---|---|
foobar.service.signalr.net |
CNAME | foobar.privatelink.service.signalr.net |
foobar.privatelink.service.signalr.net |
A | <Azure SignalR Service のパブリック IP アドレス> |
既に説明したように、ネットワーク アクセス制御を使用して、VNet の外部のクライアントによるパブリック エンドポイント経由のアクセスを拒否または制御することができます。
'foobar' の DNS リソース レコードは、プライベート エンドポイントをホストしている VNet 内のクライアントによって解決されると、次のようになります。
名前 | Type | 値 |
---|---|---|
foobar.service.signalr.net |
CNAME | foobar.privatelink.service.signalr.net |
foobar.privatelink.service.signalr.net |
A | 10.1.1.5 |
この方法を使用すると、プライベート エンドポイントをホストしている VNet 上のクライアントと、VNet の外部のクライアントから同じ接続文字列を使用して Azure SignalR Service にアクセスできます。
ネットワーク上でカスタム DNS サーバーを使用している場合、クライアントでは、Azure SignalR Service エンドポイントの FQDN をプライベート エンドポイントの IP アドレスに解決できる必要があります。 プライベート リンク サブドメインを VNet のプライベート DNS ゾーンに委任するように DNS サーバーを構成するか、プライベート エンドポイントの IP アドレスを使用して foobar.privatelink.service.signalr.net
の A レコードを構成する必要があります。
ヒント
カスタムまたはオンプレミスの DNS サーバーを使用している場合は、privatelink
サブドメインの Azure SignalR Service 名をプライベート エンドポイントの IP アドレスに解決するように、DNS サーバーを構成する必要があります。 これを行うには、VNet のプライベート DNS ゾーンに privatelink
サブドメインを委任するか、DNS サーバー上で DNS ゾーンを構成し、DNS A レコードを追加します。
Azure SignalR Service のプライベート エンドポイントに推奨される DNS ゾーン名は、privatelink.service.signalr.net
です。
プライベート エンドポイントをサポートするように独自の DNS サーバーを構成する方法の詳細については、次の記事を参照してください。
プライベート エンドポイントの作成
Azure portal 上で、新しい Azure SignalR サービスと共にプライベート エンドポイントを作成します
新しい Azure SignalR サービスを作成する場合は、[ネットワーク] タブを選択します。接続方法として [プライベート エンドポイント] を選択します。
[追加] を選択します。 新しいプライベート エンドポイントのサブスクリプション、リソース グループ、場所、名前を入力します。 仮想ネットワークとサブネットを選択します。
[Review + create](レビュー + 作成) を選択します。
Azure portal 上で、既存の Azure SignalR サービスのプライベート エンドポイントを作成します
Azure SignalR Service に移動します。
[プライベート エンドポイント接続] という設定メニューを選択します。
上部にある [+ プライベート エンドポイント] ボタンを選択します。
新しいプライベート エンドポイントのサブスクリプション、リソース グループ、リソース名、およびリージョンを入力します。
ターゲットの Azure SignalR Service リソースを選択します。
ターゲットの仮想ネットワークを選択します
[Review + create](レビュー + 作成) を選択します。
Azure CLI を使用してプライベート エンドポイントを作成する
- Azure CLI にログイン
az login
- Azure サブスクリプションを設定する
az account set --subscription {AZURE SUBSCRIPTION ID}
- 新しいリソース グループを作成する
az group create -n {RG} -l {AZURE REGION}
- Microsoft.SignalRService をプロバイダーとして登録します
az provider register -n Microsoft.SignalRService
- 新しい Azure SignalR サービスを作成します
az signalr create --name {NAME} --resource-group {RG} --location {AZURE REGION} --sku Standard_S1
- 仮想ネットワークを作成します
az network vnet create --resource-group {RG} --name {vNet NAME} --location {AZURE REGION}
- サブネットの追加
az network vnet subnet create --resource-group {RG} --vnet-name {vNet NAME} --name {subnet NAME} --address-prefixes {addressPrefix}
- 仮想ネットワーク ポリシーを無効にする
az network vnet subnet update --name {subnet NAME} --resource-group {RG} --vnet-name {vNet NAME} --disable-private-endpoint-network-policies true
- プライベート DNS ゾーンを追加する
az network private-dns zone create --resource-group {RG} --name privatelink.service.signalr.net
- 仮想ネットワークにプライベート DNS ゾーンをリンクする
az network private-dns link vnet create --resource-group {RG} --virtual-network {vNet NAME} --zone-name privatelink.service.signalr.net --name {dnsZoneLinkName} --registration-enabled true
- プライベート エンドポイントを作成する (自動的に承認する)
az network private-endpoint create --resource-group {RG} --vnet-name {vNet NAME} --subnet {subnet NAME} --name {Private Endpoint Name} --private-connection-resource-id "/subscriptions/{AZURE SUBSCRIPTION ID}/resourceGroups/{RG}/providers/Microsoft.SignalRService/SignalR/{NAME}" --group-ids signalr --connection-name {Private Link Connection Name} --location {AZURE REGION}
- プライベート エンドポイントを作成する (承認を手動で要求する)
az network private-endpoint create --resource-group {RG} --vnet-name {vNet NAME} --subnet {subnet NAME} --name {Private Endpoint Name} --private-connection-resource-id "/subscriptions/{AZURE SUBSCRIPTION ID}/resourceGroups/{RG}/providers/Microsoft.SignalRService/SignalR/{NAME}" --group-ids signalr --connection-name {Private Link Connection Name} --location {AZURE REGION} --manual-request
- 接続状態を表示する
az network private-endpoint show --resource-group {RG} --name {Private Endpoint Name}
価格
料金の詳細については、「Azure Private Link の料金」をご覧ください。
既知の問題
Azure SignalR Service のプライベート エンドポイントに関する以下の既知の問題に注意してください
Free レベル
Free レベルの Azure SignalR Service のプライベート エンドポイントを作成することはできません。
プライベート エンドポイントを含む VNet 内のクライアントに対するアクセス制約
既存のプライベート エンドポイントを含む VNet 内のクライアントには、プライベート エンドポイントを保持している他の Azure SignalR Service インスタンスにアクセスするときに、制約があります。 次に例を示します。
- VNet N1 に、Azure SignalR Service インスタンス S1 のプライベート エンドポイントがある場合
- Azure SignalR Service S2 に VNet N2 でのプライベート エンドポイントがある場合、VNet N1 のクライアントは、プライベート エンドポイントを使用して Azure SignalR Service S2 にもアクセスする必要があります。
- Azure SignalR Service S2 にプライベート エンドポイントがない場合、VNet N1 のクライアントは、プライベート エンドポイントを使用せずにそのアカウントでの Azure SignalR Service にアクセスできます。
この制約は、Azure SignalR Service S2 によってプライベート エンドポイントが作成されるときに行われた DNS 変更の結果です。