仮想ネットワーク (VNet) を使用して Azure Machine Learning ワークスペース リソースを保護する
ヒント
この記事の手順ではなく、Azure Machine Learning のマネージド仮想ネットワークを使用できます。 マネージド仮想ネットワークを使用すると、Azure Machine Learning はワークスペースとマネージド コンピューティングのネットワーク分離のジョブを処理します。 また、ワークスペースに必要なリソース (Azure Storage アカウントなど) のプライベート エンドポイントを追加することもできます。 詳しくは、ワークスペースのマネージド ネットワーク分離に関する記事をご覧ください。
Azure 仮想ネットワーク (VNet) を使用して Azure Machine Learning ワークスペース リソースとコンピューティング環境をセキュリティで保護する方法を学習します。 この記事では、完全な仮想ネットワークを構成する方法を示すシナリオ例を使用します。
この記事は、Azure Machine Learning ワークフローのセキュリティ保護に関するシリーズの一部です。 このシリーズの他の記事は次のとおりです。
安全なワークスペースの作成に関するチュートリアルについては、「チュートリアル: 安全なワークスペースを作成する」、「Bicep テンプレート」、または「Teraform テンプレート」を参照してください。
前提条件
この記事では、次の記事について理解していることを前提としています。
- Azure 仮想ネットワーク
- IP ネットワーク
- プライベート エンドポイントを持つ Azure Machine Learning ワークスペース
- ネットワーク セキュリティ グループ (NSG)
- ネットワーク ファイアウォール
シナリオ例
このセクションでは、プライベート IP アドレスを使用して Azure Machine Learning の通信をセキュリティで保護するために、一般的なネットワーク シナリオがどのように設定されるかについて説明します。
次の表は、VNet がある場合とない場合で、サービスが Azure Machine Learning ネットワークのさまざまな部分にアクセスする方法を比較したものです。
シナリオ | ワークスペース | 関連付けられているリソース | トレーニングのコンピューティング環境 | 推論のコンピューティング環境 |
---|---|---|---|---|
仮想ネットワークなし | パブリック IP | パブリック IP | パブリック IP | パブリック IP |
パブリックワークスペース、仮想ネットワーク内の他のすべてのリソース | パブリック IP | パブリック IP (サービス エンドポイント) または プライベート IP (プライベート エンドポイント) |
パブリック IP | プライベート IP |
仮想ネットワーク内のリソースをセキュリティで保護 | プライベート IP (プライベート エンドポイント) | パブリック IP (サービス エンドポイント) または プライベート IP (プライベート エンドポイント) |
プライベート IP | プライベート IP |
- ワークスペース - ワークスペースのプライベート エンドポイントを作成します。 プライベート エンドポイントは、複数のプライベート IP アドレスを使用してワークスペースを VNet に接続します。
- パブリックアクセス -必要に応じて、セキュリティで保護されたワークスペースのパブリックアクセスを有効にすることができます。
- 関連するリソース - サービス エンドポイントまたはプライベート エンドポイントを使用して、Azure storage、Azure Key Vault などのワークスペース リソースに接続します。 Azure Container Services の場合は、プライベート エンドポイントを使用します。
- サービス エンドポイントは、仮想ネットワークの ID を Azure サービスに提供します。 ご利用の仮想ネットワークでサービス エンドポイントを有効にしたら、仮想ネットワーク規則を追加して、Azure サービス リソースへのアクセスを仮想ネットワークに限定することができます。 サービス エンドポイントは、パブリック IP アドレスを使用します。
- プライベート エンドポイントは、Azure Private Link を使用するサービスに安全に接続するネットワーク インターフェイスです。 プライベート エンドポイントでは、自分の VNet からのプライベート IP アドレスを使用して、サービスを実質的に VNet に取り込みます。
- トレーニングのコンピューティング アクセス - パブリックまたはプライベート IP アドレスを使用して、Azure Machine Learning コンピューティング インスタンスや Azure Machine Learning コンピューティング クラスターのようなトレーニングのコンピューティング ターゲットにアクセスします。
- 推論のコンピューティング アクセス - プライベート IP アドレスを使用して、Azure Kubernetes Services (AKS) コンピューティング クラスターにアクセスします。
次のセクションでは、前述のネットワーク シナリオをセキュリティで保護する方法について説明します。 ネットワークをセキュリティで保護するには、次のことを行う必要があります。
- ワークスペースと関連するリソースをセキュリティで保護します。
- トレーニング環境をセキュリティで保護します。
- 推論環境をセキュリティで保護します。
- 必要に応じて、Studio の機能を有効にします。
- ファイアウォール設定を構成します。
- DNS 名前解決を構成します。
パブリックワークスペースとセキュリティで保護されたリソース
重要
これは Azure Machine Learning でサポートされている構成ですが、Microsoft では推奨していません。 仮想ネットワークの背後にある Azure Storage アカウント内のデータは、パブリック ワークスペースで公開できます。 運用環境で使用する前に、セキュリティ チームでこの構成を確認する必要があります。
仮想ネットワークですべての関連リソースを保護したまま、パブリックインターネット経由でワークスペースにアクセスする場合は、次の手順を実行します。
Azure 仮想ネットワークを作成します。 このネットワークは、ワークスペースによって使用されるリソースをセキュリティで保護します。
パブリックにアクセス可能なワークスペースを作成するには、次のいずれかのオプションを使用します。
- 仮想ネットワークを使用しない Azure Machine Learning ワークスペースを作成します。 詳細については、Azure Machine Learning ワークスペースの管理に関するページを参照してください。
OR
- Private Link が有効なワークスペースを作成し、VNet とワークスペース間の通信を有効にします。 ワークスペースへのパブリック アクセスを有効にします。
- 仮想ネットワークを使用しない Azure Machine Learning ワークスペースを作成します。 詳細については、Azure Machine Learning ワークスペースの管理に関するページを参照してください。
- Private Link が有効なワークスペースを作成し、VNet とワークスペース間の通信を有効にします。 ワークスペースへのパブリック アクセスを有効にします。
サービス エンドポイントまたはプライベート エンドポイントの "どちらか" を使用して、次のサービスを仮想ネットワークに追加します。 また、信頼された Microsoft サービスによるこれらのサービスへのアクセスを許可します。
サービス エンドポイント情報 信頼できる情報を許可する Azure Key Vault サービス エンドポイント
プライベート エンドポイント信頼された Microsoft サービスを許可して、このファイアウォールをバイパスする Azure Storage アカウント サービスとプライベート エンドポイント
プライベート エンドポイント信頼された Azure サービスにアクセスを許可する Azure Container Registry プライベート エンドポイント 信頼されたサービスを許可する サービス エンドポイント情報 信頼できる情報を許可する Azure Key Vault サービス エンドポイント
プライベート エンドポイント信頼された Microsoft サービスを許可して、このファイアウォールをバイパスする Azure Storage アカウント サービスとプライベート エンドポイント
プライベート エンドポイント信頼された Azure サービスにアクセスを許可する Azure Container Registry プライベート エンドポイント 信頼されたサービスを許可する ワークスペースの Azure ストレージ アカウントのプロパティで、ファイアウォール設定の許可一覧にクライアント IP アドレスを追加します。 詳細については、ファイアウォールと仮想ネットワークの構成に関する記事を参照してください。
ワークスペースと関連するリソースをセキュリティで保護する
ワークスペースと関連するリソースをセキュリティで保護するには、次の手順に従います。 これらの手順により、サービスが仮想ネットワークで通信できるようになります。
Azure 仮想ネットワークを作成します。 このネットワークにより、ワークスペースとその他のリソースがセキュリティで保護されます。 次に、Private Link が有効なワークスペースを作成し、VNet とワークスペース間の通信を有効にします。
サービス エンドポイントまたはプライベート エンドポイントの "どちらか" を使用して、次のサービスを仮想ネットワークに追加します。 また、信頼された Microsoft サービスによるこれらのサービスへのアクセスを許可します。
サービス エンドポイント情報 信頼できる情報を許可する Azure Key Vault サービス エンドポイント
プライベート エンドポイント信頼された Microsoft サービスを許可して、このファイアウォールをバイパスする Azure Storage アカウント サービスとプライベート エンドポイント
プライベート エンドポイントAzure リソース インスタンスからのアクセスを許可する
または
信頼された Azure サービスへのアクセスを許可するAzure Container Registry プライベート エンドポイント 信頼されたサービスを許可する
Azure 仮想ネットワークを作成します。 この仮想ネットワークにより、ワークスペースとその他のリソースがセキュリティで保護されます。 次に、Private Link が有効なワークスペースを作成し、VNet とワークスペース間の通信を有効にします。
サービス エンドポイントまたはプライベート エンドポイントの "どちらか" を使用して、次のサービスを仮想ネットワークに追加します。 また、信頼された Microsoft サービスによるこれらのサービスへのアクセスを許可します。
サービス エンドポイント情報 信頼できる情報を許可する Azure Key Vault サービス エンドポイント
プライベート エンドポイント信頼された Microsoft サービスを許可して、このファイアウォールをバイパスする Azure Storage アカウント サービスとプライベート エンドポイント
プライベート エンドポイントAzure リソース インスタンスからのアクセスを許可する
または
信頼された Azure サービスへのアクセスを許可するAzure Container Registry プライベート エンドポイント 信頼されたサービスを許可する
これらの手順を完了する方法の詳細については、Azure Machine Learning ワークスペースのセキュリティ保護に関するページを参照してください。
これらの手順を完了する方法の詳細については、Azure Machine Learning ワークスペースのセキュリティ保護に関するページを参照してください。
制限事項
仮想ネットワーク内のワークスペースと関連するリソースをセキュリティで保護するには、次の制限があります。
ワークスペースと既定のストレージ アカウントは、同じ VNet 内にある必要があります。 ただし、同じ VNet 内の複数のサブネットは許容されます。 たとえば、あるサブネット内のワークスペースと別のサブネット内のストレージなどです。
ワークスペースの Azure Key Vault と Azure Container Registry も同じ VNet 内に存在することをお勧めします。 ただし、これらのリソースの両方をピアリングされた VNet に含めることもできます。
トレーニング環境をセキュリティで保護する
このセクションでは、Azure Machine Learning でトレーニング環境をセキュリティで保護する方法について説明します。 また、Azure Machine Learning でトレーニング ジョブがどのように完了するかについても説明するので、ネットワーク構成がどのように連携するかを理解できます。
トレーニング環境をセキュリティで保護するには、次の手順に従います。
Azure Machine Learning コンピューティング インスタンスとコンピューター クラスターを仮想ネットワークに作成します。 トレーニング ジョブは、これらのコンピューティングで実行されます。
コンピューティング クラスターまたはコンピューティング インスタンスがパブリック IP アドレスを使っている場合は、管理サービスがコンピューティング リソースにジョブを送信できるように、受信方向の通信を許可する必要があります。
ヒント
コンピューティング クラスターとコンピューティング インスタンスは、パブリック IP アドレスを使用して、または使用しないで作成できます。 パブリック IP アドレスを使って作成した場合は、パブリック IP を持つロード バランサーで、Azure Batch サービスと Azure Machine Learning サービスからのインバウンド アクセスを受け入れるようになります。 ファイアウォールを使う場合は、ユーザー定義ルーティング (UDR) を構成する必要があります。 パブリック IP アドレスを使わずに作成した場合は、パブリック IP ではなく、プライベート リンク サービスで、Azure Batch サービスと Azure Machine Learning サービスからのインバウンド アクセスを受け入れるようになります。
Azure Machine Learning コンピューティング インスタンスとコンピューター クラスターを仮想ネットワークに作成します。 トレーニング ジョブは、これらのコンピューティングで実行されます。
コンピューティング クラスターまたはコンピューティング インスタンスがパブリック IP アドレスを使っている場合は、管理サービスがコンピューティング リソースにジョブを送信できるように、受信方向の通信を許可する必要があります。
ヒント
コンピューティング クラスターとコンピューティング インスタンスは、パブリック IP アドレスを使用して、または使用しないで作成できます。 パブリック IP アドレスを使って作成した場合は、パブリック IP を持つロード バランサーで、Azure Batch サービスと Azure Machine Learning サービスからのインバウンド アクセスを受け入れるようになります。 ファイアウォールを使う場合は、ユーザー定義ルーティング (UDR) を構成する必要があります。 パブリック IP アドレスを使わずに作成した場合は、パブリック IP ではなく、プライベート リンク サービスで、Azure Batch サービスと Azure Machine Learning サービスからのインバウンド アクセスを受け入れるようになります。
これらの手順を完了する方法の詳細については、トレーニング環境のセキュリティ保護に関するページを参照してください。
これらの手順を完了する方法の詳細については、トレーニング環境のセキュリティ保護に関するページを参照してください。
トレーニング ジョブの送信例
このセクションでは、トレーニング ジョブを送信するために、Azure Machine Learning によってサービス間でどのように通信が安全に行われるかについて説明します。 この例は、すべての構成が連携して通信をセキュリティで保護するしくみを示しています。
クライアントは、サービス エンドポイントまたはプライベート エンドポイントで保護されているストレージ アカウントに、トレーニング スクリプトとトレーニング データをアップロードします。
プライベート エンドポイントを使用して、クライアントから Azure Machine Learning ワークスペースにトレーニング ジョブが送信されます。
Azure Batch サービスは、ワークスペースからジョブを受信します。 そして、コンピューティング リソースのパブリック ロード バランサーを介して、トレーニング ジョブをコンピューティング環境に送信します。
コンピューティング リソースはジョブを受信し、トレーニングが開始されます。 コンピューティング リソースは、キー コンテナーに格納されている情報を使用してストレージ アカウントにアクセスし、トレーニング ファイルをダウンロードし、出力をアップロードします。
制限事項
- Azure コンピューティング インスタンスと Azure コンピューティング クラスターは、ワークスペースおよび関連するリソースと同じ VNet、リージョン、およびサブスクリプションにある必要があります。
推論環境をセキュリティで保護する
マネージド オンライン エンドポイントのネットワークの分離を有効にして、次のネットワーク トラフィックをセキュリティで保護できます。
- インバウンド スコアリング要求。
- ワークスペース、Azure Container Registry、Azure Blob Storage とのアウトバウンド通信。
詳細については、「マネージド オンライン エンドポイントのネットワークの分離を有効にする」を参照してください。
このセクションでは、ML v1 または Azure Machine Learning Python SDK v1 用の Azure CLI 拡張機能を使っているときに、推論環境をセキュリティで保護するために使用できるオプションについて説明します。 v1 のデプロイを行う場合、大規模な運用環境のデプロイには、Azure Kubernetes Services (AKS) クラスターを使用することをお勧めします。
仮想ネットワークでの AKS クラスターには、次の 2 つのオプションがあります。
- 既定の AKS クラスターを VNet にデプロイまたはアタッチします。
- プライベート AKS クラスターを VNet にアタッチします。
既定の AKS クラスターには、パブリック IP アドレスを持つコントロール プレーンがあります。 デプロイ時に既定の AKS クラスターを VNet に追加することも、作成後にクラスターをアタッチすることもできます。
プライベート AKS クラスターには、プライベート IP を介してのみアクセスできるコントロール プレーンがあります。 プライベート AKS クラスターは、クラスターの作成後にアタッチする必要があります。
既定のクラスターおよびプライベート クラスターを追加する方法の詳細については、推論環境のセキュリティ保護に関するページを参照してください。
既定の AKS クラスターとプライベート AKS クラスターのいずれが使用されているかに関係なく、AKS クラスターが VNET の背後にある場合、ワークスペースとその関連リソース (ストレージ、キー コンテナー、ACR) には、AKS クラスターと同じ VNET 内にプライベート エンドポイントまたはサービス エンドポイントが必要です。
次のネットワーク図は、仮想ネットワークにアタッチされたプライベート AKS クラスターのある、セキュリティで保護された Azure Machine Learning ワークスペースを示しています。
省略可能:パブリック アクセスを有効にする
プライベート エンドポイントを使用して VNet の背後にあるワークスペースをセキュリティで保護しながら、パブリック インターネット経由のアクセスを許可することができます。 初期構成は、ワークスペースと関連するリソースをセキュリティで保護する場合と同じです。
プライベートエンドポイントを使用してワークスペースをセキュリティで保護した後、次の手順を使用して、SDK または Azure Machine Learning studio を使用してクライアントをリモートで開発できるようにします。
- ワークスペースへのパブリック アクセスを有効にします。
- パブリックインターネット経由で接続するクライアントの IP アドレスとの通信を許可するようにAzure Storage ファイアウォールを構成します。
- ワークスペースへのパブリック アクセスを有効にします。
- パブリックインターネット経由で接続するクライアントの IP アドレスとの通信を許可するようにAzure Storage ファイアウォールを構成します。
省略可能: Studio の機能を有効にする
ストレージが VNet 内にある場合、スタジオで完全な機能を有効にするためには、追加の構成手順を使用する必要があります。 既定では、次の機能が無効になっています。
- スタジオでのデータのプレビュー
- デザイナーでのデータの視覚化
- デザイナーでのモデルのデプロイ
- AutoML 実験の送信
- ラベル付けプロジェクトの開始
すべてのスタジオ機能を有効にするには、仮想ネットワークで Azure Machine Learning スタジオを使用するを参照してください。
制限事項
ML によるデータのラベル付けは、仮想ネットワークの背後にある既定のストレージ アカウントをサポートしていません。 代わりに、既定以外のストレージ アカウントを使用して、ML によるデータのラベル付けを行います。
ヒント
既定のストレージ アカウントでない限り、データのラベル付けに使用されるアカウントは、仮想ネットワークの背後で保護できます。
ファイアウォール設定を構成する
ファイアウォールを構成して、Azure Machine Learning ワークスペース リソースとパブリック インターネット間のトラフィックを制御します。 Azure Firewall を推奨しますが、他のファイアウォール製品を使用することもできます。
ファイアウォール設定の詳細については、ファイアウォールの内側でのワークスペースの使用に関するページを参照してください。
[カスタム DNS]
仮想ネットワークにカスタム DNS ソリューションを使用する必要がある場合は、ワークスペースのホスト レコードを追加する必要があります。
必要なドメイン名と IP アドレスの詳細については、「カスタム DNS サーバーでワークスペースを使用する方法」を参照してください。
Microsoft Sentinel
Microsoft Sentinel は、Azure Machine Learning と統合できるセキュリティ ソリューションです。 たとえば、Azure Machine Learning で提供される Jupyter Notebook を利用します。 詳細については、「Jupyter Notebook を使用してセキュリティの脅威を検出する」を参照してください。
パブリック アクセス
パブリック エンドポイントで問題なければ、Microsoft Sentinel によってワークスペースが自動的に作成されます。 この構成では、セキュリティ オペレーション センター (SOC) のアナリストとシステム管理者は、Sentinel を介してワークスペース内のノートブックに接続します。
このプロセスの詳細については、Microsoft Sentinel からの Azure Machine Learning ワークスペースの作成に関する記事を参照してください。
プライベート エンドポイント
VNet 内のワークスペースおよび関連付けられているリソースをセキュリティで保護する場合は、まず Azure Machine Learning ワークスペースを作成する必要があります。 また、ワークスペースと同じ VNet に仮想マシンの "ジャンプ ボックス" を作成し、そこへの Azure Bastion の接続性を有効にする必要があります。 パブリック構成と同様に、SOC アナリストと管理者は Microsoft Sentinel を使用して接続できますが、VM に接続するには Azure Bastion を使用して一部の操作を実行する必要があります。
この構成の詳細については、Microsoft Sentinel からの Azure Machine Learning ワークスペースの作成に関する記事を参照してください。
関連するコンテンツ
この記事は、Azure Machine Learning ワークフローのセキュリティ保護に関するシリーズの一部です。 このシリーズの他の記事は次のとおりです。