プライベート エンドポイント経由での Azure Service Bus 名前空間へのアクセスを許可する

Azure Private Link サービスを使用すると、自分の仮想ネットワーク内のプライベート エンドポイント経由で、Azure サービス (Azure Service Bus、Azure Storage、Azure Cosmos DB など) と、Azure でホストされている顧客またはパートナー サービスにアクセスできます。

プライベート エンドポイントとは、Azure Private Link を使用するサービスにプライベートかつ安全に接続するネットワーク インターフェイスです。 プライベート エンドポイントは、ご自分の仮想ネットワークからのプライベート IP アドレスを使用して、サービスを実質的に仮想ネットワークに取り込みます。 サービスへのすべてのトラフィックをプライベート エンドポイント経由でルーティングできるため、ゲートウェイ、NAT デバイス、ExpressRoute または VPN 接続、パブリック IP アドレスは必要ありません。 仮想ネットワークとサービスの間のトラフィックは、Microsoft のバックボーン ネットワークを経由して、パブリック インターネットからの公開を排除します。 最高レベルの細分性でアクセスを制御しながら Azure リソースのインスタンスに接続できます。

詳細については、「Azure Private Link とは」を参照してください。

重要なポイント

  • この機能は、Azure Service Bus の Premium レベルでサポートされています。 Premium レベルの詳細については、「Service Bus の Premium および Standard メッセージング レベル」の記事を参照してください。

  • プライベート エンドポイントを実装すると、他の Azure サービスが Service Bus と対話するのを禁止できます。 例外として、プライベート エンドポイントが有効になっている場合でも、特定の信頼できるサービスからの Service Bus リソースへのアクセスを許可できます。 信頼できるサービスの一覧については、信頼できるサービスに関するセクションを参照してください。

    仮想ネットワーク上には、次の Microsoft サービスが必要です

    • Azure App Service
    • Azure Functions
  • ある仮想ネットワークの指定された IP アドレスまたはサブネットからのトラフィックのみを許可するには、名前空間に少なくとも 1 つの IP 規則または仮想ネットワーク規則を指定します。 IP 規則も仮想ネットワーク規則も指定しない場合は、パブリック インターネット経由で (アクセス キーを使用して) 名前空間にアクセスできます。

Azure portal を使用してプライベート エンドポイントを追加する

前提条件

Service Bus 名前空間を Azure Private Link と統合するには、次のエンティティまたはアクセス許可が必要です。

  • Service Bus 名前空間。
  • Azure 仮想ネットワーク。
  • 仮想ネットワーク内のサブネット。 既定のサブネットを使用できます。
  • Service Bus 名前空間と仮想ネットワークの両方に対する所有者または共同作成者のアクセス許可。

プライベート エンドポイントと仮想ネットワークは、同じリージョンに存在する必要があります。 ポータルを使用してプライベート エンドポイントのリージョンを選択すると、自動的にフィルター処理が行われ、そのリージョン内にある仮想ネットワークのみが表示されます。 ご利用の Service Bus 名前空間は、別のリージョンに配置することができます。 さらに、ご利用のプライベート エンドポイントでは、自分の仮想ネットワーク内のプライベート IP アドレスが使用されます。

名前空間の作成時にプライベート アクセスを構成する

名前空間を作成するときは、名前空間へのパブリックのみ (すべてのネットワークから) またはプライベートのみ (プライベート エンドポイントを介してのみ) のアクセスを許可できます。

名前空間作成ウィザードの [ネットワーク] ページで [プライベート アクセス] オプションを選択した場合は、[+ プライベート エンドポイント] ボタンを選択して、そのページにプライベート エンドポイントを追加できます。 プライベート エンドポイントを追加する詳細な手順については、次のセクションを参照してください。

[プライベート アクセス] オプションが選択された名前空間の作成ウィザードの [ネットワーク] ページを示すスクリーンショット。

既存の名前空間のプライベート アクセスを構成する

