Azure Machine Learning ワークスペース用にプライベート エンドポイントを構成する

適用対象: Azure CLI ML 拡張機能 v2 (現行)

このドキュメントでは、Azure Machine Learning ワークスペース用にプライベート エンドポイントを構成する方法について説明します。 Azure Machine Learning 用の仮想ネットワークの作成については、仮想ネットワークの分離とプライバシーの概要に関する記事をご覧ください。

Azure Private Link では、プライベート エンドポイントを使用してワークスペースに接続できます。 プライベート エンドポイントは、仮想ネットワーク内にある一組のプライベート IP アドレスです。 これにより、ワークスペースへのアクセスが、プライベート IP アドレスでのみ行われるように制限できます。 プライベート エンドポイントを使用すると、データ流出のリスクを軽減できます。 プライベート エンドポイントの詳細については、Azure Private Link に関する記事を参照してください。

警告

プライベート エンドポイントを使用してワークスペースをセキュリティで保護しても、エンドツーエンドのセキュリティは保証されません。 ソリューションの個々のコンポーネントのすべてをセキュリティで保護する必要があります。 たとえば、ワークスペースでプライベート エンドポイントを使用していても、Azure ストレージ アカウントが VNet の内側にない場合、ワークスペースとストレージの間のトラフィックでは、セキュリティのために VNet は使用されません。

Azure Machine Learning で使用されるリソースのセキュリティ保護の詳細については、次の記事を参照してください。

前提条件

  • プライベート エンドポイントを作成するには、既存の仮想ネットワークが必要です。

    警告

    VNet の IP アドレス範囲に 172.17.0.0/16 を使用しないでください。 これは Docker ブリッジ ネットワークで使用される既定のサブネット範囲であり、VNet に使用するとエラーが発生します。 仮想ネットワークに接続する内容によっては、他の範囲も競合する可能性があります。 たとえば、オンプレミス ネットワークを VNet に接続する予定で、オンプレミス ネットワークでも 172.16.0.0/16 の範囲が使用されている場合です。 最終的には、ネットワーク インフラストラクチャーを計画するのはユーザーの責任です。

  • プライベート エンドポイントを追加する前に、プライベート エンドポイントのネットワーク ポリシーを無効にします

制限事項

  • プライベート エンドポイントで保護されたワークスペースのパブリック アクセスを有効にしていて、パブリック インターネット経由で Azure Machine Learning スタジオを使用する場合、デザイナーなどの一部の機能から自分のデータにアクセスできないことがあります。 この問題は、データが VNet の背後でセキュリティ保護されているサービスに格納されている場合に発生します。 たとえば、Azure Storage アカウントです。

  • Mozilla Firefox を使用している場合、ワークスペースのプライベート エンドポイントにアクセスしようとしたときに問題が発生することがあります。 この問題は、Mozilla Firefox の DNS over HTTPS に関連している可能性があります。 Microsoft Edge または Google Chrome を使うことをお勧めします。

  • プライベート エンドポイントを使用しても、ワークスペースの削除やコンピューティング リソースの管理などの Azure コントロール プレーン (管理操作) には影響しません。 たとえば、コンピューティング先の作成、更新、削除などです。 これらの操作は、通常どおりパブリック インターネット経由で実行されます。 Azure Machine Learning Studio を使用するなどのデータ プレーン操作、API (公開されたパイプラインを含む)、または SDK では、プライベート エンドポイントが使用されます。

  • プライベート エンドポイントを使用してワークスペースにコンピューティング インスタンスまたはコンピューティング クラスターを作成するときは、コンピューティング インスタンスとコンピューティング クラスターがワークスペースと同じ Azure リージョンに存在する必要があります。

  • プライベート エンドポイントを使用して Azure Kubernetes Service クラスターをワークスペースにアタッチするときは、クラスターがワークスペースと同じリージョンに存在する必要があります。

  • 複数のプライベート エンドポイントで 1 つのワークスペースを使用するときは、プライベート エンドポイントの 1 つが、次の依存関係サービスと同じ VNet 内に存在する必要があります。

    • ワークスペース用の既定のストレージを提供する Azure ストレージ アカウント
    • ワークスペース用の Azure Key Vault
    • ワークスペース用の Azure Container Registry。

    たとえば、1 つの VNet ("サービス" VNet) には、依存関係サービスとワークスペース用のプライベート エンドポイントが含まれます。 この構成により、ワークスペースはサービスと通信できます。 別の VNet ("クライアント") には、ワークスペース用のプライベート エンドポイントのみが含まれ、クライアント開発用コンピューターとワークスペースの間の通信にのみ使用できます。

