適用対象:
Azure CLI ml extension v2 (現行)
Python SDK azure-ai-ml v2 (現行)
機械学習モデルをマネージド オンライン エンドポイントにデプロイするときに、プライベート エンドポイントを使ってオンライン エンドポイントとの通信をセキュリティ保護できます。 この記事では、プライベート エンドポイントがマネージド オンライン エンドポイントへの受信通信をセキュリティで保護する方法について説明します。 また、ワークスペースマネージド仮想ネットワークがデプロイとリソース間の安全な通信を提供する方法についても説明します。
クライアントから "オンライン エンドポイント" への受信スコアリング要求をセキュリティで保護し、"デプロイ"、使用する Azure リソース、およびプライベート リソース間の送信通信をセキュリティで保護できます。 受信と送信の通信のセキュリティは個別に構成します。 エンドポイントとデプロイについて詳しくは、「エンドポイントとデプロイとは」をご覧ください。
次のアーキテクチャ図は、マネージド オンライン エンドポイントへの通信がプライベート エンドポイントを経由してどのように流れるかを示したものです。 受信スコアリング要求は、クライアントの仮想ネットワークからワークスペースのプライベート エンドポイントを経由してマネージド オンライン エンドポイントに流れます。 デプロイからサービスへの送信通信は、ワークスペースのマネージド仮想ネットワークからそれらのサービス インスタンスへ、プライベート エンドポイントを通じて処理されます。
注
- この記事では、ワークスペースのマネージド仮想ネットワークを使用したネットワーク分離について説明します。 Azure Machine Learning がエンドポイント内のデプロイごとにマネージド仮想ネットワークを作成する、ネットワーク分離の従来の方法の説明については、「付録」を参照してください。
- 各デプロイは、この記事で説明する受信通信と送信通信に関係なく、他のデプロイから分離されます。 言い換えると、インターネットの受信アクセスと送信アクセスを許可するエンドポイントとデプロイでも、デプロイ間にネットワーク分離が存在し、デプロイが他のデプロイに直接接続できなくなります。
制限事項
azure Machine Learning ワークスペースで v1 レガシ モードをオフにするには、
v1_legacy_modeフラグをfalseに設定する必要があります。 この設定が有効になっている場合、マネージド オンライン エンドポイントを作成することはできません。 詳細については、 Azure Resource Manager の新しい API プラットフォームによるネットワーク分離の変更に関するページを参照してください。Azure Machine Learning ワークスペースに 2022 年 5 月 24 日より前に作成されたプライベート エンドポイントがある場合は、プライベート エンドポイントを使用するようにオンライン エンドポイントを構成する前に、そのプライベート エンドポイントを再作成する必要があります。 ワークスペースのプライベート エンドポイントの作成の詳細については、「 Azure Machine Learning ワークスペースのプライベート エンドポイントを構成する」を参照してください。
ヒント
ワークスペースの作成日を確認するには、ワークスペースのプロパティを確認します。
- Azure Machine Learning Studio で、右上隅に移動し、ワークスペースの名前を選択します。
- [ディレクトリ + サブスクリプション + ワークスペース] ウィンドウで、[ Azure portal ですべてのプロパティを表示] を選択します。
- Azure portal の [概要] ページで、右上隅に移動し、[ JSON ビュー] を選択します。
- [リソース JSON] ウィンドウの [ API バージョン] で、最新の API バージョンを選択します。
- JSON コードの
propertiesセクションで、creationTime値を確認します。
または、次のいずれかの方法を使用します。
-
Python SDK:
Workspace.get(name=<workspace-name>, subscription_id=<subscription-ID>, resource_group=<resource-group-name>).get_details() -
REST API:
curl https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/?api-version=2023-10-01 -H "Authorization:Bearer <access-token>" -
PowerShell:
Get-AzMLWorkspace -Name <workspace-name> -ResourceGroupName <resource-group-name>
ネットワーク分離を使用してオンライン エンドポイントをセキュリティで保護する場合は、ワークスペース リソース グループとは異なるリソース グループのワークスペース関連リソースを使用できます。 ただし、これらのリソースはワークスペースと同じサブスクリプションとテナントに属している必要があります。 ワークスペースに関連付けられているリソースには、Azure Container Registry、Azure Storage、Azure Key Vault、Application Insights が含まれます。
注
この記事では、データ プレーン操作に適用されるネットワーク分離について説明します。 これらの操作は、スコアリング要求またはモデルサービングに起因します。 認証キーの作成、更新、削除、取得の要求などのコントロール プレーン操作は、パブリック ネットワーク経由で Azure Resource Manager に送信されます。
受信スコアリング要求をセキュリティで保護する
Azure Machine Learning ワークスペースのプライベート エンドポイントを使用して、クライアントからマネージド オンライン エンドポイントへの受信通信をセキュリティで保護できます。 クライアントの仮想ネットワーク上のこのプライベート エンドポイントは、マネージド オンライン エンドポイントのワークスペースと通信し、マネージド オンライン エンドポイントがクライアントからの受信スコアリング要求を受信する手段です。
オンライン エンドポイントへのスコアリング要求をセキュリティで保護し、クライアントがワークスペースのプライベート エンドポイント経由でのみアクセスできるようにするには、エンドポイントの public_network_access フラグを disabled に設定します。 エンドポイントを作成したら、必要に応じて、この設定を更新してパブリック ネットワーク アクセスを有効にすることができます。
エンドポイントの public_network_access フラグを disabled に設定します。
Azure CLI コマンドを実行する前に、次の手順を実行します。
- 現在の作業ディレクトリ (ローカルまたは Azure Cloud Shell) に
endpoint.ymlファイルがあることを確認します。 - Azure Cloud Shell を使用する場合は、
endpoint.ymlアップロードするか、それを含むリポジトリを Cloud Shell のホーム ディレクトリに複製します。 - 既定の Azure Machine Learning ワークスペースとリソース グループが設定されていない場合は、
--resource-groupパラメーターと--workspace-nameパラメーターを追加します。
az ml online-endpoint create \
--file endpoint.yml \
--set public_network_access=disabled
# Optionally specify the workspace and resource group explicitly
az ml online-endpoint create \
--file endpoint.yml \
--resource-group <resource-group-name> \
--workspace-name <workspace-name> \
--set public_network_access=disabled
No such file or directory: endpoint.yml エラーが表示された場合は、endpoint.ymlが現在のディレクトリに存在し、そのディレクトリからコマンドを実行していることを確認します。
public_network_accessを無効にすると、ワークスペースのプライベート エンドポイントは受信スコアリング要求を受け取り、パブリック ネットワークはエンドポイントに到達できません。
public_network_accessを有効にすると、エンドポイントはインターネットから受信スコアリング要求を受信できます。
特定の IP アドレスからのパブリック ネットワーク アクセスを利用したインバウンド スコアリングをセキュリティで保護する
Azure Machine Learning ワークスペースは、特定の IP アドレスまたはアドレス範囲からのパブリック ネットワーク アクセスの有効化をサポートしています。 この機能には、マネージド オンライン エンドポイントの public_network_access フラグとの対話式操作があり、どのような場合にこれをマネージド オンライン エンドポイントで使用するかを把握しておく必要があります。 詳細については、「シナリオ: 特定の IP アドレスからのアクセス権を持つマネージド オンライン エンドポイント」を参照してください。
ワークスペースのマネージド仮想ネットワークを使用して送信アクセスをセキュリティで保護する
デプロイからサービスへの送信通信をセキュリティで保護するには、Azure Machine Learning ワークスペースのマネージド仮想ネットワーク分離を有効にして、Azure Machine Learning がワークスペースのマネージド仮想ネットワークを作成できるようにする必要があります。 ワークスペース内のすべてのマネージド オンライン エンドポイント (およびコンピューティング クラスターやコンピューティング インスタンスなど、ワークスペースのマネージド コンピューティング リソース) では、このワークスペースのマネージド仮想ネットワークが自動的に使用され、エンドポイントの下のデプロイでは、ワークスペースのリソースと通信するためにマネージド仮想ネットワークのプライベート エンドポイントが共有されます。
マネージド仮想ネットワークを使用してワークスペースをセキュリティで保護すると、マネージド オンライン デプロイの egress_public_access フラグは適用されなくなります。 マネージド オンライン デプロイを作成するときは、このフラグを設定しないでください。
ワークスペースのマネージド仮想ネットワークとの送信通信の場合、Azure Machine Learning: は以下のように動作します。
- ワークスペースが使用する Azure リソース (Azure Storage、Azure Key Vault、Azure Container Registry など) との通信に使用するマネージド仮想ネットワークのプライベート エンドポイントを作成します。
- デプロイに Microsoft Container Registry (MCR) へのアクセスを許可します。これは、キュレーションされた環境または MLflow のコードなしのデプロイを使用する場合に役立ちます。
- ユーザーによるプライベート リソースに対するプライベート エンドポイント送信規則の構成、およびパブリック リソースに対する送信規則 (サービス タグまたは FQDN) の構成を許可します。 送信規則を管理する方法の詳細については、「アウトバウンド規則を管理する」を参照してください。
さらに、ワークスペースマネージド仮想ネットワークからの送信トラフィックに対して、次の 2 つの分離モードを構成できます。
- インターネット送信を許可する: マネージド仮想ネットワークからのすべてのインターネット送信トラフィックを許可します。
- 承認された送信のみを許可し、プライベート エンドポイント、FQDN 送信規則、およびサービス タグ送信規則を使用して送信トラフィックを制御します。
たとえば、ワークスペースのマネージド仮想ネットワークに、マネージド オンライン エンドポイントの下に 2 つのデプロイが含まれている場合、両方のデプロイでワークスペースのプライベート エンドポイントを使用して通信できます。
- Azure Machine Learning ワークスペース
- ワークスペースに関連付けられている Azure Storage Blob
- ワークスペースの Azure Container Registry
- Azure Key Vault
- (オプション) プライベート エンドポイントをサポートする追加のプライベート リソース。
ワークスペースのマネージド仮想ネットワークの構成の詳細については、「マネージド仮想ネットワークのアーキテクチャ」を参照してください。
ネットワーク分離構成のシナリオ
Azure Machine Learning ワークスペースとマネージド オンライン エンドポイントにはそれぞれ、受信通信の構成に使用できる public_network_access フラグがあります。 一方、デプロイからの送信通信は、ワークスペースのマネージド仮想ネットワークによって異なります。
マネージド オンライン エンドポイントとの通信
マネージド オンライン エンドポイントに AI モデルを使用するデプロイがあり、アプリを使用してスコアリング要求をエンドポイントに送信するとします。 マネージド オンライン エンドポイントに使用するネットワーク分離構成は、次のように決定できます。
受信通信について:
アプリがインターネット上で一般公開されている場合は、アプリからの受信スコアリング要求を受信できるように、エンドポイントの をpublic_network_accessにする必要があります。
ただし、組織内の内部アプリなど、アプリがプライベートである場合は、AI モデルをインターネットに公開するのではなく、組織内でのみ使用する必要があります。 したがって、エンドポイントの をpublic_network_accessにして、ワークスペースのプライベート エンドポイント経由でのみ受信スコアリング要求を受信できるようにする必要があります。
送信通信 (デプロイ) について:
デプロイがプライベート Azure リソース (Azure Storage BLOB、ACR、Azure Key Vault など) にアクセスする必要がある、またはデプロイがインターネットにアクセスすることは許容できないとします。 この場合、"ワークスペースのマネージド仮想ネットワーク" を承認された送信のみを許可する分離モードで有効にする必要があります。 この分離モードでは、デプロイから承認済みの宛先への送信通信のみが許可されるため、データ流出から保護されます。 さらに、ワークスペースの送信規則を追加して、より多くのプライベート リソースまたはパブリック リソースへのアクセスを許可できます。 詳細については、「承認された送信のみを許可するマネージド仮想ネットワークを構成する」を参照してください。
ただし、デプロイでインターネットにアクセスする場合は、ワークスペースのマネージド仮想ネットワークをインターネット送信を許可する分離モードで使用できます。 インターネットにアクセスできるだけではなく、マネージド仮想ネットワークのプライベート エンドポイントを使用して、必要なプライベート Azure リソースにアクセスできるようになります。
最後に、デプロイでプライベート Azure リソースにアクセスする必要がなく、インターネットへのアクセスを制御する必要もない場合は、ワークスペースのマネージド仮想ネットワークを使用する必要はありません。
Azure Machine Learning ワークスペースへの受信通信
Azure Machine Learning ワークスペースの public_network_access フラグを使用して、受信ワークスペース アクセスを有効または無効にすることができます。
通常、(ワークスペースの public_network_access フラグを無効にして) ワークスペースへの受信通信をセキュリティで保護する場合は、マネージド オンライン エンドポイントへの受信通信もセキュリティで保護する必要があります。
次のグラフは、Azure Machine Learning ワークスペースとマネージド オンライン エンドポイントへの受信通信をセキュリティで保護するための一般的なワークフローを示しています。 セキュリティを最大限に高めるために、ワークスペースとマネージド オンライン エンドポイントの public_network_access フラグを無効にして、パブリック インターネット経由でどちらにもアクセスできないようにすることをお勧めします。 ワークスペースにプライベート エンドポイントがない場合は作成して、適切な DNS 解決を含めるようにすることができます。 その後、ワークスペースのプライベート エンドポイントを使用して、マネージド オンライン エンドポイントにアクセスできます。
注
マネージド オンライン エンドポイントでは、ワークスペースのプライベート エンドポイントを共有します。 プライベート DNS ゾーン privatelink.api.azureml.ms に DNS レコードを手動で追加する場合は、ワークスペース内のすべてのエンドポイントをプライベート エンドポイントにルーティングするために、ワイルドカード *.<per-workspace globally-unique identifier>.inference.<region>.privatelink.api.azureml.ms を含む A レコードを追加する必要があります。
ワークスペースとプライベート エンドポイントの DNS 解決の詳細については、「カスタム DNS サーバーでワークスペースを使用する方法」を参照してください。
付録
従来のネットワークの分離方法を使用して送信アクセスをセキュリティで保護する
マネージド オンライン エンドポイントの場合、エンドポイント内のデプロイごとに Azure Machine Learning マネージド仮想ネットワークを使用することで、デプロイとリソース間の送信通信をセキュリティで保護できます。 セキュリティで保護された送信通信は、これらのサービス インスタンスに対するプライベート エンドポイントを使用することでも処理されます。
注
この従来の方法ではなく、「ワークスペースのマネージド仮想ネットワークを使用して送信アクセスをセキュリティで保護する」で説明されている方法を使用することを強くお勧めします。
デプロイと、それで使用される Azure リソースを含む外部リソースとの間の通信を制限するには、次のことを確認する必要があります。
デプロイの
egress_public_network_accessフラグがdisabledになっていること。 このフラグにより、デプロイに必要なモデル、コード、イメージのダウンロードがプライベート エンドポイントでセキュリティ保護されるようになります。 デプロイを作成すると、egress_public_network_accessフラグを更新 (有効化または無効化) することはできません。 デプロイの更新中にフラグを変更しようとすると、エラーで失敗します。ワークスペースに、プライベート エンドポイント経由で Azure リソースにアクセスできるプライベート リンクがあること。
ワークスペースには、有効または無効にできる
public_network_accessフラグがあります。 パブリック送信を使用するマネージド オンライン展開の使用を計画している場合は、パブリック アクセスを許可するようにワークスペースも構成する必要があります。 オンラインデプロイからの送信通信が ワークスペース API に対して行われるため、この要件が存在します。 パブリック送信を使用するようにデプロイを構成する場合、ワークスペースはそのパブリック通信を受け入れる (パブリック アクセスを許可する) 必要があります。
複数のデプロイがあり、マネージド オンライン エンドポイントのデプロイごとに egress_public_network_access を disabled に構成した場合、各デプロイは独自の独立した Azure Machine Learning マネージド仮想ネットワークを持っています。 Azure Machine Learning では、仮想ネットワークごとに、次のサービスとの通信用に 3 つのプライベート エンドポイントが作成されます。
- Azure Machine Learning ワークスペース
- ワークスペースに関連付けられている Azure Storage Blob
- ワークスペースの Azure Container Registry
たとえば、マネージド オンライン エンドポイントの 2 つのデプロイに対する egress_public_network_access フラグを disabled に設定すると、合計 6 つのプライベート エンドポイントが作成されます。 各デプロイでは、3 つのプライベート エンドポイントを使用して、ワークスペース、BLOB、コンテナー レジストリと通信します。
重要
Azure Machine Learning では、デプロイのマネージド仮想ネットワークとクライアントの仮想ネットワークの間のピアリングはサポートされていません。 デプロイに必要なリソースへの安全なアクセスのために、プライベート エンドポイントを使用してリソースと通信します。
次の図は、クライアントの仮想ネットワークからワークスペースのプライベート エンドポイントを経由してマネージド オンライン エンドポイントに流れる受信スコアリング要求を示しています。 この図には 2 つのオンライン デプロイも示されており、それぞれ独自の Azure Machine Learning マネージド仮想ネットワーク内にあります。 各デプロイの仮想ネットワークには、Azure Machine Learning ワークスペース、ワークスペースに関連付けられた Azure Storage Blob、およびワークスペースの Azure Container Registry との送信通信用の 3 つのプライベート エンドポイントがあります。
egress_public_network_access を無効にしてプライベート エンドポイントを作成するには:
az ml online-deployment create -f deployment.yml --set egress_public_network_access=disabled
プライベート エンドポイントの作成を確認するには、まず、ワークスペースに関連するストレージ アカウントとコンテナー レジストリを確認し (詳細は「構成ファイルをダウンロードする」を参照してください)、Azure portal で各リソースを見つけて、[Private endpoint connections] メニューの [Networking] タブを確認します。
重要
- 前述のとおり、マネージド オンライン エンドポイントデプロイからのアウトバウンド通信は、ワークスペース API に対して行われます。 エンドポイントがパブリック送信を使用するように構成されている場合 (つまり、エンドポイントの
public_network_accessフラグがenabledに設定されている場合)、ワークスペースはそのパブリック通信を受け入れることができる (ワークスペースのpublic_network_accessフラグがenabledに設定されている) 必要があります。 -
egress_public_network_accessフラグをdisabledに設定してオンライン デプロイを作成すると、セキュリティで保護されたリソース (ワークスペース、BLOB、コンテナー レジストリ) にのみアクセスできます。 たとえば、デプロイで他のストレージ アカウントにアップロードされたモデル資産が使用されている場合、モデルのダウンロードは失敗します。 モデル資産がワークスペースに関連するストレージ アカウントにあることをご確認ください。 -
egress_public_network_accessがdisabledに設定されている場合、デプロイは、仮想ネットワークでセキュリティ保護されたワークスペースに関連するリソースにのみアクセスできます。 一方、egress_public_network_accessがenabledに設定されている場合、デプロイはパブリック アクセスを持つリソースにのみアクセスできます。つまり、仮想ネットワークでセキュリティ保護されたリソースにアクセスできません。
次の表は、オンライン エンドポイントのインバウンドとアウトバウンドの通信を構成するときにサポートされる構成です。
| 構成 | インバウンド (エンドポイントのプロパティ) |
アウトバウンド (デプロイのプロパティ) |
サポート対象 |
|---|---|---|---|
| セキュリティ保護されたインバウンドとセキュリティ保護されたアウトバウンド |
public_network_access が無効 |
egress_public_network_access が無効 |
イエス |
| セキュリティ保護されたインバウンドとパブリック アウトバウンド |
public_network_access が無効 |
egress_public_network_access が有効になっているワークスペースでは、ワークスペース API へのデプロイの送信が行われるので、パブリック アクセスも許可する必要があります。 |
イエス |
| パブリック インバウンドとセキュリティ保護されたアウトバウンド |
public_network_access が有効 |
egress_public_network_access が無効 |
イエス |
| パブリック インバウンドとパブリック アウトバウンド |
public_network_access が有効 |
egress_public_network_access が有効になっているワークスペースでは、ワークスペース API へのデプロイの送信が行われるので、パブリック アクセスも許可する必要があります。 |
イエス |