次の方法で共有


Azure Relay と Azure Private Link の統合

Azure Private Link サービスを使用すると、仮想ネットワーク内のプライベート エンドポイントを介して、Azure サービス (Azure Relay、Azure Service Bus、Azure Event Hubs、Azure Storage、Azure Cosmos DB など) や、Azure でホストされている顧客またはパートナーのサービスにアクセスできます。 詳細については、「Azure Private Link とは」を参照してください。

プライベート エンドポイントは、仮想ネットワークで実行されているワークロードが、プライベート リンク リソース (Relay 名前空間など) を持つサービスにプライベートで安全に接続できるようにするネットワーク インターフェイスです。 プライベート エンドポイントは、ご自分の VNet からのプライベート IP アドレスを使用して、サービスを実質的に VNet に取り込みます。 サービスへのすべてのトラフィックをプライベート エンドポイントを介してルーティングできるため、ゲートウェイ、NAT デバイス、ExpressRoute、VPN 接続、パブリック IP アドレスは不要です。 仮想ネットワークとサービスの間のトラフィックは、Microsoft のバックボーン ネットワークを経由して、パブリック インターネットからの公開を排除します。 特定の Azure Relay 名前空間への接続を許可することにより、アクセスをきめ細かく制御できます。

Note

プライベート リンクを介してリレー リスナーを使用する場合は、標準のリレー ポートと共に、送信通信用にポート 9400-9599 を開きます。 この手順は、リレー リスナーに対してのみ行う必要があることに注意してください。

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

前提条件

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

  • Azure Relay 名前空間。
  • Azure 仮想ネットワーク。
  • 仮想ネットワーク内のサブネット。
  • 仮想ネットワークに対する所有者または共同作成者のアクセス許可。

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

プライベート エンドポイントは、ご自分の仮想ネットワーク内のプライベート IP アドレスを使用します。

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

次の手順では、Relay 名前空間へのパブリック アクセスを無効にしてから、その名前空間にプライベート エンドポイントを追加する詳細な手順を示します。

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

  2. 検索バーに「Relays」と入力します。

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

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

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

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

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

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

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

    [ネットワーク] ページの [プライベート エンドポイント接続] タブにある [プライベート エンドポイントの追加] ボタンの選択を示すスクリーンショット。

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

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

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

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

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

    5. プライベート エンドポイントのリージョンを選択します。 プライベート エンドポイントは仮想ネットワークと同じリージョンに存在する必要がありますが、接続しようとしている Azure Relay 名前空間とは異なるリージョンでも構いません。

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

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

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

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

  11. [仮想ネットワーク] ページで、プライベート エンドポイントのデプロイ先となる仮想ネットワークサブネットを選択します。 ドロップダウン リストには、現在選択されているサブスクリプションおよび場所内の仮想ネットワークのみが一覧表示されます。

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

    プライベート エンドポイントに、IP アドレスを動的に割り当てるか、IP アドレス静的に割り当てるかを構成できます

    また、新規または既存のアプリケーション セキュリティ グループをプライベート エンドポイントに関連付けることもできます。

  12. [次へ: DNS] を選択して、ウィザードの [DNS] ページに移動します。 [DNS] ページでは、[プライベート DNZ ゾーンと統合する] 設定が既定で有効になっています (推奨)。 これを無効にするオプションがあります。

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

    プライベート エンドポイントに非公開で接続するには、DNS レコードが必要です。 プライベート エンドポイントとプライベート DNS ゾーンを統合することをお勧めします。 また、独自の DNS サーバーを利用したり、仮想マシン上のホスト ファイルを使用して DNS レコードを作成したりすることもできます。 詳細については、「Azure プライベート エンドポイントの DNS 構成」をご覧ください。

  13. ページの下部にある [次へ: タグ >] ボタンを選択します。

  14. [タグ] ページでは、プライベート エンドポイントおよびプライベート DNS ゾーン (オプションを有効にした場合) と関連付けるタグ (名前と値) を作成します。 次に、ページの下部にある [確認と作成] ボタンを選択します。

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

  16. [プライベート エンドポイント] ページでは、プライベート エンドポイント接続の状態を確認できます。 Relay 名前空間の所有者であるか、リレー名前空間に対する管理アクセス権を持っており、[接続方法] として [マイ ディレクトリ内の Azure リソースに接続します] オプションを選択した場合は、エンドポイント接続が自動承認されるようにする必要があります。 それが [保留中] 状態にある場合は、「Azure portal を使用してプライベート エンドポイントを管理する」セクションを参照してください。

    Azure portal のプライベート エンドポイント ページを示すスクリーンショット。

  17. [名前空間][ネットワーク] ページに戻り、[プライベート エンドポイント接続] タブに切り替えます。作成したプライベート エンドポイントが表示されます。

    作成したエンドポイントが表示された [ネットワーク] ページの [プライベート エンドポイント接続] タブを示すスクリーンショット。

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

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

プライベート エンドポイントと仮想ネットワークは、同じリージョンに存在する必要があります。 Azure Relay 名前空間は、別のリージョンに配置することができます。 さらに、ご利用のプライベート エンドポイントでは、自分の仮想ネットワーク内のプライベート 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 a relay namespace
$namespaceResource = New-AzResource -Location $namespaceLocation -ResourceName $namespaceName -ResourceGroupName $rgName -Properties @{} -ResourceType "Microsoft.Relay/namespaces" 

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

# get subnet object that you'll 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 を使用してプライベート エンドポイントを管理する