プライベート エンドポイントを使用するワークスペースを作成する

プライベート エンドポイントを使用してワークスペースを作成するには、次のいずれかの方法を使用します。 いずれの方法でも既存の仮想ネットワークが必要です

ヒント

ワークスペース、プライベート エンドポイント、仮想ネットワークを同時に作成する場合は、「Azure Resource Manager テンプレートを使用して Azure Machine Learning のワークスペースを作成する」を参照してください。

適用対象: Azure CLI ml 拡張機能 v2 (現行)

Azure CLI Machine Learning 拡張機能 2.0 CLI を使用するときは、YAML ドキュメントを使用して、ワークスペースを構成します。 YAML 構成を使用した新しいワークスペースの作成を次の例に示します。

ヒント

プライベート リンクを使用しているときは、ワークスペースで、Azure Container Registry タスク コンピューティングを使用してイメージを作成することができません。 この構成の image_build_compute プロパティでは、Docker イメージ環境の構築に使用する CPU 計算クラスターの名前を指定します。 インターネットでプライベート リンク ワークスペースにアクセスできるようにするかどうかも、public_network_access プロパティによって指定できます。

この例では、イメージを構築する前に、image_build_compute が参照する計算を作成する必要があります。

$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: mlw-privatelink-prod
location: eastus
display_name: Private Link endpoint workspace-example
description: When using private link, you must set the image_build_compute property to a cluster name to use for Docker image environment building. You can also specify whether the workspace should be accessible over the internet.
image_build_compute: cpu-compute
public_network_access: Disabled
tags:
  purpose: demonstration
az ml workspace create \
    -g <resource-group-name> \
    --file privatelink.yml

ワークスペースの作成後、Azure ネットワーク CLI コマンドで、ワークスペースのプライベート リンク エンドポイントを作成します。

az network private-endpoint create \
    --name <private-endpoint-name> \
    --vnet-name <vnet-name> \
    --subnet <subnet-name> \
    --private-connection-resource-id "/subscriptions/<subscription>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>" \
    --group-id amlworkspace \
    --connection-name workspace -l <location>

ワークスペースのプライベート DNS ゾーン エントリを作成するには、次のコマンドを使用します。

# Add privatelink.api.azureml.ms
az network private-dns zone create \
    -g <resource-group-name> \
    --name privatelink.api.azureml.ms

az network private-dns link vnet create \
    -g <resource-group-name> \
    --zone-name privatelink.api.azureml.ms \
    --name <link-name> \
    --virtual-network <vnet-name> \
    --registration-enabled false

az network private-endpoint dns-zone-group create \
    -g <resource-group-name> \
    --endpoint-name <private-endpoint-name> \
    --name myzonegroup \
    --private-dns-zone privatelink.api.azureml.ms \
    --zone-name privatelink.api.azureml.ms

# Add privatelink.notebooks.azure.net
az network private-dns zone create \
    -g <resource-group-name> \
    --name privatelink.notebooks.azure.net

az network private-dns link vnet create \
    -g <resource-group-name> \
    --zone-name privatelink.notebooks.azure.net \
    --name <link-name> \
    --virtual-network <vnet-name> \
    --registration-enabled false

az network private-endpoint dns-zone-group add \
    -g <resource-group-name> \
    --endpoint-name <private-endpoint-name> \
    --name myzonegroup \
    --private-dns-zone privatelink.notebooks.azure.net \
    --zone-name privatelink.notebooks.azure.net

ワークスペースにプライベート エンドポイントを追加する

次のいずれかの方法を使用して、既存のワークスペースにプライベート エンドポイントを追加します。

警告

このワークスペースに関連付けられている既存のコンピューティング先があり、それらがプライベート エンドポイントが作成されたのと同じ仮想ネットワークの背後にない場合、それらは機能しません。

適用対象: Azure CLI ml 拡張機能 v2 (現行)

Azure CLI Machine Learning 拡張機能 2.0 CLI を使用するときは、Azure ネットワーク CLI コマンドを使用して、ワークスペースのプライベート リンク エンドポイントを作成します。

az network private-endpoint create \
    --name <private-endpoint-name> \
    --vnet-name <vnet-name> \
    --subnet <subnet-name> \
    --private-connection-resource-id "/subscriptions/<subscription>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>" \
    --group-id amlworkspace \
    --connection-name workspace -l <location>

ワークスペースのプライベート DNS ゾーン エントリを作成するには、次のコマンドを使用します。

