[アーティクル] 11/19/2024
11 人の共同作成者
フィードバック
この記事の内容
ネットワーク分離には 2 つの側面があります。 1 つは、Azure AI Studio ハブにアクセスするためのネットワークの分離です。 もう 1 つは、ハブとプロジェクトの両方で使用されるコンピューティング リソース (コンピューティング インスタンス、サーバーレス、マネージド オンライン エンドポイントなど) をネットワーク的に分離する方法です。このドキュメントでは、図で強調表示されている後者について説明します。 ハブの組み込みのネットワーク分離を使用して、コンピューティング リソースを保護できます。
以下のネットワーク分離構成を設定する必要があります。
ネットワーク分離モードを選択します。 インターネット送信を許可するモードか、承認された送信のみを許可するモードの 2 つのオプションがあります。
承認された送信のみを許可するモードの Visual Studio Code 統合を使用する場合は、「Visual Code Studio を使用する 」セクションで説明する FQDN アウトバウンド規則を作成します。
承認された送信のみを許可するモードのモデルで HuggingFace モデルを使用する場合は、「HuggingFace モデルを使用する 」セクションで説明する FQDN アウトバウンド規則を作成します。
承認された送信モードのみを許可するオープンソース モデルのいずれかを使用する場合は、「Azure AI によるキュレーション 」セクションで説明されている FQDN アウトバウンド規則を作成します。
ネットワーク分離アーキテクチャと分離モード
マネージド仮想ネットワークの分離を有効にすると、ハブ用のマネージド仮想ネットワークが作成されます。 ハブ用に作成したマネージド コンピューティング リソースは、自動的にこのマネージド仮想ネットワークを使います。 マネージド仮想ネットワークは、Azure Storage、Azure Key Vault、Azure Container Registry など、ハブが使う Azure リソースのプライベート エンドポイントを使用できます。
マネージド仮想ネットワークからの送信トラフィックには、3 種類の構成モードがあります。
送信モード
説明
シナリオ
インターネット送信を許可する
マネージド仮想ネットワークからのすべてのインターネット送信トラフィックを許可します。
Python パッケージや事前トレーニング済みモデルなど、インターネット上の機械学習リソースに無制限にアクセスする必要がある場合に推奨されます。1
承認された送信のみを許可する
送信トラフィックは、サービス タグを指定することで許可されます。
* データ流出のリスクを最小限に抑えると同時に、プライベート環境で必要な機械学習の成果物をすべて準備する必要があります。 * 承認されたサービス、サービス タグ、または FQDN の一覧への送信アクセスを構成する必要があります。
無効
受信および送信トラフィックが制限されていません。
ハブからのパブリック受信と送信が必要です。
1 : "承認された送信のみを許可する" モードのアウトバウンド規則を使うと、インターネット送信を許可するのと同じ結果を得られます。 相違点は以下のとおりです。
Azure リソースにアクセスするには常にプライベート エンドポイントを使用します。
許可する必要がある送信接続ごとに規則を追加する必要があります。
FQDN アウトバウンド規則を追加すると、この規則の種類で Azure Firewall が使われるため、コストが増加 します。 FQDN アウトバウンド規則を使用する場合は、Azure Firewall の料金が請求に含まれます。 詳細については、価格 に関するページをご覧ください。
"承認された送信のみを許可する" の既定の規則は、データ流出のリスクを最小限に抑えるように設計されています。 アウトバウンド規則を追加すると、リスクが増加する可能性があります。
マネージド仮想ネットワークは、必須の既定の規則 を使って事前に構成されています。 また、ハブ、ハブの既定の Storage、Container Registry、Key Vault へのプライベート エンドポイント接続がプライベートとして構成されている場合、または承認された送信のみを許可するようにハブの分離モードが設定されている場合にも構成されます。 分離モードを選んだ後は、追加する必要がある場合がある他の送信要件のみ考慮する必要があります。
次の図は、インターネット送信を許可する ように構成されたマネージド仮想ネットワークを示しています。
次の図は、承認された送信のみを許可する ように構成されたマネージド仮想ネットワークを示しています。
Note
この構成では、ハブで使用される Storage、Key Vault、Container Registry に非公開としてフラグが設定されます。 非公開としてフラグが設定されているため、プライベート エンドポイントを使用して通信します。
前提条件
この記事の手順に従う前に、次の前提条件が満たされていることをご確認ください。
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Microsoft.Network リソース プロバイダーは、Azure サブスクリプションに登録する必要があります。 このリソース プロバイダーは、マネージド仮想ネットワークのプライベート エンドポイントを作成するときにハブによって使用されます。
リソースプロバイダーの登録については、「リソースプロバイダー登録エラーの解決 」を参照してください。
マネージド ネットワークをデプロイするときに使用する Azure ID には、プライベート エンドポイントを作成するための次の Azure ロールベースのアクセス制御 (Azure RBAC) アクションが必要です。
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
Microsoft.Network リソース プロバイダーは、Azure サブスクリプションに登録する必要があります。 このリソース プロバイダーは、マネージド仮想ネットワークのプライベート エンドポイントを作成するときにハブによって使用されます。
リソースプロバイダーの登録については、「リソースプロバイダー登録エラーの解決 」を参照してください。
マネージド ネットワークをデプロイするときに使用する Azure ID には、プライベート エンドポイントを作成するための次の Azure ロールベースのアクセス制御 (Azure RBAC) アクションが必要です。
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
Azure CLI と Azure CLI の ml
拡張機能。 詳しくは、CLI (v2) のインストール、設定、使用 に関するページをご覧ください。
この記事の CLI の例では、Bash (または互換性のある) シェルを使用していることを前提としています。 たとえば、Linux システムや Linux 用 Windows サブシステム などです。
この記事の Azure CLI の例では、ハブの名前を表す ws
と、リソース グループの名前を表す rg
を使っています。 実際の Azure サブスクリプションでこれらのコマンドを使う場合は、必要に応じてこれらの値を変更してください。
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。 無料版または有料版の Azure Machine Learning をお試しください。
Microsoft.Network リソース プロバイダーは、Azure サブスクリプションに登録する必要があります。 このリソース プロバイダーは、マネージド仮想ネットワークのプライベート エンドポイントを作成する際にハブによって使用されます。
リソースプロバイダーの登録については、「リソースプロバイダー登録エラーの解決 」を参照してください。
マネージド ネットワークをデプロイするときに使用する Azure ID には、プライベート エンドポイントを作成するための次の Azure ロールベースのアクセス制御 (Azure RBAC) アクションが必要です。
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
Azure Machine Learning Python SDK v2。 SDK の詳細については、「Azure Machine Learning 用 Python SDK v2 のインストール 」を参照してください。
この記事の例では、コードが次の Python で始まることを想定しています。 このコードでは、マネージド仮想ネットワークを使用してハブを作成するときに必要なクラスをインポートし、Azure サブスクリプションとリソース グループの変数を設定し、ml_client
を作成します。
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
Hub,
ManagedNetwork,
IsolationMode,
ServiceTagDestination,
PrivateEndpointDestination,
FqdnDestination
)
from azure.identity import DefaultAzureCredential
# Replace with the values for your Azure subscription and resource group.
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
# get a handle to the subscription
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
制限事項
Azure AI Studio では、現時点では自分で用意した仮想ネットワークを使うことはできません。マネージド仮想ネットワークで分離された環境のみがサポートされています。
Azure AI のマネージド仮想ネットワークの分離を有効にした後に、無効にすることはできません。
マネージド仮想ネットワークは、プライベート エンドポイント接続を使ってプライベート リソースにアクセスします。 ストレージ アカウントなどの Azure リソースに対して、プライベート エンドポイントとサービス エンドポイントを同時に持つことはできません。 どのシナリオでもプライベート エンドポイントを使うことをお勧めします。
Azure AI が削除されると、マネージド仮想ネットワークは削除されます。
データ流出防止は、唯一承認された送信モードに対して自動的に有効になります。 FQDN などの他のアウトバウンド規則を追加した場合、Microsoft では、これらの送信先へのデータ流出からの保護を保証できません。
FQDN アウトバウンド規則を使用すると、FQDN 規則で Azure Firewall が使用されるため、マネージド仮想ネットワークのコストが増加します。 詳細については、価格 に関するページをご覧ください。
FQDN アウトバウンド規則では、ポート 80 と 443 のみがサポートされます。
マネージド ネットワークでコンピューティング インスタンスを使う場合、az ml compute connect-ssh
コマンドを使って SSH 経由でコンピューティング インスタンスに接続します。
マネージド ネットワークが、承認された送信のみを許可する ように構成されている場合、FQDN ルールを使用して Azure Storage アカウントにアクセスすることはできません。 代わりに、プライベート エンドポイントを使用する必要があります。
ヒント
マネージド VNet の作成は、コンピューティング リソースが作成されるか、プロビジョニングが手動で開始されるまで延期されます。 自動作成を許可すると、ネットワークのプロビジョニングも行われるため、最初のコンピューティング リソースの作成に約 30 分 かかることがあります。
新しいハブを作成する :
Azure portal にサインインし、[リソースの作成] メニューから [Azure AI Studio] を選択します。
[新しい Azure AI ] を選択します。
[基本] タブで、必要な情報を指定します。
[ネットワーク] タブで、[Private with Internet Outbound] (インターネット アウトバウンドに関してプライベート) を選びます。
"アウトバウンド規則" を追加するには、[ネットワーク] タブから [ユーザー定義アウトバウンド規則の追加] を選びます。[アウトバウンド規則] サイド バーから、次の情報を指定します。
規則の名前 : 規則の名前。 このハブの名前は一意である必要があります。
送信先の種類 : ネットワーク分離がインターネット送信で非公開である場合、プライベート エンドポイントのみが選択されます。 ハブのマネージド仮想ネットワークでは、すべての Azure リソースの種類に対するプライベート エンドポイントの作成はサポートされていません。 サポートされているリソースの一覧で、[プライベート エンドポイント] セクションを参照してください。
サブスクリプション : プライベート エンドポイントを追加する Azure リソースを含むサブスクリプション。
リソース グループ : プライベート エンドポイントを追加する Azure リソースを含むリソース グループ。
リソースの種類 : Azure リソースの種類。
リソース名 : Azure リソースの名前。
サブ リソース : Azure リソースの種類のサブ リソース。
保存 を選択してルールを保存します。 [ユーザー定義アウトバウンド規則の追加] を引き続き使用して規則を追加できます。
通常どおりハブの作成を続行します。
既存の VM を更新する :
Azure portal にサインインし、マネージド仮想ネットワークの分離を有効にするハブを選びます。
[ネットワーク] を選択した後に、[インターネット送信を持つプライベート] を選択します。
"アウトバウンド規則" を "追加" するには、[ネットワーク] タブから [Add user-defined outbound rules] (ユーザー定義のアウトバウンド規則の追加) を選びます。[アウトバウンド規則] サイド バーでは、先ほどの [新しいハブを作成] セクションでハブの作成時に入力したのと同じ情報を設定します。
アウトバウンド規則を削除 するには、規則の [削除] を選択します。
ページの上部にある [保存] を選択して、マネージド仮想ネットワークへの変更を保存します。
インターネット送信通信を許可するようにマネージド仮想ネットワークを構成するには、--managed-network allow_internet_outbound
パラメーターまたは次のエントリを含む YAML 構成ファイルのいずれかを使います。
managed_network:
isolation_mode: allow_internet_outbound
また、ハブが依存する他の Azure サービスに対して "アウトバンド規則" を定義することもできます。 これらの規則によって、Azure リソースがマネージド仮想ネットワークと安全に通信できるようにする "プライベート エンドポイント" を定義します。 次の規則は、Azure BLOB リソースにプライベート エンドポイントを追加する方法を示しています。
managed_network:
isolation_mode: allow_internet_outbound
outbound_rules:
- name: added-perule
destination:
service_resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
spark_enabled: true
subresource_target: blob
type: private_endpoint
マネージド仮想ネットワークは、az ml workspace create
コマンドまたは az ml workspace update
コマンドのいずれかを使用して構成できます。
新しいハブを作成する :
次の例では、新しいハブを作成します。 --managed-network allow_internet_outbound
パラメーターは、ハブ用にマネージド仮想ネットワークを構成します。
az ml workspace create --name ws --resource-group rg --kind hub --managed-network allow_internet_outbound
代わりに YAML ファイルを使ってハブを作成するには、--file
パラメーターを使い、構成設定を含む YAML ファイルを指定します。
az ml workspace create --file hub.yaml --resource-group rg --name ws --kind hub
次の YAML の例では、マネージド仮想ネットワークがあるハブを定義しています。
name: myhub
location: EastUS
managed_network:
isolation_mode: allow_internet_outbound
既存の VM を更新する :
警告
マネージド仮想ネットワークを使うように既存のワークスペースを更新する前に、ワークスペースのすべてのコンピューティング リソースを削除する必要があります。 これには、コンピューティング インスタンス、コンピューティング クラスター、マネージド オンライン エンドポイントが含まれます。
次の例では、既存のハブを更新しています。 --managed-network allow_internet_outbound
パラメーターは、ハブ用にマネージド仮想ネットワークを構成します。
az ml workspace update --name ws --resource-group rg --kind hub --managed-network allow_internet_outbound
YAML ファイルを使って既存のハブを更新するには、--file
パラメーターを使い、構成設定を含む YAML ファイルを指定します。
az ml workspace update --file hub.yaml --name ws --kind hub --resource-group MyGroup
次の YAML の例では、ハブのマネージド仮想ネットワークを定義しています。 また、ハブが使うリソース (この例では BLOB ストアのプライベート エンドポイント) にプライベート エンドポイント接続を追加する方法も示しています。
name: myhub
managed_network:
isolation_mode: allow_internet_outbound
outbound_rules:
- name: added-perule
destination:
service_resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
spark_enabled: true
subresource_target: blob
type: private_endpoint
インターネット送信通信を許可するマネージド仮想ネットワークを構成するには、ManagedNetwork
クラスを使い、IsolationMode.ALLOW_INTERNET_OUTBOUND
を使ってネットワークを定義します。 これで、ManagedNetwork
オブジェクトを使用して、新しいハブを作成したり、既存のハブを更新したりできます。 ハブが依存する Azure サービスへの "アウトバウンド規則" を定義するには、PrivateEndpointDestination
クラスを使って、サービスに対する新しいプライベート エンドポイントを定義します。
新しいハブを作成する :
次の例では、myhub
という新しいハブを作成し、myrule
というアウトバウンド規則で Azure BLOB ストアのプライベート エンドポイントを追加しています。
# Basic managed VNet configuration
network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_INTERNET_OUTBOUND)
# Hub configuration
ws = Hub(
name="myhub",
location="eastus",
managed_network=network
)
# Example private endpoint outbound to a blob
rule_name = "myrule"
service_resource_id = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
subresource_target = "blob"
spark_enabled = True
# Add the outbound
ws.managed_network.outbound_rules = [PrivateEndpointDestination(
name=rule_name,
service_resource_id=service_resource_id,
subresource_target=subresource_target,
spark_enabled=spark_enabled)]
# Create the hub
ws = ml_client.workspaces.begin_create(ws).result()
既存の VM を更新する :
次の例は、myhub
という既存のハブのマネージド仮想ネットワークを作成する方法を示しています。
# Get the existing hub
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, "myhub")
ws = ml_client.workspaces.get()
# Basic managed VNet configuration
my_hub.managed_network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_INTERNET_OUTBOUND)
# Example private endpoint outbound to a blob
rule_name = "myrule"
service_resource_id = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
subresource_target = "blob"
spark_enabled = True
# Add the outbound
ws.managed_network.outbound_rules = [PrivateEndpointDestination(
name=rule_name,
service_resource_id=service_resource_id,
subresource_target=subresource_target,
spark_enabled=spark_enabled)]
# Update the hub
ml_client.workspaces.begin_update(ws)
ヒント
コンピューティング リソースを作成すると、マネージド VNet は自動的にプロビジョニングされます。 自動作成を許可すると、ネットワークのプロビジョニングも行われるため、最初のコンピューティング リソースの作成に約 30 分 かかることがあります。 FQDN アウトバウンド規則を構成した場合、最初の FQDN 規則のプロビジョニング時間は約 10 分 長くかかります。
新しいハブを作成する :
Azure portal にサインインし、[リソースの作成] メニューから [Azure AI Studio] を選択します。
[新しい Azure AI ] を選択します。
[基本] タブで、必要な情報を指定します。
[ネットワーク] タブから、[承認された送信を持つプライベート] を選択します。
"アウトバウンド規則" を追加するには、[ネットワーク] タブから [ユーザー定義アウトバウンド規則の追加] を選びます。[アウトバウンド規則] サイド バーから、次の情報を指定します。
規則の名前 : 規則の名前。 このハブの名前は一意である必要があります。
送信先の種類 : プライベート エンドポイント、サービス タグ、または FQDN。 サービス タグと FQDN は、ネットワーク分離が承認された送信で非公開である場合にのみ使用できます。
送信先の種類がプライベート エンドポイント の場合は、次の情報を指定します。
サブスクリプション : プライベート エンドポイントを追加する Azure リソースを含むサブスクリプション。
リソース グループ : プライベート エンドポイントを追加する Azure リソースを含むリソース グループ。
リソースの種類 : Azure リソースの種類。
リソース名 : Azure リソースの名前。
サブ リソース : Azure リソースの種類のサブ リソース。
ヒント
ハブのマネージド仮想ネットワークでは、すべての Azure リソースの種類に対するプライベート エンドポイントの作成はサポートされていません。 サポートされているリソースの一覧で、[プライベート エンドポイント] セクションを参照してください。
送信先の種類がサービス タグ の場合は、次の情報を指定します。
サービス タグ : 承認されたアウトバウンド規則に追加するサービス タグ。
プロトコル : サービス タグを許可するプロトコル。
ポート範囲 : サービス タグを許可するポート範囲。
送信先の種類が FQDN の場合は、次の情報を指定します。
FQDN 送信先 : 承認済みのアウトバウンド規則に追加する完全修飾ドメイン名。
保存 を選択してルールを保存します。 [ユーザー定義アウトバウンド規則の追加] を引き続き使用して規則を追加できます。
通常どおりハブの作成を続行します。
既存の VM を更新する :
Azure portal にサインインし、マネージド仮想ネットワークの分離を有効にするハブを選びます。
[ネットワーク] を選択した後に、[承認された送信を持つプライベート] を選択します。
"アウトバウンド規則" を "追加" するには、[ネットワーク] タブから [Add user-defined outbound rules] (ユーザー定義のアウトバウンド規則の追加) を選びます。[アウトバウンド規則] サイド バーでは、先ほどの [新しいハブを作成] セクションでハブの作成時に入力したのと同じ情報を設定します。
アウトバウンド規則を削除 するには、規則の [削除] を選択します。
ページの上部にある [保存] を選択して、マネージド仮想ネットワークへの変更を保存します。
承認された送信通信のみを許可するようにマネージド仮想ネットワークを構成するには、--managed-network allow_only_approved_outbound
パラメーターまたは次のエントリを含む YAML 構成ファイルのいずれかを使います。
managed_network:
isolation_mode: allow_only_approved_outbound
また、"アウトバウンド規則" を定義して、承認する送信通信を定義することもできます。 アウトバウンド規則は、service_tag
、fqdn
、private_endpoint
の種類に対して作成できます。 次の規則は、プライベート エンドポイントを Azure BLOB リソースに、サービス タグを Azure Data Factory に、FQDN を pypi.org
に追加する方法を示しています。
重要
サービス タグまたは FQDN の送信を追加することは、マネージド VNet が allow_only_approved_outbound
に構成されている場合にのみ有効です。
アウトバウンド規則を追加した場合、Microsoft はデータ流出を保証できません。
managed_network:
isolation_mode: allow_only_approved_outbound
outbound_rules:
- name: added-servicetagrule
destination:
port_ranges: 80, 8080
protocol: TCP
service_tag: DataFactory
type: service_tag
- name: add-fqdnrule
destination: 'pypi.org'
type: fqdn
- name: added-perule
destination:
service_resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
spark_enabled: true
subresource_target: blob
type: private_endpoint
マネージド仮想ネットワークは、az ml workspace create
コマンドまたは az ml workspace update
コマンドのいずれかを使用して構成できます。
新しいハブを作成する :
次の例では、--managed-network allow_only_approved_outbound
パラメーターを使ってマネージド仮想ネットワークを構成しています。
az ml workspace create --name ws --resource-group rg --kind hub --managed-network allow_only_approved_outbound
次の YAML ファイルでは、マネージド仮想ネットワークがあるハブを定義しています。
name: myhub
location: EastUS
managed_network:
isolation_mode: allow_only_approved_outbound
YAML ファイルを使ってハブを作成するには、--file
パラメーターを使います。
az ml workspace create --file hub.yaml --resource-group rg --name ws --kind hub
既存のハブを更新する
警告
マネージド仮想ネットワークを使うように既存のワークスペースを更新する前に、ワークスペースのすべてのコンピューティング リソースを削除する必要があります。 これには、コンピューティング インスタンス、コンピューティング クラスター、マネージド オンライン エンドポイントが含まれます。
次の例では、--managed-network allow_only_approved_outbound
パラメーターを使って、既存のハブのマネージド仮想ネットワークを構成しています。
az ml workspace update --name ws --resource-group rg --kind hub --managed-network allow_only_approved_outbound
次の YAML ファイルでは、ハブのマネージド仮想ネットワークを定義しています。 また、承認された送信をマネージド仮想ネットワークに追加する方法も示しています。 この例では、サービス タグの両方に対してアウトバウンド規則が追加されています。
name: myhub_dep
managed_network:
isolation_mode: allow_only_approved_outbound
outbound_rules:
- name: added-servicetagrule
destination:
port_ranges: 80, 8080
protocol: TCP
service_tag: DataFactory
type: service_tag
- name: add-fqdnrule
destination: 'pypi.org'
type: fqdn
- name: added-perule
destination:
service_resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
spark_enabled: true
subresource_target: blob
type: private_endpoint
承認されたアウトバウンド通信のみを許可するマネージド仮想ネットワークを構成するには、ManagedNetwork
クラスを使い、IsolationMode.ALLOw_ONLY_APPROVED_OUTBOUND
を使ってネットワークを定義します。 これで、ManagedNetwork
オブジェクトを使用して、新しいハブを作成したり、既存のハブを更新したりできます。 アウトバウンド規則 を定義するには、次のクラスを使用します。
宛先
クラス
ハブが依存する Azure サービス
PrivateEndpointDestination
Azure サービス タグ
ServiceTagDestination
完全修飾ドメイン名 (FQDN)
FqdnDestination
新しいハブを作成する :
次の例では、myhub
という新しいハブといくつかのアウトバウンド規則を作成しています。
myrule
- Azure Blob ストアのプライベート エンドポイントを追加します。
datafactory
- Azure Data Factory と通信するサービス タグ規則を追加します。
重要
サービス タグまたは FQDN の送信を追加することは、マネージド VNet が IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND
に構成されている場合にのみ有効です。
アウトバウンド規則を追加した場合、Microsoft はデータ流出を保証できません。
# Basic managed VNet configuration
network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND)
# Hub configuration
ws = Hub(
name="myhub",
location="eastus",
managed_network=network
)
# Append some rules
ws.managed_network.outbound_rules = []
# Example private endpoint outbound to a blob
rule_name = "myrule"
service_resource_id = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
subresource_target = "blob"
spark_enabled = True
ws.managed_network.outbound_rules.append(
PrivateEndpointDestination(
name=rule_name,
service_resource_id=service_resource_id,
subresource_target=subresource_target,
spark_enabled=spark_enabled
)
)
# Example service tag rule
rule_name = "datafactory"
service_tag = "DataFactory"
protocol = "TCP"
port_ranges = "80, 8080-8089"
ws.managed_network.outbound_rules.append(
ServiceTagDestination(
name=rule_name,
service_tag=service_tag,
protocol=protocol,
port_ranges=port_ranges
)
)
# Example FQDN rule
ws.managed_network.outbound_rules.append(
FqdnDestination(
name="fqdnrule",
destination="pypi.org"
)
)
# Create the hub
ws = ml_client.workspaces.begin_create(ws).result()
既存の VM を更新する :
次の例は、myhub
という既存の Azure Machine Learning ハブのマネージド仮想ネットワークを作成する方法を示しています。 また、この例では、マネージド仮想ネットワークに対していくつかのアウトバウンド規則も追加しています。
myrule
- Azure Blob ストアのプライベート エンドポイントを追加します。
datafactory
- Azure Data Factory と通信するサービス タグ規則を追加します。
ヒント
サービス タグまたは FQDN の送信を追加することは、マネージド VNet が IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND
に構成されている場合にのみ有効です。
# Get the existing hub
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, "myhub")
ws = ml_client.workspaces.get()
# Basic managed VNet configuration
ws.managed_network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND)
# Append some rules
ws.managed_network.outbound_rules = []
# Example private endpoint outbound to a blob
rule_name = "myrule"
service_resource_id = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
subresource_target = "blob"
spark_enabled = True
ws.managed_network.outbound_rules.append(
PrivateEndpointDestination(
name=rule_name,
service_resource_id=service_resource_id,
subresource_target=subresource_target,
spark_enabled=spark_enabled
)
)
# Example service tag rule
rule_name = "datafactory"
service_tag = "DataFactory"
protocol = "TCP"
port_ranges = "80, 8080-8089"
ws.managed_network.outbound_rules.append(
ServiceTagDestination(
name=rule_name,
service_tag=service_tag,
protocol=protocol,
port_ranges=port_ranges
)
)
# Example FQDN rule
ws.managed_network.outbound_rules.append(
FqdnDestination(
name="fqdnrule",
destination="pypi.org"
)
)
# Update the hub
ml_client.workspaces.begin_update(ws)
マネージド VNet を手動でプロビジョニングする
マネージド仮想ネットワークは、コンピューティング インスタンスを作成すると自動的にプロビジョニングされます。 自動作成を利用している場合、ネットワークのプロビジョニングも行われるため、最初のコンピューティング インスタンスの作成に約 30 分 かかることがあります。 FQDN アウトバウンド規則 (承認済みのみを許可するモードでだけ使用できます) を構成した場合、最初の FQDN 規則のプロビジョニング時間は約 10 分 長くかかります。 マネージド ネットワークにプロビジョニングするアウトバウンド規則が多数ある場合、プロビジョニングが完了するまでに時間がかかる場合があります。 プロビジョニングの時間が長くなると、最初のコンピューティング インスタンス作成がタイムアウトになる可能性があります。
待機時間を短縮し、潜在的なタイムアウト エラーを回避するには、マネージド ネットワークを手動でプロビジョニングすることをお勧めします。 次に、プロビジョニングが完了するまで待ってから、コンピューティング インスタンスを作成します。
または、provision_network_now
フラグを使用し、ハブ作成の一環としてマネージド ネットワークをプロビジョニングできます。 このフラグはプレビュー段階です。
Note
オンライン デプロイを作成するには、マネージド ネットワークを手動でプロビジョニングするか、コンピューティング インスタンスを最初に作成し、そのインスタンスにマネージド ネットワーキングを自動プロビジョニングさせる必要があります。
ハブの作成中、[作成時に事前にマネージド ネットワークをプロビジョニングする] を選択し、マネージド ネットワークをプロビジョニングします。 仮想ネットワークがプロビジョニングされると、プライベート エンドポイントなどのネットワーク リソースから料金が発生します。 この構成オプションは、ワークスペースの作成時にのみ使用できます。このオプションはプレビュー段階です。
次の例は、ハブ作成時にマネージド仮想ネットワークをプロビジョニングする方法を示しています。 --provision-network-now
フラグはプレビュー段階です。
az ml workspace create -n myworkspace -g my_resource_group --kind hub --managed-network AllowInternetOutbound --provision-network-now
次の例は、マネージド仮想ネットワークをプロビジョニングする方法を示しています。
az ml workspace provision-network -g my_resource_group -n my_ai_hub_name
プロビジョニングが完了したことを確認するには、次のコマンドを使用します。
az ml workspace show -n my_ai_hub_name -g my_resource_group --query managed_network
次の例は、ハブ作成時にマネージド仮想ネットワークをプロビジョニングする方法を示しています。 --provision-network-now
フラグはプレビュー段階です。
az ml workspace create -n myworkspace -g my_resource_group --managed-network AllowInternetOutbound --provision-network-now
次の例は、マネージド仮想ネットワークをプロビジョニングする方法を示しています。
# Connect to a workspace named "myworkspace"
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name="myAIHubName")
provision_network_result = ml_client.workspaces.begin_provision_network(workspace_name=ai_hub_name).result()
AI Hub がプロビジョニングされたことを確認するには、ml_client.workspaces.get()
を使用して AI Hub の情報を取得します。 managed_network
プロパティには、マネージド ネットワークの状態が含まれています。
ws = ml_client.workspaces.get()
print(ws.managed_network.status)
アウトバウンド規則を管理する
Azure portal にサインインし、マネージド仮想ネットワークの分離を有効にするハブを選びます。
[ネットワーク] を選択します。 [Azure AI Outbound access] (Azure AI 送信アクセス) セクションを使用すると、アウトバウンド規則を管理できます。
"アウトバウンド規則" を "追加" するには、[ネットワーク] タブから [Add user-defined outbound rules] (ユーザー定義のアウトバウンド規則の追加) を選びます。[Azure AI outbound rules] (Azure AI アウトバウンド規則) サイドバーから、次の情報を指定します。
規則を有効 または無効 にするには、[アクティブ] 列のトグルを使用します。
アウトバウンド規則を削除 するには、規則の [削除] を選択します。
ハブのマネージド仮想ネットワークのアウトバウンド規則を一覧表示するには、次のコマンドを使います。
az ml workspace outbound-rule list --workspace-name myhub --resource-group rg
マネージド仮想ネットワーク アウトバウンド規則の詳細を表示するには、次のコマンドを使います。
az ml workspace outbound-rule show --rule rule-name --workspace-name myhub --resource-group rg
マネージド仮想ネットワークからアウトバウンド規則を削除するには、次のコマンドを使います。
az ml workspace outbound-rule remove --rule rule-name --workspace-name myhub --resource-group rg
次の例は、myhub
というハブのアウトバウンド規則を管理する方法を示しています。
# Connect to the hub
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name="myhub")
# Specify the rule name
rule_name = "<some-rule-name>"
# Get a rule by name
rule = ml_client._workspace_outbound_rules.get(resource_group, ws_name, rule_name)
# List rules for a hub
rule_list = ml_client._workspace_outbound_rules.list(resource_group, ws_name)
# Delete a rule from a hub
ml_client._workspace_outbound_rules.begin_remove(resource_group, ws_name, rule_name).result()
必要な規則の一覧
ヒント
これらの規則は、マネージド VNet に自動的に追加されます。
プライベート エンドポイント :
マネージド仮想ネットワークの分離モードが Allow internet outbound
のとき、プライベート エンドポイントのアウトバウンド規則は、ハブのマネージド仮想ネットワークと、パブリック ネットワーク アクセスが無効になっている 関連リソース (Key Vault、Storage Account、Container Registry、ハブ) に必要な規則として自動的に作成されます。
マネージド仮想ネットワークの分離モードが Allow only approved outbound
のとき、プライベート エンドポイントのアウトバウンド規則は、ハブのマネージド仮想ネットワークと、パブリック ネットワークのアクセス モードに関係なく 関連リソース (Key Vault、Storage Account、Container Registry、ハブ) に必要な規則として自動的に作成されます。
アウトバウンド サービス タグの規則:
AzureActiveDirectory
Azure Machine Learning
BatchNodeManagement.region
AzureResourceManager
AzureFrontDoor.FirstParty
MicrosoftContainerRegistry
AzureMonitor
インバウンド サービス タグの規則:
シナリオ固有のアウトバウンド規則の一覧
シナリオ: パブリック機械学習パッケージにアクセスする
トレーニングとデプロイ用の Python パッケージ をインストールできるようにするには、アウトバウンド FQDN 規則を追加して、次のホスト名へのトラフィックを許可します。
Note
これは、インターネット上のすべての Python リソースに必要なホストの完全な一覧ではなく、最も一般的に使用されているもののみを取り上げています。 たとえば、GitHub リポジトリまたはその他のホストにアクセスする必要がある場合は、そのシナリオに必要なホストを特定して追加する必要があります。
ホスト名
目的
anaconda.com
*.anaconda.com
既定のパッケージをインストールするために使用されます。
*.anaconda.org
リポジトリ データを取得するために使用されます。
pypi.org
既定のインデックスからの依存関係 (存在する場合) を一覧表示するために使用されます。ユーザー設定によってこのインデックスが上書きされることはありません。 インデックスが上書きされる場合は、*.pythonhosted.org
も許可する必要があります。
pytorch.org
*.pytorch.org
PyTorch に基づくいくつかのサンプルによって使用されます。
*.tensorflow.org
Tensorflow に基づくいくつかのサンプルによって使用されます。
シナリオ: Visual Studio Code を使用する
Visual Studio Code は、リモート接続を確立するために特定のホストとポートに依存します。
Hosts
Azure AI ハブで Visual Studio Code を使う予定の場合は、アウトバウンド FQDN 規則を追加して、次のホストへのトラフィックを許可します。
*.vscode.dev
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
raw.githubusercontent.com
*.vscode-unpkg.net
*.vscode-cdn.net
*.vscodeexperiments.azureedge.net
default.exp-tas.com
code.visualstudio.com
update.code.visualstudio.com
*.vo.msecnd.net
marketplace.visualstudio.com
pkg-containers.githubusercontent.com
github.com
Port
ポート 8704 から 8710 へのネットワーク トラフィックを許可する必要があります。 VS Code サーバーは、この範囲内の最初の使用可能なポートを動的に選択します。
シナリオ: HuggingFace モデルを使用する
ハブで HuggingFace モデル を使う予定の場合は、アウトバウンド FQDN 規則を追加して、次のホストへのトラフィックを許可します。
docker.io
*.docker.io
*.docker.com
production.cloudflare.docker.com
cnd.auth0.com
cdn-lfs.huggingface.co
シナリオ: Azure AI によるキュレーション
これらのモデルには、実行時の依存関係の動的インストールが含まれ、次のホストへのトラフィックを許可するアウトバウンド FQDN 規則が必要です。
*.anaconda.org *.anaconda.com anaconda.com pypi.org *.pythonhosted.org *.pytorch.org pytorch.org
プライベート エンドポイント
プライベート エンドポイントは現在、次の Azure サービスでサポートされています。
AI Studio ハブ
Azure AI Search
Azure AI サービス
Azure API Management
Azure Container Registry
Azure Cosmos DB (すべてのサブ リソースの種類)
Azure Data Factory
Azure Database for MariaDB
Azure Database for MySQL
Azure Database for PostgreSQL 単一サーバー
Azure Database for PostgreSQL フレキシブル サーバー
Azure Databricks
Azure Event Hubs
Azure Key Vault
Azure Machine Learning
Azure Machine Learning レジストリ
Azure Redis Cache
Azure SQL Server
Azure Storage (すべてのサブ リソースの種類)
プライベート エンドポイントを作成する場合は、エンドポイントが接続するリソースの種類 とサブリソース を指定します。 一部のリソースには、複数の種類とサブリソースがあります。 詳細については、「プライベート エンドポイントとは 」を参照してください。
Azure Storage、Azure Container Registry、Azure Key Vault などのハブ依存関係リソースのプライベート エンドポイントを作成する場合、そのリソースは別の Azure サブスクリプションに含めることができます。 ただし、リソースはハブと同じテナントに存在する必要があります。
ターゲット リソースが前にリストアップされた Azure リソースである場合、接続用にプライベート エンドポイントが自動的に作成されます。 プライベート エンドポイントには有効なターゲット ID が必要です。 接続の有効なターゲット ID は、親リソースの Azure Resource Manager ID でかまいません。 ターゲット ID は、接続のターゲットまたは metadata.resourceid
でも必要です。 接続に関する詳細情報については、「Azure AI Studio で新しい接続を追加する方法 」を参照してください。
承認された送信のみを許可する Azure Firewall バージョンを選択する (プレビュー)
Azure Firewall は、[承認された送信のみを許可する] モードのときに FQDN アウトバウンド規則が作成される場合にデプロイされます。 Azure Firewall の料金は請求に含まれます。 既定では、Standard バージョンの AzureFirewall が作成されます。 必要に応じて、Basic バージョンの使用を選択できます。 使用するファイアウォールのバージョンは、必要に応じて変更できます。 最適なバージョンを確認するには、適切な Azure Firewall バージョンの選択 に関する記事を参照してください。
重要
アウトバウンド FQDN 規則を追加するまで、ファイアウォールは作成されません。 価格の詳細については、「Azure Firewall の価格 」で "標準" バージョンの価格を確認してください。
マネージド仮想ネットワークのファイアウォール バージョンを選択する方法を確認するには、次のタブを使用します。
[承認された送信のみを許可する] モードを選択すると、Azure Firewall バージョン (SKU) を選択するためのオプションが表示されます。 標準バージョンを使用するには [Standard] を選択し、基本バージョンを使用するには [Basic] を選択します。 [追加] を選択して構成を保存します。
CLI からファイアウォール バージョンを構成するには、YAML ファイルを使用して、firewall_sku
を指定します。 次の例は、ファイアウォール SKU が basic
に設定されている YAML ファイルを示しています。
name: test-ws
resource_group: test-rg
location: eastus2
managed_network:
isolation_mode: allow_only_approved_outbound
outbound_rules:
- category: required
destination: 'contoso.com'
name: contosofqdn
type: fqdn
firewall_sku: basic
tags: {}
Python SDK からファイアウォール バージョンを構成するには、ManagedNetwork
オブジェクトの firewall_sku
プロパティを設定します。 次の例は、ファイアウォール SKU を basic
に設定する方法を示しています。
network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_INTERNET_OUTBOUND,
firewall_sku='basic')
価格
ハブのマネージド仮想ネットワーク機能は無料です。 ただし、マネージド仮想ネットワークで使用される次のリソースに対して課金されます。
Azure Private Link - マネージド仮想ネットワークと Azure リソースとの間の通信をセキュリティで保護するために使用されるプライベート エンドポイントは、Azure Private Link に依存します。 詳細については、「Azure Private Link の価格 」を参照してください。
FQDN アウトバウンド規則 - FQDN アウトバウンド規則は、Azure Firewall を使用して実装されます。 FQDN アウトバウンド規則を使用する場合は、Azure Firewall の料金が請求に含まれます。 既定では、標準バージョンの AzureFirewall が使用されます。 基本バージョンの選択に関する詳細については、Azure Firewall のバージョンを選択する 方法に関するページを参照してください。 Azure Firewall はハブごとにプロビジョニングされます。
重要
アウトバウンド FQDN 規則を追加するまで、ファイアウォールは作成されません。 FQDN 規則を使わない場合、Azure Firewall については課金されません。 価格の詳細については、「Azure Firewall の価格 」を参照してください。
関連するコンテンツ