既存の名前空間が既にある場合は、次の手順に従ってプライベート エンドポイントを作成できます。

  1. Azure portal にサインインします。

  2. 検索バーで、「Service Bus」と入力します。

  3. プライベート エンドポイントを追加する名前空間を一覧から選択します。

  4. 左側のメニューで、 [設定] の下にある [ネットワーク] オプションを選択します。

    Note

    [ネットワーク] タブは premium 名前空間に対してのみ表示されます。

  5. 名前空間にプライベート エンドポイント経由でのみアクセスする場合は、[ネットワーク] ページの [パブリック ネットワーク アクセス][無効] を選択します。

  6. [信頼された Microsoft サービスを許可して、このファイアウォールをバイパスする] については、信頼された Microsoft サービスを許可してこのファイアウォールをバイパスする場合は、[はい] を選択します。

    公衆ネットワーク アクセスを [無効] に設定した [ネットワーク] ページのスクリーンショット。

  7. プライベート エンドポイント経由での名前空間へのアクセスを許可するには、ページの上部にある [プライベート エンドポイント接続] タブを選択します

  8. ページの上部にある [+ プライベート エンドポイント] ボタンを選択します。

    [プライベート エンドポイントの追加] ボタン

  9. [基本] ページで、次の手順を行います。

    1. プライベート エンドポイントを作成する Azure サブスクリプションを選択します。

    2. プライベート エンドポイント リソース用のリソース グループを選択します。

    3. プライベート エンドポイントの名前を入力します。

    4. ネットワーク インターフェイスの名前を入力します。

    5. プライベート エンドポイントのリージョンを選択します。 プライベート エンドポイントが存在するリージョンは仮想ネットワークと同じでなければなりませんが、接続しようとしているプライベート リンク リソースのリージョンとは異なっていても構いません。

    6. ページの下部にある [次へ: リソース] ボタンを選択します。

      [プライベート エンドポイントの作成] ウィザードの [基本] ページを示すスクリーンショット。

  10. [リソース] ページで設定を確認し、ページ下部の [次へ: 仮想ネットワーク] を選択します。

    [プライベート エンドポイントの作成] ウィザードの [リソース] ページを示すスクリーンショット。

  11. [仮想ネットワーク] ページで、プライベート エンドポイントのデプロイ先である仮想ネットワーク内のサブネットを選びます。

    1. [仮想ネットワーク] を選択します。 ドロップダウン リストには、現在選択されているサブスクリプションおよび場所内の仮想ネットワークのみが一覧表示されます。
    2. 選択した仮想ネットワーク内のサブネットを選択します。
    3. [プライベート エンドポイントのネットワーク ポリシー] が無効になっていることに注目してください。 有効にする場合は、[編集] を選択し、設定を更新して、[保存] を選択します。
    4. [プライベート IP 構成] は、既定で [IP アドレスを動的に割り当てる] オプションが選択されています。 静的 IP アドレスを割り当てる場合は、[IP アドレスを静的に割り当てる]* を選択します。
    5. [アプリケーション セキュリティ グループ] で、既存のアプリケーション セキュリティ グループを選択するか、プライベート エンドポイントに関連付けるアプリケーション セキュリティ グループを作成します。
    6. ページの下部にある [次へ: DNS>] ボタンを選択します。

    [プライベート エンドポイントの作成] ウィザードの [仮想ネットワーク] ページを示すスクリーンショット。

  12. [DNS] ページで、プライベート エンドポイントをプライベート DNS ゾーンに統合するかどうかを選択し、[次へ: タグ] を選択します。

    [プライベート エンドポイントの作成] ウィザードの [DNS] ページを示すスクリーンショット。

  13. [タグ] ページでは、プライベート エンドポイント リソースに関連付ける任意のタグ (名前と値) を作成します。 次に、ページの下部にある [確認と作成] ボタンを選択します。

  14. [確認と作成] では、すべての設定を確認し、 [作成] を選択してプライベート エンドポイントを作成します。

    [プライベート エンドポイントの作成] ウィザードの [確認と作成] ページを示すスクリーンショット。

  15. プライベート エンドポイントが作成されていることを確認します。 自分がリソースの所有者であり、[接続方法] として [マイ ディレクトリ内の Azure リソースに接続します] を選択した場合、エンドポイント接続を [自動承認] にする必要があります。 それが [保留中] 状態にある場合は、「Azure portal を使用してプライベート エンドポイントを管理する」セクションを参照してください。

    作成されたプライベート エンドポイント

信頼できる Microsoft サービス

[信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可する] 設定を有効にした場合、次のサービスに Service Bus リソースへのアクセス権が与えられます。

信頼できるサービス サポートされる使用シナリオ
Azure Event Grid Azure Event Grid が Service Bus 名前空間のキューまたはトピックにイベントを送信できるようにします。 次の手順も行う必要があります。
  • トピックまたはドメインに対してシステム割り当て ID を有効にする
  • Service Bus 名前空間で Azure Service Bus データ送信者ロールに ID を追加する
  • 次に、システムによって割り当てられた ID を使用するために、Service Bus のキューまたはトピックをエンドポイントとして使用するイベント サブスクリプションを構成する

詳細については、「マネージド ID を使用したイベント配信」を参照してください

Azure Stream Analytics Azure Stream Analytics ジョブが Service Bus キューからトピックにデータを出力できるようにします。

重要: Stream Analytics ジョブは、マネージド ID を使用して Service Bus 名前空間にアクセスするように構成する必要があります。 Service Bus 名前空間で Azure Service Bus データ送信者ロールに ID を追加します。

Azure IoT Hub IoT ハブで Service Bus 名前空間のキューまたはトピックにメッセージを送信できるようにします。 次の手順も行う必要があります。
Azure API Management