# Add privatelink.api.azureml.ms
az network private-dns zone create \
    -g <resource-group-name> \
    --name 'privatelink.api.azureml.ms'

az network private-dns link vnet create \
    -g <resource-group-name> \
    --zone-name 'privatelink.api.azureml.ms' \
    --name <link-name> \
    --virtual-network <vnet-name> \
    --registration-enabled false

az network private-endpoint dns-zone-group create \
    -g <resource-group-name> \
    --endpoint-name <private-endpoint-name> \
    --name myzonegroup \
    --private-dns-zone 'privatelink.api.azureml.ms' \
    --zone-name 'privatelink.api.azureml.ms'

# Add privatelink.notebooks.azure.net
az network private-dns zone create \
    -g <resource-group-name> \
    --name 'privatelink.notebooks.azure.net'

az network private-dns link vnet create \
    -g <resource-group-name> \
    --zone-name 'privatelink.notebooks.azure.net' \
    --name <link-name> \
    --virtual-network <vnet-name> \
    --registration-enabled false

az network private-endpoint dns-zone-group add \
    -g <resource-group-name> \
    --endpoint-name <private-endpoint-name> \
    --name myzonegroup \
    --private-dns-zone 'privatelink.notebooks.azure.net' \
    --zone-name 'privatelink.notebooks.azure.net'

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

ワークスペースの 1 つまたはすべてのプライベート エンドポイントを削除できます。 プライベート エンドポイントを削除すると、エンドポイントが関連付けられていた VNet からワークスペースが削除されます。 プライベート エンドポイントを削除すると、ワークスペースがその VNet 内のリソースにアクセスできなくなったり、その VNet 内のリソースがワークスペースにアクセスできなくなったりする可能性があります。 たとえば、VNet とパブリック インターネットとの間でアクセスできなくなるような場合です。

警告

ワークスペースのプライベート エンドポイントを削除しても、パブリックにアクセスできるようにはなりません。 ワークスペースをパブリックにアクセスできるようにするには、「パブリック アクセスを有効にする」セクションの手順を使用します。

プライベート エンドポイントを削除するには、次の情報のようにします。

適用対象: Azure CLI ml 拡張機能 v2 (現行)

Azure CLI Machine Learning 拡張機能 2.0 CLI を使用するときは、次のコマンドを使用してプライベート エンドポイントを削除します。

az network private-endpoint delete \
    --name <private-endpoint-name> \
    --resource-group <resource-group-name> \

パブリック アクセスを有効にする

状況によっては、VNet ではなくパブリック エンドポイント経由で、セキュリティで保護された自分のワークスペースにだれかが接続できるようにすることが必要になる場合があります。 または、VNet からワークスペースを削除し、パブリック アクセスを再び有効にしたいことがあります。

重要

パブリック アクセスを有効にしても、存在するプライベート エンドポイントは削除されません。 プライベート エンドポイントが接続している VNet の内側にあるコンポーネント間のすべての通信は、引き続きセキュリティで保護されます。 これにより、プライベート エンドポイント経由のプライベート アクセスに加えて、そのワークスペースのみへのパブリック アクセスが可能になります。

警告

ワークスペースがプライベート エンドポイントを使用して他のリソースと通信している間に、パブリック エンドポイントを介して接続する場合:

  • Studio の一部の機能では、データへのアクセスに失敗します。 この問題は、データが VNet の背後でセキュリティ保護されているサービスに格納されている場合に発生します。 たとえば、Azure Storage アカウントです。 この問題を解決するには、クライアント デバイスの IP アドレスを Azure Storage アカウントのファイアウォールに追加します。
  • コンピューティング インスタンスでの Jupyter、JupyterLab、RStudio、または Posit Workbench (旧称 RStudio Workbench) の使用 (ノートブックの実行を含む) はサポートされていません

パブリック アクセスを有効にするには、次の手順のようにします。

ヒント

構成できるプロパティは 2 つあります。

  • allow_public_access_when_behind_vnet - Python SDK v1 で使用されます
  • public_network_access - CLI と Python SDK v2 で使われます。各プロパティがもう一方をオーバーライドします。 たとえば、public_network_access を設定すると、以前の allow_public_access_when_behind_vnet の設定がオーバーライドされます。

Microsoft では、ワークスペースへのパブリック アクセスを有効または無効にするために public_network_access を使用することをお勧めします。

適用対象: Azure CLI ml 拡張機能 v2 (現行)

Azure CLI の機械学習用拡張機能 2.0 CLI を使うときは、az ml update コマンドを使って、ワークスペースで public_network_access を有効にします。

