Azure ネットワーク セキュリティで保護されたコンテンツへのインデクサー アクセス
概念に関するこの記事では、Azure リソースが Azure 仮想ネットワークにデプロイされている場合に、検索インデクサーがネットワーク セキュリティによって保護されているコンテンツにアクセスする方法について説明します。 送信トラフィック パターンとインデクサー実行環境について説明します。 また、Azure AI Search でサポートされるネットワーク保護と、セキュリティ戦略に影響を与える可能性のある要因についても説明します。 最後に、Azure Storage はデータ アクセスと永続ストレージの両方に使用されるため、この記事では、検索とストレージの接続に固有のネットワークの考慮事項についても説明します。
代わりに詳細な手順をお探しですか? インデクサー アクセスを許可するようにファイアウォール規則を構成する方法またはプライベート エンドポイントを介して送信接続を行う方法に関する記事を参照してください。
インデクサーによってアクセスされるリソース
Azure AI 検索インデクサーは、次の 3 つの状況において、さまざまな Azure リソースへの送信呼び出しを行うことができます。
- インデックス作成中に外部のデータ ソースに接続する場合
- カスタム スキルを含むスキルセットを介して外部のカプセル化されたコードに接続する場合
- スキルセットの実行中に Azure Storage に接続してエンリッチメントをキャッシュしたり、デバッグ セッションの状態を保存したり、ナレッジ ストアに書き込んだりする場合
通常の実行でインデクサーがアクセスする可能性がある Azure リソースの種類を次の表に一覧表示します。
リソース | インデクサー実行内の目的 |
---|---|
Azure Storage (BLOB、ADLS Gen 2、ファイル、テーブル) | データ ソース |
Azure Storage (BLOB、テーブル) | スキルセット (エンリッチメントのキャッシュ、セッションのデバッグ、ナレッジ ストアのプロジェクション) |
Azure Cosmos DB (さまざまな API) | データ ソース |
Azure SQL データベース | データ ソース |
OneLake (Microsoft Fabric) | データ ソース |
Azure 仮想マシン上の SQL Server | データ ソース |
SQL Managed Instance | データ ソース |
Azure Functions | スキルセットに接続され、カスタム Web API スキルのホスティングに使用される |
Note
インデクサーは、組み込みのスキルのために Azure AI サービスにも接続します。 ただし、その接続は内部ネットワーク経由で行われ、制御下のネットワーク プロビジョニングの対象になりません。
インデクサーは、次の方法を使用してリソースに接続します。
- パブリック エンドポイントと資格情報
- Azure Private Link を使用したプライベート エンドポイント
- 信頼されたサービスとしての接続
- IP アドレス指定を通して接続する
Azure リソースが仮想ネットワーク上にある場合は、プライベート エンドポイントまたは IP アドレス指定を使用して、データへのインデクサー接続を許可する必要があります。
サポートされているネットワーク保護
Azure リソースは、Azure によって提供される任意の数のネットワーク分離メカニズムを使用して保護できます。 リソースとリージョンに応じて Azure AI Search インデクサーは、次の表に示す制限付きで、IP ファイアウォールとプライベート エンドポイント経由で送信接続を行うことができます。
リソース | IP 制限 | プライベート エンドポイント |
---|---|---|
Azure Storage のテキストベースのインデックス作成 (BLOB、ADLS Gen 2、ファイル、テーブル) | ストレージ アカウントと検索サービスが異なるリージョンにある場合にのみサポートされます。 | サポートされています |
Azure Storage の AI エンリッチメント (キャッシュ、デバッグ セッション、ナレッジ ストア) | ストレージ アカウントと検索サービスが異なるリージョンにある場合にのみサポートされます。 | サポートされています |
NoSQL 用 Azure Cosmos DB | サポートされています | サポートされています |
Azure Cosmos DB for MongoDB | サポートされています | サポートされていない |
Azure Cosmos DB for Apache Gremlin | サポートされています | サポートされていない |
Azure SQL データベース | サポートされています | サポートされています |
Azure 仮想マシン上の SQL Server | サポートされています | 該当なし |
SQL Managed Instance | サポートされています | 該当なし |
Azure Functions | サポートされています | Azure Functions の特定の層に対してのみサポートされます |
ネットワーク アクセスとインデクサーの実行環境
Azure AI Search には、ジョブの特性に基づいて処理を最適化する "インデクサー実行環境" の概念があります。 2 つの環境があります。 IP ファイアウォールを使用して Azure リソースへのアクセスを制御している場合は、実行環境について理解しておくと、両方の環境を含む IP 範囲を設定するのに役立ちます。
指定されたインデクサーの実行に対し、Azure AI Search で、そのインデクサーを実行するための最適な環境が決定されます。 インデクサーは、割り当てられているタスクの数と種類に応じて、2 つの環境のどちらかで実行されます。
実行環境 | 説明 |
---|---|
プライベート | 検索サービスの内部。 プライベート環境で実行されているインデクサーは、コンピューティング リソースを、同じ検索サービス上の他のインデックス作成およびクエリのワークロードと共有します。 インデクサーとデータの間に、共有プライベート リンクなどのプライベート接続を設定した場合、これが使用できる唯一の実行環境になり、これが自動的に使用されます。 |
マルチテナント | 追加料金なしで Microsoft によって管理およびセキュリティ保護されます。 これは、ご自分の管理下にあるどのネットワーク プロビジョニングの対象にもなりません。 この環境は、大量のコンピューティング処理を要する処理の負荷を軽減して、サービス固有のリソースをルーチン処理に残しておくために使います。 リソースを大量に消費するインデクサー ジョブの例には、スキルセット、大規模なドキュメントの処理、大量のドキュメントの処理などがあります。 |
Standard2 以降のサービスでは、常にプライベート環境を使用するようにインデクサーを構成できます。 ただし、プライベート環境を使用するように検索サービスを構成した場合でも、スキルセット処理は常にマルチテナント環境で実行されます。 インデクサーの構成の詳細については、「インデクサーの作成」を参照してください。
インデクサー実行の IP 範囲の設定
このセクションでは、どちらの実行環境からの要求でも許可する IP ファイアウォール構成について説明します。
Azure リソースがファイアウォールの内側に存在する場合は、インデクサー要求を発信できるすべての IP に対してインデクサー接続を許可する受信規則を設定します。 これには、検索サービスで使用される IP アドレスと、マルチテナント環境で使用される IP アドレスが含まれます。
検索サービス (およびプライベート環境) の IP アドレスを取得するには、
nslookup
(またはping
) で検索サービスの完全修飾ドメイン名 (FQDN) を使用します。 パブリック クラウドの検索サービスの FQDN は、<service-name>.search.windows.net
です。インデクサーが実行される可能性のあるマルチテナント環境の IP アドレスを取得するには、
AzureCognitiveSearch
サービス タグを使用します。Azure サービス タグには、リージョンごとのマルチテナント環境の公開された IP アドレス範囲が含まれています。 これらの IP は、Discovery API またはダウンロード可能な JSON ファイルを使用して調べることができます。 IP 範囲はリージョン別に割り当てられるため、開始する前に検索サービスのリージョンを確認してください。
Azure SQL の IP 規則の設定
マルチテナント環境の IP 規則を設定する場合、特定の SQL データ ソースで IP アドレスの指定に対する単純なアプローチがサポートされます。 規則内のすべての IP アドレスを列挙する代わりに、AzureCognitiveSearch
サービス タグを指定する ネットワーク セキュリティ グループ規則を作成できます。
データ ソースが次のいずれかである場合は、サービス タグを指定できます。
マルチテナント環境の IP 規則にサービス タグを指定した場合でも、nslookup
から取得した、プライベート実行環境 (検索サービスそのものを意味する) の明示的な受信規則が必要であることに注意してください。
接続方法の選択
検索サービスは、仮想マシン上でネイティブに実行されている特定の仮想ネットワークにプロビジョニングすることはできません。 一部の Azure リソースでは仮想ネットワーク サービス エンドポイントが提供されますが、この機能は Azure AI 検索では提供されません。 次のいずれかの方法の実装を計画してください。
アプローチ | 詳細 |
---|---|
Azure リソースへの受信接続をセキュリティで保護する | インデクサーによるデータの要求を許可する受信ファイアウォール規則を Azure リソースに構成します。 ファイアウォール構成には、マルチテナント実行のサービス タグと検索サービスの IP アドレスを含める必要があります。 インデクサーへのアクセスを許可するファイアウォール規則の構成に関する記事を参照してください。 |
Azure AI 検索と Azure リソースの間のプライベート接続 | リソースへの接続のために検索サービスによって排他的に使用される共有プライベート リンクを構成します。 接続は内部ネットワークを経由し、パブリック インターネットをバイパスします。 リソースが完全にロックダウンされている場合 (保護された仮想ネットワークで実行されている場合、またはパブリック接続で使用できない場合)、プライベート エンドポイントが唯一の選択肢となります。 プライベート エンドポイントを経由した送信接続の作成に関するページを参照してください。 |
プライベート エンドポイント経由の接続は、検索サービスのプライベート実行環境から開始する必要があります。
IP ファイアウォールの構成は無料です。 Azure Private Link に基づくプライベート エンドポイントは、課金に影響します。 詳細については、「Azure Private Link の価格」をご覧ください。
ネットワーク セキュリティを構成したら、続いてロールの割り当てによって、どのユーザーとグループにデータと操作に対する読み取りと書き込みのアクセス権があるかを指定します。
プライベート エンドポイントの使用に関する考慮事項
このセクションでは、プライベート接続オプションに絞って説明します。
- 共有プライベート リンクには、課金対象の検索サービスが必要です。その最小レベルは、テキスト ベースのインデックス作成向けの Basic、またはスキル ベースのインデックス作成向けの Standard 2 (S2) のいずれかです。 詳細については、プライベート エンドポイントの数に対するレベルの制限に関する記事を参照してください。
共有プライベート リンクが作成されると、それは検索サービスで常にその特定の Azure リソースへのすべてのインデクサー接続に使用されます。 プライベート接続はロックされ、内部的に強制されます。 パブリック接続のためにプライベート接続をバイパスすることはできません。
課金対象の Azure Private Link リソースが必要です。
サブスクリプション所有者がプライベート エンドポイント接続を承認する必要があります。
インデクサーのマルチテナント実行環境をオフにする必要があります。
これを行うには、インデクサーの
executionEnvironment
を"Private"
に設定します。 この手順により、すべてのインデクサー実行が、検索サービス内でプロビジョニングされたプライベート環境に限定されます。 この設定のスコープは、検索サービスではなくインデクサーです。 すべてのインデクサーをプライベート エンドポイント経由で接続する場合は、それぞれに次の構成が必要です。{ "name" : "myindexer", ... other indexer properties "parameters" : { ... other parameters "configuration" : { ... other configuration properties "executionEnvironment": "Private" } } }
リソースに対して承認されたプライベート エンドポイントができると、private に設定されているインデクサーは、Azure リソース用に作成および承認されたプライベート リンクを介してアクセスを取得しようとします。
Azure AI 検索で、プライベート エンドポイントの呼び出し元に適切なロールの割り当てがなされていることが検証されます。 たとえば、読み取り専用のアクセス許可があるストレージ アカウントへのプライベート エンドポイント接続を要求した場合、この呼び出しは拒否されます。
プライベート エンドポイントが承認されていない場合、またはインデクサーがプライベート エンドポイント接続を使用していない場合は、インデクサーの実行履歴に transientFailure
エラー メッセージが表示されます。
トークン認証を使用してネットワーク セキュリティを補完する
ファイアウォールとネットワーク セキュリティは、データと操作への未承認のアクセスを防ぐための最初の手順です。 次の手順となるのが承認です。
ロールベースのアクセスをお勧めします。この場合、Microsoft Entra ID のユーザーとグループは、サービスへの読み取りと書き込みのアクセス権を決定するロールに割り当てられます。 組み込みロールの説明とカスタム ロールを作成する手順については、ロールベースのアクセス制御を使用した Azure AI 検索への接続に関するページを参照してください。
キーベースの認証が必要ない場合は、API キーを無効にし、ロールの割り当てのみを使用することをお勧めします。
ネットワークで保護されたストレージ アカウントへのアクセス
検索サービスでは、インデックスとシノニム リストを格納します。 ストレージを必要とするその他の機能の場合、Azure AI Search は Azure Storage に依存します。 エンリッチメント キャッシュ、デバッグ セッション、ナレッジ ストアは、このカテゴリに分類されます。 各サービスの場所と、ストレージ用のネットワーク保護によって、データ アクセス戦略が決まります。
同じリージョンのサービス
Azure Storage では、ファイアウォール経由でアクセスするには、要求が別のリージョンから送信されている必要があります。 Azure Storage と Azure AI Search が同じリージョンにある場合は、検索サービスのシステム ID の下にあるデータにアクセスして、ストレージ アカウントの IP 制限を回避できます。
システム ID を使用してデータ アクセスをサポートするには、次の 2 つのオプションがあります。
Azure Storage で信頼済みサービスとして実行し、信頼済みサービスの例外を使用するように検索を構成します。
Azure リソースからの受信要求を許可するリソース インスタンス ルールを Azure Storage で構成します。
上記のオプションは認証用の Microsoft Entra ID によって異なります。つまり、Microsoft Entra ログインで接続する必要があります。 現在、ファイアウォール経由の同じリージョン接続では、Azure AI Search システム割り当てマネージド ID のみがサポートされています。
異なるリージョンのサービス
検索とストレージが異なるリージョンにある場合は、前述のオプションを使用するか、お使いのサービスからの要求を許可する IP ルールを設定できます。 ワークロードによっては、次のセクションで説明するように、複数の実行環境のルールを設定する必要がある場合があります。
次のステップ
Azure 仮想ネットワークにデプロイされたソリューションのインデクサー データ アクセス オプションについて理解したら、次の手順として次のハウツー記事のいずれかを確認します。