プライベート エンドポイントを作成する際は、接続を承認する必要があります。 プライベート エンドポイントを作成するリソース (Relay 名前空間) が自分のディレクトリにある場合、Relay 名前空間に対する特権を管理していれば、接続要求を承認できます。 管理アクセス権を持っていない Relay 名前空間に接続する場合は、そのリソースの所有者が接続要求を承認するまで待つ必要があります。

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

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

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

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

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

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

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

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

    選択したプライベート エンドポイントのコマンド バーの [承認] ボタンを示すスクリーンショット。

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

    [接続の承認] ページで確認を求める箇所を示すスクリーンショット。

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

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

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

    選択したプライベート エンドポイントのコマンド バーの [承認] ボタンを示すスクリーンショット。

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

    [接続の却下] ページで確認を求める箇所を示すスクリーンショット。

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

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

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

    選択したプライベート エンドポイントのコマンド バーの [削除] ボタンを示すスクリーンショット。

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

    [接続の削除] ページで確認を求める箇所を示すスクリーンショット。

  3. 状態が [接続解除済み] に変更されていることを確認します。 その後、リストにエンドポイントが表示されなくなります。

プライベート エンドポイントの仮想ネットワーク内のリソースが、プライベート IP アドレス経由で Azure Relay 名前空間に接続していることを検証する必要があります。

このテストのために、「Azure portal で Windows 仮想マシンを作成する」の手順に従って仮想マシンを作成します。

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

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

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

nslookup <your-relay-namespace-name>.servicebus.windows.net

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

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

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

設計上の考慮事項

制限事項

  • Azure Relay 名前空間あたりのプライベート エンドポイントの最大数: 64。
  • プライベート エンドポイントがある Azure Relay 名前空間の、サブスクリプションあたりの最大数: 64。
  • ネットワーク セキュリティ グループ (NSG) 規則とユーザー定義ルートは、プライベート エンドポイントには適用されません。 詳細については、「Azure Private Link サービス: 制限事項」を参照してください。

信頼できる Microsoft サービス

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

信頼できるサービス サポートされる使用シナリオ
Azure Machine Learning AML Kubernetes では Azure Relay を使用して、AML サービスと Kubernetes クラスター間の通信を容易にします。 Azure Relay は、さまざまなネットワークでホストされているアプリケーション間の安全な双方向通信を提供するフル マネージド サービスです。 Azure リソースとオンプレミス リソース間の通信が制限されるプライベート リンク環境での使用に最適です。
Azure Arc 上記のリソース プロバイダーに関連付けられている Azure Arc 対応サービスは、Azure Relay 名前空間に設定されている IP ファイアウォール規則によってブロックされることなく、送信元として Azure Relay 名前空間内のハイブリッド接続に接続できます。 Microsoft.Hybridconnectivity サービスでは、Azure Relay 名前空間にハイブリッド接続が作成され、シナリオに基づいて関連する Arc サービスに接続情報が提供されます。 これらのサービスは、次の Azure サービスで Azure Arc を使用している場合にのみ、Azure Relay 名前空間と通信します。

- Azure Kubernetes
- Azure Machine Learning
- Microsoft Purview

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

  • Azure Event Grid
  • Azure IoT Hub
  • Azure Stream Analytics
  • Azure Monitor
  • Azure API Management
  • Azure Synapse
  • Azure Data Explorer
  • Azure IoT Central
  • Azure Healthcare Data Services
  • Azure Digital Twins

Note

2021-11-01 バージョン以降の Microsoft Relay SDK では、Microsoft.Relay/namespaces/networkRuleSets プロパティで "trustedServiceAccessEnabled" を使用することで、信頼されたサービスへのアクセスを有効にできます。

Azure Resource Manager テンプレートで信頼されたサービスを許可するには、テンプレートに次のプロパティを含めます。

"trustedServiceAccessEnabled": "True"

たとえば、上記の ARM テンプレートに基づいて、信頼されたサービスを有効にするために変更を行い、このネットワーク ルール セット プロパティを含むようにできます。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "namespaces_name": {
            "defaultValue": "contosorelay0215",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Relay/namespaces",
            "apiVersion": "2021-11-01",
            "name": "[parameters('namespaces_name')]",
            "location": "East US",
            "sku": {
                "name": "Standard",
                "tier": "Standard"
            },
            "properties": {}
        },
        {
            "type": "Microsoft.Relay/namespaces/authorizationrules",
            "apiVersion": "2021-11-01",
            "name": "[concat(parameters('namespaces_sprelayns0215_name'), '/RootManageSharedAccessKey')]",
            "location": "eastus",
            "dependsOn": [
                "[resourceId('Microsoft.Relay/namespaces', parameters('namespaces_sprelayns0215_name'))]"
            ],
            "properties": {
                "rights": [
                    "Listen",
                    "Manage",
                    "Send"
                ]
            }
        },
        {
            "type": "Microsoft.Relay/namespaces/networkRuleSets",
            "apiVersion": "2021-11-01",
            "name": "[concat(parameters('namespaces_sprelayns0215_name'), '/default')]",
            "location": "East US",
            "dependsOn": [
                "[resourceId('Microsoft.Relay/namespaces', parameters('namespaces_sprelayns0215_name'))]"
            ],
            "properties": {
                "trustedServiceAccessEnabled": "True",
                "publicNetworkAccess": "Enabled",
                "defaultAction": "Deny",
                "ipRules": [
                    {
                        "ipMask": "172.72.157.204",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "10.1.1.1",
                        "action": "Allow"
                    },
                    {
                        "ipMask": "11.0.0.0/24",
                        "action": "Allow"
                    }
                ]
            }
        }
    ]
}

次のステップ