az ml workspace update \
    --set public_network_access=Enabled \
    -n <workspace-name> \
    -g <resource-group-name>

YAML ファイルを使用して、パブリック ネットワーク アクセスを有効にすることもできます。 詳細については、ワークスペース YAML のリファレンスに関するページを参照してください。

インターネット IP 範囲からのみパブリック アクセスを有効にする (プレビュー)

IP ネットワーク規則を作成すると、IP ネットワーク規則を使用して特定のパブリック インターネット IP アドレス範囲からワークスペースやエンドポイントへのアクセスを許可できます。 各 Azure Machine Learning ワークスペースでは、最大 200 個の規則がサポートされています。 これらの規則により、特定のインターネット ベースのサービスとオンプレミスのネットワークにアクセスが許可され、一般的なインターネット トラフィックがブロックされます。

警告

  • 特定のパブリック インターネット IP アドレス範囲からエンドポイントへのアクセスを許可する場合は、エンドポイントのパブリック ネットワーク アクセス フラグを有効にします。
  • この機能を有効にすると、ワークスペースに関連付けられている既存のすべてのパブリック エンドポイントに影響します。 これにより、新規または既存のエンドポイントへのアクセスが制限される場合があります。 許可されていない IP からエンドポイントにアクセスすると、403 エラーが発生します。
  • Azure Machine Learning マネージド仮想ネットワークでこの機能を使用するには、Azure Machine Learning マネージド仮想ネットワークに関するページを参照してください。

適用対象: Azure CLI ML 拡張機能 v2 (現行)

Azure CLI では、これはサポートされていません。

IP ネットワーク規則の制限

IP アドレスの範囲には、次の制限が適用されます。

  • IP ネットワーク規則は、パブリック インターネットの IP アドレスに対してのみ許可されます。

    [予約済み IP アドレスの範囲] は、10、172.16 から 172.31、192.168 で始まるプライベート アドレスなどの IP 規則では許可されません。

  • 許可するインターネット アドレスの範囲は、CIDR 表記法を使って 16.17.18.0/24 の形式で、または 16.17.18.19 のように個々の IP アドレスとして指定する必要があります。

  • ストレージ ファイアウォール規則の構成では、IPv4 アドレスのみがサポートされています。

  • この機能を有効にすると、Postman などの任意のクライアント ツールを使用してパブリック エンドポイントをテストできますが、ポータルのエンドポイント テスト ツールはサポートされません。

ワークスペースに安全に接続する

VNet の背後で保護されているワークスペースに接続するには、次の方法のいずれかを使用します。

  • Azure VPN ゲートウェイ - オンプレミスのネットワークをプライベート接続を介して VNet に接続します。 接続は、パブリック インターネットを介して行われます。 使用できる VPN ゲートウェイには、次の 2 種類があります。

    • ポイント対サイト: 各クライアント コンピューターは、VPN クライアントを使用して VNet に接続します。
    • サイト間: VPN デバイスにより、VNet がオンプレミス ネットワークに接続されます。
  • ExpressRoute - オンプレミスのネットワークをプライベート接続を介してクラウドに接続します。 接続は、接続プロバイダーを使用して行われます。

  • Azure Bastion - このシナリオでは、VNet 内に Azure 仮想マシン (ジャンプ ボックスと呼ばれることもある) を作成します。 次に、Azure Bastion を使用して VM に接続します。 Bastion を使用すると、ローカル Web ブラウザーから RDP または SSH セッションを使用して VM に接続できます。 続いて、開発環境としてジャンプ ボックスを使用します。 これは VNet 内にあるため、ワークスペースに直接アクセスできます。 ジャンプ ボックスの使用例については、チュートリアル: セキュリティで保護されたワークスペースの作成に関するページを参照してください。

重要

VPN ゲートウェイまたは ExpressRoute を使用する場合は、オンプレミスのリソースと VNet 内のリソース間での名前解決の仕組みを計画する必要があります。 詳細については、カスタム DNS サーバーの使用に関する記事を参照してください。

ワークスペースへの接続に問題がある場合は、「セキュリティで保護されたワークスペース接続のトラブルシューティング」を参照してください。

複数のプライベート エンドポイント