API Management サービスを使用すると、Service Bus 名前空間の Service Bus キューまたはトピックにメッセージを送信できます。

Azure IoT Central

IoT Central を使用すると、Service Bus 名前空間の Service Bus キューまたはトピックにデータをエクスポートできます。 次の手順も行う必要があります。

Azure Digital Twins Azure Digital Twins が Service Bus 名前空間の Service Bus トピックにデータをエグレスできるようにします。 次の手順も行う必要があります。

  • Azure Digital Twins インスタンスのシステム割り当て ID を有効にします。
  • Service Bus 名前空間で Azure Service Bus データ送信者ロールに ID を追加します。
  • 次に、システム割り当て ID を使用して認証する Azure Digital Twins エンドポイントまたは Azure Digital Twins データ履歴接続を構成します。 Azure Digital Twins から Service Bus リソースへのエンドポイントとイベント ルートの構成の詳細については、Azure Digital Twins イベントをルーティングするおよびAzure Digital Twinsでエンドポイントを作成するを参照してください。
Azure Monitor ([診断設定] と [アクション グループ]) Azure Monitor が Service Bus 名前空間の Service Bus に診断情報とアラート通知を送信できるようにします。 Azure Monitor では、Service Bus 名前空間からデータの読み取りと書き込みを実施できます。
Azure Synapse Azure Synapse が Synapse ワークスペースのマネージド ID を使用して Service Bus に接続できるようにします。 Service Bus 名前空間で Azure Service Bus データ送信者、受信者または所有者ロールに ID を追加します。

Azure Service Bus のその他の信頼できるサービスは次のとおりです。

  • Azure Data Explorer
  • Azure Health Data Services
  • Azure Arc
  • Azure Kubernetes
  • Azure Machine Learning
  • Microsoft Purview

信頼できるサービスが自分の名前空間にアクセスすることを許可するには、[ネットワークの種類] ページで [パブリック アクセス] タブに切り替え、[信頼された Microsoft サービスがこのファイアウォールをバイパスすることを許可しますか?][はい] を選択します。

PowerShell を使用してプライベート エンドポイントを追加する

次の例では、Azure PowerShell を使用して、Service Bus 名前空間へのプライベート エンドポイント接続を作成する方法を示します。

プライベート エンドポイントと仮想ネットワークは、同じリージョンに存在する必要があります。 ご利用の Service Bus 名前空間は、別のリージョンに配置することができます。 さらに、ご利用のプライベート エンドポイントでは、自分の仮想ネットワーク内のプライベート IP アドレスが使用されます。


$rgName = "<RESOURCE GROUP NAME>"
$vnetlocation = "<VNET LOCATION>"
$vnetName = "<VIRTUAL NETWORK NAME>"
$subnetName = "<SUBNET NAME>"
$namespaceLocation = "<NAMESPACE LOCATION>"
$namespaceName = "<NAMESPACE NAME>"
$peConnectionName = "<PRIVATE ENDPOINT CONNECTION NAME>"

# create resource group
New-AzResourceGroup -Name $rgName -Location $vnetLocation 

# create virtual network
$virtualNetwork = New-AzVirtualNetwork `
                    -ResourceGroupName $rgName `
                    -Location $vnetlocation `
                    -Name $vnetName `
                    -AddressPrefix 10.0.0.0/16

# create subnet with endpoint network policy disabled
$subnetConfig = Add-AzVirtualNetworkSubnetConfig `
                    -Name $subnetName `
                    -AddressPrefix 10.0.0.0/24 `
                    -PrivateEndpointNetworkPoliciesFlag "Disabled" `
                    -VirtualNetwork $virtualNetwork

# update virtual network
$virtualNetwork | Set-AzVirtualNetwork

# create premium service bus namespace
$namespaceResource = New-AzResource -Location $namespaceLocation -ResourceName $namespaceName -ResourceGroupName $rgName -Sku @{name = "Premium"; capacity = 1} -Properties @{} -ResourceType "Microsoft.ServiceBus/namespaces" -

# create a private link service connection
$privateEndpointConnection = New-AzPrivateLinkServiceConnection `
                                -Name $peConnectionName `
                                -PrivateLinkServiceId $namespaceResource.ResourceId `
                                -GroupId "namespace"

# get subnet object that you will use in the next step                                
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName  $rgName -Name $vnetName
$subnet = $virtualNetwork | Select -ExpandProperty subnets `
                                | Where-Object  {$_.Name -eq $subnetName}  
   
# now, create private endpoint   
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $rgName  `
                                -Name $vnetName   `
                                -Location $vnetlocation `
                                -Subnet  $subnet   `
                                -PrivateLinkServiceConnection $privateEndpointConnection

(Get-AzResource -ResourceId $namespaceResource.ResourceId -ExpandProperties).Properties


