Azure AI Bot Service でのネットワークの分離

2023 年 9 月 1 日から、ネットワークの分離に Azure サービス タグ メソッドを使用することを強くお勧めします。 DL-ASE の稼働率は、非常に具体的なシナリオに限定する必要があります。 運用環境でこのソリューションを実装する前に、サポート チームに相談してガイダンスを受けることをお勧めします。

この記事では、Azure ボットとその依存サービスにおけるネットワークの分離に関する概念について説明します。

ボットへのアクセスをプライベート ネットワークに制限することもできます。 Azure AI Bot Service でこれを行う唯一の方法は、Direct Line App Service 拡張機能を使用することです。 たとえば、App Service 拡張機能を使用して社内ボットをホストし、ユーザーに企業ネットワーク内からボットにアクセスするように要求できます。

プライベート ネットワークでボットを構成する方法の詳細については、分離されたネットワークを使用する方法を参照してください。

ネットワークの分離をサポートする機能の詳細については、以下を参照してください。

機能 記事
Direct Line App Service 拡張機能 Direct Line App Service 拡張機能
Azure Virtual Network Azure Virtual Network とは
Azure ネットワーク セキュリティ グループ ネットワーク セキュリティ グループ
Azure Private Link とプライベート エンドポイント プライベート エンドポイントとは
Azure DNS Azure portal を使用して Azure DNS ゾーンおよびレコードを作成する

プライベート エンドポイントの使用

ボット エンドポイントが仮想ネットワーク内にあり、ネットワーク セキュリティ グループに適切なルール セットが設定されている場合は、プライベート エンドポイントを使用して、ボットの App Service の受信要求と送信要求の両方へのアクセスを制限できます。

プライベート エンドポイントは、Direct Line App Service 拡張機能を介して Bot Service で使用できます。 以下に示す、プライベート エンドポイントを使用するための要件を参照してください。

  1. アクティビティは、App Service エンドポイントとの間で送受信する必要があります。

    App Service 拡張機能は、ボット エンドポイント App Service と併置されています。 エンドポイントとの間で送受信されるすべてのメッセージは仮想ネットワークに対してローカルであり、Bot Framework Service に送信されずにクライアントに直接到達します。

  2. ユーザー認証を機能させるには、ボット クライアントがサービス プロバイダー (Microsoft Entra ID や GitHub など) およびトークン エンドポイントと通信する必要があります。

    ボット クライアントが仮想ネットワーク内にある場合は、仮想ネットワーク内から両方のエンドポイントを許可リストに載せる必要があります。 サービス タグを使用してトークン エンドポイントに対してこれを行います。 ボット エンドポイント自体も、以下で説明するようにトークン エンドポイントにアクセスする必要があります。

  3. App Service 拡張機能では、ボット エンドポイントと App Service 拡張機能が送信 HTTPS 要求を Bot Framework Service に送信する必要があります。

    これらの要求は、ボット構成の取得やトークン エンドポイントからのトークンの取得など、さまざまなメタ操作のためのものです。 これらの要求を容易にするには、プライベート エンドポイントをセットアップして構成する必要があります。

Bot Service がプライベート エンドポイントを実装する方法

プライベート エンドポイントを使用する主なシナリオは 2 つあります。

  • ボットからトークン エンドポイントにアクセスする場合。
  • Direct Line チャネル拡張機能から Bot Service にアクセスする場合。

プライベートエンドポイントプロジェクト必要なサービスを仮想ネットワークに導入すると、仮想ネットワークをインターネットに公開したり、IP アドレスを許可したりすることなく、ネットワーク内で直接利用できるようになります。 プライベート エンドポイントを経由するすべてのトラフィックは、Azure の内部サーバーを経由し、トラフィックがインターネットに漏洩しないようにします。

このサービスでは、BotToken という 2 つのサブリソースを使用して、ネットワークにサービスを投影します。 プライベート エンドポイントを追加すると、Azure はサブリソースごとにボット固有の DNS レコードを生成し、DNS ゾーン グループ内のエンドポイントを構成します。 これにより、同じサブリソースをターゲットとする異なるボットのエンドポイントを相互に区別しながら、同じ DNS ゾーン グループ リソースを再利用できます。

シナリオ例

SampleBot という名前のボットとそれに対応する SampleBot.azurewebsites.net という App Service があり、このサービスがこのボットのメッセージング エンドポイントとして機能するとします。 パブリック クラウドの Azure portal で、サブリソースの種類が BotSampleBot のプライベート エンドポイントを構成します。これにより、A に対応する SampleBot.botplinks.botframework.com レコードを含む DNS ゾーン グループが作成されます。 この DNS レコードは、仮想ネットワーク内のローカル IP にマップされます。 同様に、サブリソースの種類 Token を使用すると、エンドポイント SampleBot.bottoken.botframework.com が生成されます。

作成した DNS ゾーンの A レコードは、仮想ネットワーク内の IP アドレスにマップされます。 そのため、このエンドポイントに送信される要求はネットワークに対してローカルであり、ネットワーク セキュリティ グループ内またはネットワークからの送信トラフィックを制限する Azure ファイアウォール内のルールに違反することはありません。 Azure ネットワーク層と Bot Framework Service により、要求がパブリック インターネットに漏洩せず、ネットワークの分離が維持されます。