マネージド オンライン エンドポイントでのネットワークの分離
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
機械学習モデルをマネージド オンライン エンドポイントにデプロイするときに、プライベート エンドポイントを使ってオンライン エンドポイントとの通信をセキュリティ保護できます。 この記事では、プライベート エンドポイントを使用して、マネージド オンライン エンドポイントへの受信通信を保護する方法について説明します。 また、ワークスペースのマネージド仮想ネットワークを使用して、デプロイとリソース間の安全な通信を提供する方法についても説明します。
クライアントから "オンライン エンドポイント" への受信スコアリング要求をセキュリティで保護し、"デプロイ"、使用する Azure リソース、およびプライベート リソース間の送信通信をセキュリティで保護できます。 インバウンドとアウトバウンドの通信のセキュリティは、個別に構成されます。 エンドポイントとデプロイについて詳しくは、「エンドポイントとデプロイとは」をご覧ください。
次のアーキテクチャ図は、マネージド オンライン エンドポイントへの通信がプライベート エンドポイントを経由してどのように流れるかを示したものです。 受信スコアリング要求は、クライアントの仮想ネットワークからワークスペースのプライベート エンドポイントを経由してマネージド オンライン エンドポイントに流れます。 デプロイからサービスへの送信通信は、ワークスペースのマネージド仮想ネットワークからそれらのサービス インスタンスへ、プライベート エンドポイントを通じて処理されます。
Note
- この記事では、ワークスペースのマネージド仮想ネットワークを使用したネットワーク分離に焦点を当てています。 Azure Machine Learning がエンドポイント内のデプロイごとにマネージド仮想ネットワークを作成する、ネットワーク分離の従来の方法の説明については、「付録」を参照してください。
- 各デプロイは、この記事で説明する受信通信と送信通信に関係なく、他のデプロイから分離されます。 言い換えると、インターネットの受信/送信を許可するエンドポイント/デプロイであっても、デプロイ間でネットワークが分離され、デプロイが他のデプロイに直接接続できなくなります。
制限事項
Azure Machine Learning ワークスペースで
v1_legacy_mode
フラグを無効 (false) にする必要があります。 このフラグが有効になっている場合、マネージド オンライン エンドポイントを作成できません。 詳細については、v2 API を使用したネットワークの分離に関する記事を参照してください。お使いの Azure Machine Learning ワークスペースのプライベート エンドポイントが 2022 年 5 月 24 日より前に作成されたものである場合は、ワークスペースのプライベート エンドポイントを作り直してから、プライベート エンドポイントを使うようにオンライン エンドポイントを構成する必要があります。 ワークスペース用のプライベート エンドポイントの作成について詳しくは、Azure Machine Learning ワークスペース用にプライベート エンドポイントを構成する方法に関する記事をご覧ください。
ヒント
ワークスペースが作成されたときに確認するには、ワークスペースのプロパティをチェックできます。
Studio で、
Directory + Subscription + Workspace
セクション (Studio の右上) に移動し、View all properties in Azure Portal
を選択します。 [概要] ページの右上にある JSON ビューを選択し、最新の API バージョンを選択します。 このページから、properties.creationTime
の値をチェックできます。あるいは、
az ml workspace show
を CLI で使用するか、my_ml_client.workspace.get("my-workspace-name")
を SDK で使用するか、ワークスペースのcurl
を REST API で使用します。オンライン エンドポイントでネットワーク分離を使用する場合、ワークスペースのリソース グループとは異なるリソース グループの、ワークスペースに関連付けられたリソース (Azure Container Registry (ACR)、ストレージ アカウント、Key Vault、Application Insights) を使用できます。 ただし、これらのリソースはワークスペースと同じサブスクリプションとテナントに属している必要があります。
Note
この記事で説明するネットワーク分離は、データ プレーン操作、つまり、スコアリング要求 (またはモデルの提供) から生じる操作に適用されます。 コントロール プレーン操作 (認証キーの作成、更新、削除、または取得の要求) は、パブリック ネットワーク経由で Azure Resource Manager に送信されます。
受信スコアリング要求をセキュリティで保護する
Azure Machine Learning ワークスペースのプライベート エンドポイントを使用することで、クライアントからマネージド オンライン エンドポイントへの受信通信のセキュリティ保護が可能になります。 クライアントの仮想ネットワーク上のこのプライベート エンドポイントは、マネージド オンライン エンドポイントのワークスペースと通信し、マネージド オンライン エンドポイントがクライアントからの受信スコアリング要求を受信できる手段となります。
オンライン エンドポイントへのスコアリング要求をセキュリティで保護し、クライアントがワークスペースのプライベート エンドポイント経由でのみアクセスできるようにするには、エンドポイントの public_network_access
フラグを disabled
に設定します。 エンドポイントを作成した後、必要に応じてこの設定を更新してパブリック ネットワーク アクセスを有効にすることができます。
エンドポイントの public_network_access
フラグを disabled
に設定します。
az ml online-endpoint create -f endpoint.yml --set public_network_access=disabled
public_network_access
が disabled
に設定されていると、インバウンド スコアリング要求はワークスペースのプライベート エンドポイントを使って受信され、パブリック ネットワークからエンドポイントに到達することはできません。
代わりに、public_network_access
を enabled
に設定すると、エンドポイントはインターネットから受信スコアリング要求を受信できるようになります。
特定の IP アドレスからのパブリック ネットワーク アクセスを利用したインバウンド スコアリングをセキュリティで保護する
Azure Machine Learning ワークスペースは、特定の IP アドレスまたはアドレス範囲からのパブリック ネットワーク アクセスの有効化をサポートしています。 この機能には、マネージド オンライン エンドポイントの public_network_access
フラグとの対話式操作があり、どのような場合にこれをマネージド オンライン エンドポイントで使用するかを把握しておく必要があります。 詳細については、「シナリオ: 特定の IP アドレスからのアクセス権を持つマネージド オンライン エンドポイント」を参照してください。
ワークスペースのマネージド仮想ネットワークを使用して送信アクセスをセキュリティで保護する
デプロイからサービスへの送信通信をセキュリティで保護するには、Azure Machine Learning ワークスペースのマネージド仮想ネットワーク分離を有効にして、Azure Machine Learning がワークスペースのマネージド仮想ネットワークを作成できるようにする必要があります。 ワークスペース内のすべてのマネージド オンライン エンドポイント (およびコンピューティング クラスターやコンピューティング インスタンスなど、ワークスペースのマネージド コンピューティング リソース) では、このワークスペースのマネージド仮想ネットワークが自動的に使用され、エンドポイントの下のデプロイでは、ワークスペースのリソースと通信するためにマネージド仮想ネットワークのプライベート エンドポイントが共有されます。
マネージド仮想ネットワークを使用してワークスペースをセキュリティで保護すると、マネージド オンライン デプロイの egress_public_access
フラグは適用されなくなります。 マネージド オンライン デプロイを作成するときは、このフラグを設定しないでください。
ワークスペースのマネージド仮想ネットワークとの送信通信の場合、Azure Machine Learning: は以下のように動作します。
- Azure Storage、Azure Key Vault、Azure Container Registry など、ワークスペースで使用される Azure リソースとの通信に使用するマネージド仮想ネットワークのプライベート エンドポイントを作成します。
- デプロイに 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 解決を含めるようにすることができます。 その後、ワークスペースのプライベート エンドポイントを使用して、マネージド オンライン エンドポイントにアクセスできます。
Note
マネージド オンライン エンドポイントでは、ワークスペースのプライベート エンドポイントを共有します。 プライベート DNS ゾーン privatelink.api.azureml.ms
に DNS レコードを手動で追加する場合は、ワークスペース内のすべてのエンドポイントをプライベート エンドポイントにルーティングするために、ワイルドカード *.<per-workspace globally-unique identifier>.inference.<region>.privatelink.api.azureml.ms
を含む A レコードを追加する必要があります。
ワークスペースとプライベート エンドポイントの DNS 解決の詳細については、「カスタム DNS サーバーでワークスペースを使用する方法」を参照してください。
付録
従来のネットワークの分離方法を使用して送信アクセスをセキュリティで保護する
マネージド オンライン エンドポイントの場合は、エンドポイント内のデプロイごとに Azure Machine Learning マネージド仮想ネットワークを使用することでも、デプロイとリソース間の送信通信をセキュリティで保護することができます。 セキュリティで保護された送信通信は、これらのサービス インスタンスに対するプライベート エンドポイントを使用することでも処理されます。
Note
この従来の方法ではなく、「ワークスペースのマネージド仮想ネットワークを使用して送信アクセスをセキュリティで保護する」で説明されている方法を使用することを強くお勧めします。
デプロイと、それで使用される Azure リソースを含む外部リソースとの間の通信を制限するには、次のことを確認する必要があります。
デプロイの
egress_public_network_access
フラグがdisabled
になっていること。 このフラグにより、デプロイに必要なモデル、コード、イメージのダウンロードがプライベート エンドポイントでセキュリティ保護されるようになります。 デプロイを作成した後は、egress_public_network_access
フラグを更新 (有効化または無効化) することはできません。 デプロイの更新中にフラグを変更しようとすると、エラーで失敗します。ワークスペースに、プライベート エンドポイント経由で Azure リソースにアクセスできるプライベート リンクがあること。
ワークスペースに、有効または無効にできる
public_network_access
フラグがあること。パブリック送信を使用するマネージド オンライン デプロイを使用する予定の場合は、パブリック アクセスを許可するようにワークスペースを構成する必要もあります。 これは、オンライン デプロイからの送信通信が、workspace 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 で各リソースを見つけて、[Networking
] メニューの [Private endpoint connections
] タブを確認します。
重要
- 前述のとおり、マネージド オンライン エンドポイントデプロイからのアウトバウンド通信は、ワークスペース 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 が無効 |
Yes |
セキュリティ保護されたインバウンドとパブリック アウトバウンド | public_network_access が無効 |
egress_public_network_access が有効になっているワークスペースでは、ワークスペース API へのデプロイの送信が行われるので、パブリック アクセスも許可する必要があります。 |
Yes |
パブリック インバウンドとセキュリティ保護されたアウトバウンド | public_network_access が有効 |
egress_public_network_access が無効 |
Yes |
パブリック インバウンドとパブリック アウトバウンド | public_network_access が有効 |
egress_public_network_access が有効になっているワークスペースでは、ワークスペース API へのデプロイの送信が行われるので、パブリック アクセスも許可する必要があります。 |
はい |