Azure portal を使用してプライベート エンドポイントを管理する

プライベート エンドポイントを作成する際は、接続を承認する必要があります。 プライベート エンドポイントの作成対象のリソースが自分のディレクトリ内にある場合、十分なアクセス許可があれば、接続要求を承認することができます。 別のディレクトリ内の Azure リソースに接続している場合は、そのリソースの所有者が接続要求を承認するまで待機する必要があります。

プロビジョニングの状態には次の 4 つがあります。

サービス アクション サービス コンシューマーのプライベート エンドポイントの状態 説明
なし 保留中 接続が手動で作成されており、プライベート リンク リソースの所有者からの承認を待っています。
承認 Approved 接続が自動または手動で承認され、使用する準備が整っています。
Reject 拒否 プライベート リンク リソースの所有者によって接続が拒否されました。
[削除] [Disconnected](切断済み) プライベート リンク リソースの所有者によって接続が削除されました。プライベート エンドポイントは情報が多くなり、クリーンアップのために削除する必要があります。

プライベート エンドポイント接続の承認、拒否、または削除

  1. Azure portal にサインインします。
  2. 検索バーで、「Service Bus」と入力します。
  3. 管理する名前空間を選択します。
  4. [ネットワーク] タブを選択します。
  5. 必要としている操作: 承認、拒否、または削除する操作に応じて、以下の適切なセクションに進みます。

プライベート エンドポイント接続を承認する

  1. 保留中の接続がある場合は、プロビジョニング状態に [保留] と表示されている接続が一覧表示されます。

  2. 承認するプライベート エンドポイントを選択します

  3. [承認] ボタンを選択します。

    プライベート エンドポイントを承認する

  4. [接続の承認] ページで、必要に応じてコメントを入力し、 [はい] を選択します。 [いいえ] を選択した場合は、何も起こりません。

    [接続の承認] ページ

  5. リストに表示された接続の状態が [承認済み] に変更されていることを確認します。

    接続の状態 - 承認済み

プライベート エンドポイント接続を拒否する

  1. 拒否するプライベート エンドポイント接続がある場合は、保留中の要求か、以前に承認された既存の接続かにかかわらず、該当するエンドポイント接続を選択し、[拒否] ボタンを選択します。

    [拒否] ボタン

  2. [接続の拒否] ページで、必要に応じてコメントを入力し、 [はい] を選択します。 [いいえ] を選択した場合は、何も起こりません。

    [接続の拒否] ページ

  3. リストに表示された接続の状態が [拒否済み] に変更されていることを確認します。

    拒否されたエンドポイント

プライベート エンドポイント接続を削除する

  1. プライベート エンドポイント接続を削除するには、リストからそれを選択し、ツールバーの [削除] を選択します。

    [削除] ボタン

  2. [接続の削除] ページで [はい] を選択して、プライベート エンドポイントの削除を確定します。 [いいえ] を選択した場合は、何も起こりません。

    [接続の削除] ページ

  3. 状態が [接続解除済み] に変更されていることを確認します。 エンドポイントがリストから消えます。

プライベート エンドポイントの仮想ネットワーク内にあるリソースが、プライベート IP アドレスを使用して自分の Service Bus 名前空間に接続していること、そしてそれらがプライベート DNS ゾーンに正しく統合されていることを検証する必要があります。

最初に、Azure portal での Windows 仮想マシンの作成に関するページの手順に従って、仮想マシンを作成します。

[ネットワーク] タブで、次の操作を行います。

  1. [仮想ネットワーク][サブネット] を指定します。 プライベート エンドポイントをデプロイした仮想ネットワークを選択する必要があります。
  2. [パブリック IP] リソースを指定します。
  3. [NIC ネットワーク セキュリティ グループ][なし] を選択します。
  4. [負荷分散][いいえ] を選択します。

VM に接続してコマンド ラインを開き、次のコマンドを実行します。

nslookup <service-bus-namespace-name>.servicebus.windows.net

結果は次のようになります。

Non-authoritative answer:
Name:    <service-bus-namespace-name>.privatelink.servicebus.windows.net
Address:  10.0.0.4 (private IP address associated with the private endpoint)
Aliases:  <service-bus-namespace-name>.servicebus.windows.net

制限事項と設計に関する考慮事項

  • 価格情報については、Azure Private Link の価格に関するページを参照してください。
  • この機能は、Azure のすべてのパブリック リージョンで使用できます。
  • Service Bus 名前空間あたりのプライベート エンドポイントの最大数: 120
  • トラフィックは、TCP 層ではなく、アプリケーション層でブロックされます。 そのため、パブリック アクセスが無効になっている場合でも、パブリック エンドポイントに対して TCP 接続または nslookup 操作が成功していることがわかります。

詳細については、Azure Private Link サービスの制限事項に関するセクションを参照してください。

次のステップ