Azure AI サービスの仮想ネットワークを構成する
Azure AI サービスは、多層型のセキュリティ モデルを採用しています。 このモデルでは、ネットワークの特定のサブセットに、Azure AI サービス アカウントを固定することができます。 ネットワーク ルールを構成すると、指定したネットワークのセットを経由してデータを要求しているアプリケーションのみが、アカウントにアクセスできます。 要求フィルターを使用してリソースへのアクセスを制限して、Azure 仮想ネットワーク内の指定した IP アドレス、IP 範囲、またはサブネットのリストから発信された要求のみを許可することができます。
ネットワーク ルールが有効なときに Azure AI サービス リソースにアクセスするアプリケーションでは、認可が必要です。 承認は、Microsoft Entra ID 資格情報、または有効な API キーによりサポートされます。
重要
Azure AI サービス アカウントのファイアウォール規則をオンにすると、既定ではデータの受信要求がブロックされます。 要求を通すよう許可するには、次のいずれかの条件を満たしている必要があります。
- 要求は、ターゲットの Azure AI サービス アカウントの許可されたサブネットの一覧にある Azure 仮想ネットワーク内で動作するサービスから発信されます。 仮想ネットワークを発信元とする要求のエンドポイントは、Azure AI サービス アカウントのカスタム サブドメインとして設定する必要があります。
- 要求は、許可された IP アドレスのリストから発信されます。
ブロックされる要求には、他の Azure サービスからの要求、Azure portal からの要求、ログおよびメトリック サービスからの要求が含まれます。
注意
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
シナリオ
Azure AI サービス リソースをセキュリティで保護するには、最初に、(インターネット トラフィックを含む) すべてのネットワークからのトラフィックに対して既定でアクセスを拒否するように、ルールを構成する必要があります。 次に、特定の仮想ネットワークからのトラフィックにアクセスを許可するルールを構成します。 この構成では、アプリケーションに対してセキュリティで保護されたネットワーク境界を構築することができます。 また、選択したパブリック インターネット IP アドレス範囲からのトラフィックにアクセスを許可して、インターネットやオンプレミスの特定のクライアントからの接続を有効にすることもできます。
Azure AI サービスに対して、REST や WebSocket などのすべてのネットワーク プロトコルにネットワーク ルールが適用されます。 Azure のテスト コンソールのようなツールを使用してデータにアクセスするには、明示的なネットワーク ルールを構成する必要があります。 既存の Azure AI サービス リソース、または新しい Azure AI サービス リソースを作成するときに、ネットワークルールを適用できます。 ネットワーク ルールが適用されると、そのルールはすべての要求に対して適用されます。
サポートされているリージョンとサービス内容
仮想ネットワークは、Azure AI サービスが使用可能なリージョンでサポートされます。 Azure AI サービスは、ネットワーク ルールの構成用のサービス タグをサポートしています。 こちらに示すサービスは、CognitiveServicesManagement
サービス タグに含まれています。
- Anomaly Detector
- Azure OpenAI
- Content Moderator
- Custom Vision
- Face
- Language Understanding (LUIS)
- Personalizer
- Speech サービス
- Language
- QnA Maker
- Translator
Note
Azure OpenAI、LUIS、Speech Services、または言語サービスを使用している場合、CognitiveServicesManagement
タグを指定しても、SDK または REST API を使用してサービスを使用できるようになるだけです。 仮想ネットワークから Azure AI Foundry ポータル、LUIS ポータル、Speech Studio、または Language Studio にアクセスして使用するには、次のタグを使用する必要があります。
AzureActiveDirectory
AzureFrontDoor.Frontend
AzureResourceManager
CognitiveServicesManagement
CognitiveServicesFrontEnd
Storage
(Speech Studio のみ)
Azure AI Foundry ポータルの構成については、Azure AI Foundry のドキュメントを参照してください。
既定のネットワーク アクセス ルールの変更
既定では、Azure AI サービス リソースは任意のネットワーク上のクライアントからの接続を受け入れます。 選択したネットワークへのアクセスを制限するには、まず既定のアクションを変更する必要があります。
警告
ネットワーク ルールを変更すると、Azure AI サービスに接続するアプリケーションの機能に影響が及ぶことがあります。 既定のネットワーク ルールを拒否に設定すると、アクセスを許可する特定のネットワーク ルールも合わせて適用されていない限り、データへのアクセスがすべてブロックされます。
アクセスを拒否する既定のルールを変更する前に、ネットワーク ルールを使用して、許可されたネットワークへのアクセスを許可するようにしてください。 オンプレミス ネットワークの IP アドレスを一覧表示することを許可する場合は、オンプレミス ネットワークから発信することができるすべてのパブリック IP アドレスを追加してください。
既定のネットワーク アクセス ルールを管理する
Azure AI サービス リソースの規定のネットワーク アクセス ルールは、Azure portal、PowerShell、または Azure CLI で管理できます。
セキュリティで保護する Azure AI サービス リソースにアクセスします。
[リソース管理] を選択して展開し、[ネットワーク] を選択します。
既定でアクセスを拒否するには、[ファイアウォールと仮想ネットワーク] で、[選択したネットワークとプライベート エンドポイント] を選択します。
この設定のみ行った状態で、[仮想ネットワーク] または [アドレス範囲] を構成していない場合 - すべてのアクセスが効率的に拒否されます。 すべてのアクセスが拒否された場合、Azure AI サービス リソースを使用しようとしている要求は許可されません。 これまで通り、Azure portal、Azure PowerShell または Azure CLI を使用して Azure AI サービス リソースを構成することもできます。
すべてのネットワークからのトラフィックを許可するには、[すべてのネットワーク] を選択します。
[保存] を選択して変更を保存します。
仮想ネットワークからアクセスの許可
パブリック インターネットの特定のサブネットからのアクセスのみを許可するように、Azure AI サービス リソースを構成できます。 許可されたサブネットは、同じサブスクリプションの仮想ネットワークに属する場合や、異なるサブスクリプションに属する場合があります。 他のサブスクリプションは、別の Microsoft Entra テナントに属することができます。 サブネットが別のサブスクリプションに属している場合、Microsoft.CognitiveServices リソース プロバイダーもそのサブスクリプションに登録されている必要があります。
仮想ネットワーク内の Azure AI サービスに対するサービス エンドポイントを有効にすることができます。 サービス エンドポイントを使用すると、最適なパスを経由して、仮想ネットワークから Azure AI サービスへトラフィックがルーティングされます。 詳細については、「仮想ネットワーク サービス エンドポイント」を参照してください。
サブネットと仮想ネットワークの ID も、各要求と一緒に転送されます。 管理者は、その後、仮想ネットワーク内の特定のサブネットからの要求を許可するネットワーク規則を、Azure AI サービス リソースに対して構成できます。 これらのネットワーク ルールによってアクセスを許可されたクライアントがデータにアクセスするには、Azure AI サービス リソースの認可要件を引き続き満たす必要があります。
各 Azure AI サービス リソースでは最大 100 個の 仮想ネットワーク ルールがサポートされ、それを IP ネットワーク規則と組み合わせることができます。 詳細については、この記事で後述する「インターネットの IP 範囲からのアクセスを許可する」を参照してください。
必要なアクセス許可を設定する
Azure AI サービス リソースに仮想ネットワーク規則を適用するには、追加されるサブネットに対する適切なアクセス許可が必要です。 必要なアクセス許可は、既定の共同作成者ロール、または Cognitive Services 共同作成者ロールです。 必要なアクセス許可をカスタム ロール定義に追加することもできます。
Azure AI サービス リソースおよびアクセスを許可された仮想ネットワークは、他の Azure AD テナントの一部であるサブスクリプションなどの、異なるサブスクリプションに含まれる場合があります。
Note
異なる Microsoft Entra テナントの一部である仮想ネットワーク内のサブネットへのアクセスを許可するルールの構成は、現在、PowerShell、Azure CLI、REST API でのみサポートされています。 これらの規則は Azure portal に表示できますが、構成することはできません。
仮想ネットワーク規則を構成する
Azure AI サービス リソースの 仮想ネットワーク規則は、Azure portal、PowerShell、または Azure CLI で管理できます。
既存のネットワーク規則を使用して仮想ネットワークへのアクセスを許可するには、次のようにします。
セキュリティで保護する Azure AI サービス リソースにアクセスします。
[リソース管理] を選択して展開し、[ネットワーク] を選択します。
選択した [選択されたネットワークとプライベート エンドポイント] を確認します。
[許可するアクセス元] で、[既存の仮想ネットワークを追加] を選択します。
[仮想ネットワーク] と [サブネット] オプションを選択して、 [有効化] を選択します。
Note
Azure AI サービス用のサービス エンドポイントが、選択した仮想ネットワークとサブネットに対してまだ構成されていない場合は、この操作の中で構成することができます。
現在、同じ Microsoft Entra テナントに属する仮想ネットワークのみが、ルールの作成時に選択可能です。 別のテナントに属する仮想ネットワーク内のサブネットにアクセスを許可するには、PowerShell、Azure CLI、または REST API を使用します。
[保存] を選択して変更を保存します。
新しい仮想ネットワークを作成してアクセスを許可するには、次のようにします。
仮想ネットワークまたはサブネット規則を削除するには、次のようにします。
重要
拒否するように既定のルールを設定します。そうしないと、ネットワーク ルールは効力を発揮しません。
インターネットの IP 範囲からのアクセスを許可する
パブリック インターネットの特定の IP アドレス範囲からのアクセスを許可するように、Azure AI サービス リソースを構成できます。 この構成では、一般的なインターネット トラフィックを効率的にブロックする特定のサービスとオンプレミスのネットワークにアクセスを許可します。
許可するインターネット アドレスの範囲は、CIDR 表記法 (RFC 4632) を使って 192.168.0.0/16
の形式で、または 192.168.0.1
のように個々の IP アドレスとして指定できます。
ヒント
/31
や /32
のプレフィックス サイズを使用する小さいアドレス範囲はサポートされていません。 これらの範囲を構成するには、個別の IP アドレス規則を使用します。
IP ネットワーク ルールは、パブリック インターネットの IP アドレスに対してのみ許可されます。 プライベート ネットワーク用に予約されている IP アドレス範囲は、IP 規則では許可されません。 プライベート ネットワークには、10.*
、172.16.*
- 172.31.*
、および 192.168.*
で始まるアドレスが含まれます。 詳細については、「プライベート アドレス空間 (RFC 1918)」を参照してください。
現在サポートされているのは、IPv4 アドレスのみです。 各 Azure AI サービス リソースでは最大 100 個の IP ネットワーク規則がサポートされ、それを IP ネットワーク規則と組み合わせることができます。
オンプレミスのネットワークからのアクセスの構成
IP ネットワーク ルールでオンプレミスのネットワークから Azure AI サービス リソースへのアクセスを許可するには、ネットワークで使用するインターネット接続 IP アドレスを特定します。 サポートが必要な場合は、ネットワーク管理者にお問い合わせください。
Microsoft ピアリングのためにオンプレミスで Azure ExpressRoute を使用する場合、NAT の IP アドレスを識別する必要があります。 詳細については、「Azure ExpressRoute とは」を参照してください。
Microsoft ピアリングの場合、使用される NAT の IP アドレスは、ユーザーが指定するか、サービス プロバイダーが指定します。 サービス リソースへのアクセスを許可するには、リソースの IP ファイアウォール設定でこれらのパブリック IP アドレスを許可する必要があります。
IP ネットワーク ルールの管理
Azure AI サービス リソースの IP ネットワーク ルールは、Azure portal、PowerShell、または Azure CLI で管理できます。
セキュリティで保護する Azure AI サービス リソースにアクセスします。
[リソース管理] を選択して展開し、[ネットワーク] を選択します。
選択した [選択されたネットワークとプライベート エンドポイント] を確認します。
[ファイアウォールと仮想ネットワーク] で、[アドレス範囲] オプションを見つけます。 インターネット IP 範囲へのアクセスを許可するには、IP アドレスまたはアドレス範囲 (CIDR 形式) を入力します。 有効なパブリック IP (予約されない) アドレスのみが受け入れられます。
IP ネットワーク ルールを削除するには、アドレス範囲の横にあるごみ箱 のアイコンを選択します。
[保存] を選択して変更を保存します。
重要
拒否するように既定のルールを設定します。そうしないと、ネットワーク ルールは効力を発揮しません。
プライベート エンドポイントを使用する
お使いの Azure AI サービス リソースのプライベート エンドポイントを使用すると、仮想ネットワーク上のクライアントは Azure Private Link を介してデータに安全にアクセスできるようになります。 プライベート エンドポイントでは、対象の Azure AI サービス リソースのために仮想ネットワークのアドレス空間の IP アドレスを使用します。 仮想ネットワーク上のクライアントとリソース間のネットワーク トラフィックは、仮想ネットワークおよび Microsoft Azure バックボーン ネットワーク上のプライベート リンクを経由することで、パブリック インターネットにさらされないようにします。
Azure AI サービス リソースのプライベート エンドポイントを使用すると、次のことができます。
- Azure AI サービスのパブリック エンドポイント上のすべての接続をブロックするようにファイアウォールを構成して、Azure AI サービス リソースをセキュリティで保護します。
- 仮想ネットワークからのデータの流出をブロックし、仮想ネットワークのセキュリティを強化します。
- Azure VPN Gateway または ExpressRoute プライベート ピアリングを使用することで、仮想ネットワークに接続するオンプレミス ネットワークから Azure AI サービス リソースに安全に接続します。
プライベート エンドポイントの概要
プライベート エンドポイントは、仮想ネットワーク内の Azure リソース用の特別なネットワーク インターフェイスです。 Azure AI サービス リソースのプライベート エンドポイントを作成すると、対象の仮想ネットワーク上のクライアントと対象のリソース間のセキュリティで保護された接続が提供されます。 プライベート エンドポイントには、仮想ネットワークの IP アドレス範囲から IP アドレスが割り当てられます。 プライベート エンドポイントと Azure AI サービス間の接続には、セキュリティで保護されたプライベート リンクを使用します。
仮想ネットワーク内のアプリケーションは、プライベート エンドポイント経由でサービスにシームレスに接続できます。 接続には、それ以外の接続で使用するものと同じ接続文字列と承認メカニズムが使用されます。 例外は Speech Service で、これには別のエンドポイントが必要です。 詳細については、この記事の「プライベート エンドポイントと Speech Service」を参照してください。 プライベート エンドポイントは、Azure AI サービス リソースでサポートされているすべてのプロトコル (REST を含む) で使用できます。
プライベート エンドポイントは、サービス エンドポイントを使用するサブネットに作成できます。 サブネット内のクライアントは、プライベート エンドポイントを使用して 1 つの Azure AI サービス リソースに接続する一方で、サービス エンドポイントを使用して他のリソースにアクセスできます。 詳細については、「仮想ネットワーク サービス エンドポイント」を参照してください。
お使いの仮想ネットワークで Azure AI サービス リソース向けのプライベート エンドポイントを作成すると、承認を得るための同意要求が Azure から Azure AI サービス リソースの所有者に送信されます。 プライベート エンドポイントの作成を要求しているユーザーがリソースの所有者でもある場合、この同意要求は自動的に承認されます。
Azure AI サービス リソースの所有者は、Azure portal で Azure AI サービス リソースの [プライベート エンドポイント接続] タブを使用して、同意要求とプライベート エンドポイントを管理できます。
プライベート エンドポイントを指定する
プライベート エンドポイントを作成する場合は、接続先の Azure AI サービス リソースを指定します。 プライベート エンドポイントを作成する方法の詳細については、次の記事を参照してください。
- Azure portal を使用してプライベート エンドポイントを作成する
- Azure PowerShell を使用してプライベート エンドポイントを作成する
- Azure CLI を使用してプライベート エンドポイントを作成する
プライベート エンドポイントに接続する
Note
Azure OpenAI Service では、他の Azure AI サービスとは異なるプライベート DNS ゾーンおよびパブリック DNS ゾーン フォワーダーが使用されます。 正しいゾーンとフォワーダーの名前については、「Azure サービス DNS ゾーンの構成」に関する記事を参照してください。
プライベート エンドポイントを使用する仮想ネットワーク上のクライアントは、パブリック エンドポイントに接続するクライアントと同じ接続文字列を Azure AI サービス リソースに対して使用します。 例外は Speech サービスで、これには別のエンドポイントが必要です。 詳細については、この記事の「Speech サービスでプライベート エンドポイントを使用する」を参照してください。 DNS 解決は、プライベート リンク経由の仮想ネットワークから Azure AI サービス リソースへの接続を自動的にルーティングします。
既定では、Azure によって、仮想ネットワークに接続されているプライベート DNS ゾーンが作成され、プライベート エンドポイントに必要な更新も行われます。 独自の DNS サーバーを使用している場合は、DNS 構成に追加の変更が必要になることがあります。 プライベート エンドポイントに必要な更新プログラムについては、この記事の「プライベート エンドポイントに DNS の変更を適用する」を参照してください。
Speech サービスでプライベート エンドポイントを使用する
「プライベート エンドポイント経由で Speech サービスを使用する」を参照してください。
プライベート エンドポイントに DNS の変更を適用する
プライベート エンドポイントを作成すると、Azure AI サービス リソースの DNS CNAME
リソース レコードは、プレフィックス privatelink
を持つサブドメイン内のエイリアスに更新されます。 既定で、Azure で privatelink
サブドメインに対応するプライベート DNS ゾーンも作成されます。これには、プライベート エンドポイントの DNS A リソース レコードが含まれます。 詳細については、「Azure Private DNS とは」を参照してください。
プライベート エンドポイントがある仮想ネットワークの外部からエンドポイントの URL を解決すると、Azure AI サービス リソースのパブリック エンドポイントに解決されます。 プライベート エンドポイントをホストしている仮想ネットワークから解決されると、エンドポイント URL はプライベート エンドポイントの IP アドレスに解決されます。
この方法を使用すると、プライベート エンドポイントをホストしている仮想ネットワーク上のクライアントと、仮想ネットワークの外部のクライアントから同じ接続文字列を使用して Azure AI サービス リソースにアクセスできます。
ネットワーク上でカスタム DNS サーバーを使用している場合、クライアントで、Azure AI サービス リソースのエンドポイントの完全修飾ドメイン名 (FQDN) をプライベート エンドポイントの IP アドレスに解決できる必要があります。 Private Link サブドメインを仮想ネットワークのプライベート DNS ゾーンに委任するように、DNS サーバーを構成します。
ヒント
カスタムまたはオンプレミスの DNS サーバーを使用している場合は、privatelink
サブドメインの Azure AI サービス リソース名をプライベート エンドポイントの IP アドレスに解決するように、DNS サーバーを構成する必要があります。 privatelink
サブドメインを仮想ネットワークのプライベート DNS ゾーンに委任します。 または、DNS サーバーで DNS ゾーンを構成し、DNS A レコードを追加します。
プライベート エンドポイントをサポートするように独自の DNS サーバーを構成する方法の詳細については、次のリソースを参照してください。
Azure OpenAI の信頼された Azure サービスへのアクセス権を付与する
他のアプリのネットワーク規則を維持しながら、信頼された Azure サービスのサブセットに Azure OpenAI へのアクセス権を付与することができます。 その後、これらの信頼されたこれらのサービスでは、マネージド ID を使用して、Azure OpenAI サービスの認証が行われます。 次の表は、これらのサービスのマネージド ID に適切なロールが割り当てられている場合に Azure OpenAI にアクセスできるサービスを示しています。
サービス | リソース プロバイダー名 |
---|---|
Azure AI Services | Microsoft.CognitiveServices |
Azure Machine Learning | Microsoft.MachineLearningServices |
Azure AI Search | Microsoft.Search |
以下のように REST API または Azure portal を使用してネットワーク規則の例外を作成することで、信頼された Azure サービスにネットワーク アクセスを許可することができます。
Azure CLI の使用
accessToken=$(az account get-access-token --resource https://management.azure.com --query "accessToken" --output tsv)
rid="/subscriptions/<your subscription id>/resourceGroups/<your resource group>/providers/Microsoft.CognitiveServices/accounts/<your Azure AI resource name>"
curl -i -X PATCH https://management.azure.com$rid?api-version=2023-10-01-preview \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $accessToken" \
-d \
'
{
"properties":
{
"networkAcls": {
"bypass": "AzureServices"
}
}
}
'
例外を取り消すには、networkAcls.bypass
を None
に設定します。
Azure portal から信頼できるサービスが有効になっているかどうかを確認するには、
Azure OpenAI リソースの概要ページから [JSON ビュー] を使用します。
[API バージョン] で最新の API バージョンを選択します。 最新の API バージョン (
2023-10-01-preview
) のみサポートされています。
Azure Portal の使用
Azure OpenAI リソースに移動し、ナビゲーション メニューから [ネットワーク] を選択します。
[例外] で [信頼されたサービスの一覧上の Azure サービスにこの Cognitive Services アカウントへのアクセスを許可する] を選択します。
ヒント
[次からのアクセスを許可] で [選択されたネットワークおよびプライベート エンドポイント] または [無効] のどちらかを選択することで [例外] オプションを確認できます。
価格
料金の詳細については、「Azure Private Link の料金」をご覧ください。
次のステップ
- さまざまな Azure AI サービスを探索する
- 仮想ネットワーク サービス エンドポイントの詳細