Azure Machine Learning では 1 つのワークスペースに複数のプライベート エンドポイントを使用することがサポートされています。 複数のプライベート エンドポイントは、異なる環境を分離しておくときによく使用されます。 複数のプライベート エンドポイントを使用することで有効になるシナリオを次に示します。

  • 別の VNet 内のクライアント開発環境。

  • 別の VNet 内の Azure Kubernetes Service (AKS) クラスター。

  • 別の VNet 内の他の Azure サービス。 たとえば、Azure Synapse と Azure Data Factory で、1 つの Microsoft マネージド仮想ネットワークを使用できます。 どの場合も、ワークスペース用のプライベート エンドポイントを、それらのサービスによって使用されるマネージド VNet に追加できます。 これらのサービスでマネージド仮想ネットワークを使用する方法の詳細については、次の記事を参照してください。

    重要

    Synapse のデータ流出防止は、Azure Machine Learning ではサポートされていません。

重要

ワークスペース用のプライベート エンドポイントが含まれる各 VNet は、ワークスペースで使用される Azure ストレージ アカウント、Azure Key Vault、Azure Container Registry にアクセスできる必要があります。 たとえば、各 VNet にサービス用のプライベート エンドポイントを作成します。

複数のプライベート エンドポイントを追加するには、「ワークスペースにプライベート エンドポイントを追加する」セクションで説明されているのと同じ手順を使用します。

シナリオ: 分離されたクライアント

Azure Machine Learning によって使用されているコンピューティング リソースに直接アクセスできないように、開発クライアントを分離する場合は、次の手順を使用します。

Note

これらの手順では、ワークスペース、Azure ストレージ アカウント、Azure Key Vault、Azure Container Registry が既にあるものとします。 既存の VNet に、これらの各サービスのプライベート エンドポイントがあります。

  1. クライアント用に別の VNet を作成します。 この VNet には、クライアントとして機能する Azure Virtual Machines や、VNet に接続するためにオンプレミスのクライアントによって使用される VPN Gateway が含まれている場合があります。
  2. ワークスペースによって使用される Azure ストレージ アカウント、Azure Key Vault、Azure Container Registry 用に、新しいプライベート エンドポイントを追加します。 これらのプライベート エンドポイントは、クライアント VNet に存在する必要があります。
  3. ワークスペースによって使用される別のストレージがある場合は、そのストレージ用に新しいプライベート エンドポイントを追加します。 プライベート エンドポイントは、クライアント VNet に存在し、プライベート DNS ゾーンの統合が有効にされている必要があります。
  4. ワークスペースに新しいプライベート エンドポイントを追加します。 このプライベート エンドポイントは、クライアント VNet に存在し、プライベート DNS ゾーンの統合が有効にされている必要があります。
  5. 記事「仮想ネットワークでスタジオを使用する」の手順を使用して、スタジオがストレージ アカウントにアクセスできるようにします。

次の図はこの構成を示したものです。 ワークロード VNet には、トレーニングとデプロイのためにワークスペースによって作成されたコンピューティングが含まれます。 クライアント VNet には、クライアントまたはクライアントの ExpressRoute と VPN の接続が含まれます。 どちらの VNet にも、ワークスペース、Azure ストレージ アカウント、Azure Key Vault、Azure Container Registry 用のプライベート エンドポイントが含まれます。

Diagram of isolated client VNet

シナリオ: 分離された Azure Kubernetes Service

ワークスペースによって使用される分離された Azure Kubernetes Service を作成する場合は、次の手順を使用します。

Note

これらの手順では、ワークスペース、Azure ストレージ アカウント、Azure Key Vault、Azure Container Registry が既にあるものとします。 既存の VNet に、これらの各サービスのプライベート エンドポイントがあります。

  1. Azure Kubernetes Service インスタンスを作成します。 作成の間に、AKS によって AKS クラスターが含まれる VNet が作成されます。
  2. ワークスペースによって使用される Azure ストレージ アカウント、Azure Key Vault、Azure Container Registry 用に、新しいプライベート エンドポイントを追加します。 これらのプライベート エンドポイントは、クライアント VNet に存在する必要があります。
  3. ワークスペースによって使用される他のストレージがある場合は、そのストレージ用に新しいプライベート エンドポイントを追加します。 プライベート エンドポイントは、クライアント VNet に存在し、プライベート DNS ゾーンの統合が有効にされている必要があります。
  4. ワークスペースに新しいプライベート エンドポイントを追加します。 このプライベート エンドポイントは、クライアント VNet に存在し、プライベート DNS ゾーンの統合が有効にされている必要があります。
  5. AKS クラスターを Azure Machine Learning ワークスペースにアタッチします。 詳細については、「Azure Kubernetes Service クラスターを作成してアタッチする」を参照してください。

Diagram of isolated AKS VNet

次のステップ