Azure AI Search では、ドキュメント レベルのアクセス制御がサポートされており、組織はデータ インジェストからクエリ実行まで、ドキュメント レベルできめ細かいアクセス許可を適用できます。 この機能は、セキュリティで保護された AI エージェント システムを構築し、データを接地し、Retrieval-Augmented Generation (RAG) アプリケーション、およびドキュメント レベルで承認チェックを必要とするエンタープライズ検索ソリューションを構築するために不可欠です。
ドキュメント レベルのアクセス制御のアプローチ
| 方法 | 説明 |
|---|---|
| セキュリティ フィルター | 文字列の比較。 アプリケーションは、ユーザーまたはグループ ID を文字列として渡します。この ID は、文字列に一致しないドキュメントを除き、クエリにフィルターを設定します。 セキュリティ フィルターは、ドキュメント レベルのアクセス制御を実現するための手法です。 この方法は API にバインドされていないため、任意のバージョンまたはパッケージを使用できます。 |
| POSIX に似た ACL/RBAC スコープ (プレビュー) | クエリ トークンの背後にある Microsoft Entra セキュリティ プリンシパルは、検索結果で返されるドキュメントのアクセス許可メタデータと比較されます。ただし、アクセス許可に一致しないドキュメントは除きます。 アクセス制御リスト (ACL) のアクセス許可は、Azure Data Lake Storage (ADLS) Gen2 のディレクトリとファイルに適用されます。 ロールベースのアクセス制御 (RBAC) スコープは、ADLS Gen2 コンテンツと Azure BLOB に適用されます。 ドキュメント レベルでの ID ベースのアクセスの組み込みサポートはプレビュー段階であり、この機能を提供する REST API とプレビュー版 Azure SDK パッケージで使用できます。 機能のサポートの証拠については、 必ず SDK パッケージの変更ログ を確認してください。 |
| Microsoft Purview センシティビティ ラベル (プレビュー) | インデクサーは、サポートされているデータ ソース (Azure Blob Storage、ADLS Gen2、Microsoft 365 の SharePoint、OneLake) から Microsoft Purview で定義されている秘密度ラベルを抽出します。 これらのラベルはメタデータとして保存され、クエリ時に評価され、Microsoft Entra トークンと Purview ポリシーの割り当てに基づいてユーザー アクセスが適用されます。 このアプローチにより、Azure AI Search の承認が企業の Microsoft Information Protection モデルに合わせて調整されます。 |
| Microsoft 365 ACL の SharePoint (プレビュー) | 構成すると、Azure AI Search インデクサーは、初期インジェスト中に Microsoft 365 ACL から SharePoint ドキュメントのアクセス許可を直接抽出します。 アクセス チェックでは、Microsoft Entra のユーザーメンバーシップとグループ メンバーシップが使用されます。 サポートされているグループの種類には、Microsoft Entra セキュリティ グループ、Microsoft 365 グループ、メールが有効なセキュリティ グループなどがあります。 SharePoint グループは、プレビューではまだサポートされていません。 |
フィルターを使用したセキュリティ トリミングのパターン
ネイティブ ACL/RBAC スコープの統合が実行できないシナリオでは、除外条件に基づいて結果をトリミングするためのセキュリティ文字列フィルターをお勧めします。 このパターンには、次のコンポーネントが含まれています。
- ユーザー ID またはグループ ID を格納するには、インデックスに文字列フィールドを作成します。
- 関連付けられている ACL を含むソース ドキュメントを使用してインデックスを読み込みます。
- 文字列に一致するフィルター式をクエリ ロジックに含めます。
- クエリ時に、呼び出し元の ID を取得します。
- 呼び出し元の ID をフィルター文字列として渡します。
- 結果は、ユーザーまたはグループの ID 文字列を含めなかった一致を除外するためにトリミングされます。
プッシュ またはプル モデル API を使用できます。 このアプローチは API に依存しないため、インデックスとクエリにフィルター処理手順の有効な文字列 (ID) があることを確認する必要があります。
このアプローチは、カスタム アクセス モデルまたは Microsoft 以外のセキュリティ フレームワークを持つシステムに役立ちます。 この方法の詳細については、「 Azure AI Search で結果をトリミングするためのセキュリティ フィルター」を参照してください。
POSIX に似た ACL と RBAC スコープのアクセス許可のネイティブ サポートのパターン (プレビュー)
ネイティブ サポートは、インデックス作成とクエリを実行するドキュメントに関連する Microsoft Entra ユーザーとグループに基づいています。
Azure Data Lake Storage (ADLS) Gen2 コンテナーでは、コンテナーとファイルの ACL がサポートされます。 ADLS Gen2 の場合、ドキュメント レベルでの RBAC スコープの保持は、 ADLS Gen2 インデクサー または BLOB ナレッジ ソース (ADLS Gen2 をサポート) とプレビュー API を使用してコンテンツを取り込む場合にネイティブにサポートされます。 Azure BLOB インデクサーまたはナレッジ ソースを使用する Azure BLOB の場合、RBAC スコープの保持はコンテナー レベルです。
ACL で保護されたコンテンツの場合は、管理を容易にするために、個々のユーザー アクセスに対するグループ アクセスをお勧めします。 このパターンには、次のコンポーネントが含まれています。
- ACL が割り当てられているドキュメントまたはファイルから始めます。
- インデックスでアクセス許可フィルターを有効にします。
- インデックス内の文字列フィールドにアクセス許可フィルターを追加します。
- 関連付けられた ACL を持つソース ドキュメントでインデックスを読み込みます。
- インデックスにクエリを実行し、要求ヘッダーに
x-ms-query-source-authorizationを追加します。
クライアント アプリは、 検索インデックス データ閲覧者ロールまたは検索インデックス データ 共同作成者ロールを使用して 、インデックス に対する読み取りアクセス許可を受け取ります。 クエリ時のアクセスは、インデックス付きコンテンツのユーザーまたはグループのアクセス許可メタデータによって決まります。 アクセス許可フィルターを含むクエリは、要求ヘッダーに x-ms-query-source-authorization としてユーザーまたはグループ トークンを渡します。 クエリ時にアクセス許可フィルターを使用すると、Azure AI Search によって次の 2 つのことが確認されます。
最初に、クライアント アプリケーションがインデックスにアクセスできるようにする 検索インデックス データ 閲覧者 アクセス許可を確認します。
次に、要求に対する追加のトークンを指定すると、検索結果で返されるドキュメントに対するユーザーまたはグループのアクセス許可がチェックされます。一致しないアクセス許可は除きます。
インデックスにアクセス許可メタデータを取得するには、プッシュ モデル API を使用して、JSON ドキュメントを検索インデックスにプッシュします。ペイロードには、ドキュメントごとに POSIX に似た ACL を提供する文字列フィールドが含まれています。 このアプローチとセキュリティ トリミングの重要な違いは、インデックスとクエリのアクセス許可フィルター メタデータが Microsoft Entra ID 認証として認識されるのに対し、セキュリティ トリミングの回避策は単純な文字列比較です。 また、Graph SDK を使用して ID を取得することもできます。
データ ソースが Azure Data Lake Storage (ADLS) Gen2 で、コードがインデックス作成用のプレビュー API を呼び出す場合は、プル モデル (インデクサー) API を使用することもできます。
データ インジェスト プロセス中に ACL アクセス許可メタデータを取得する (プレビュー)
ACL アクセス許可を取得する方法は、ドキュメント ペイロードをプッシュするか、ADLS Gen2 インデクサーを使用するかによって異なります。
次の機能を提供するプレビュー API から始めます。
- 2025-11-01-preview REST API
- Azure SDK for Python プレリリース パッケージ
- Azure SDK for .NET プレリリース パッケージ
- Azure SDK for Java プレリリース パッケージ
プッシュ モデルアプローチの場合:
- インデックス スキーマもプレビューまたはプレリリース SDK で作成され、スキーマにアクセス許可フィルターがあることを確認します。
- グループ ID またはユーザー ID を取得するには、Microsoft Graph SDK を使用することを検討してください。
- インデックス ドキュメントまたは同等の Azure SDK API を使用して、ドキュメントとそれに関連付けられているアクセス許可メタデータを検索インデックスにプッシュします。
プル モデルの ADLS Gen2 インデクサー アプローチまたは BLOB (ADLS Gen2) ナレッジ ソースの場合:
- ディレクトリ内のファイルが ADLS Gen2 アクセス制御モデルを使用してセキュリティで保護されていることを確認します。
- インデクサー REST API の作成またはナレッジ ソース REST API の作成、または同等の Azure SDK API を使用して、インデクサー、インデックス、およびデータ ソースを作成します。
Microsoft 365 の基本的な ACL アクセス許可インジェスト (プレビュー) での SharePoint のパターン
Microsoft 365 コンテンツの SharePoint の場合、Azure AI Search では、SharePoint ACL に基づいてドキュメント レベルのアクセス許可を適用できます。 この統合により、SharePoint のソース ドキュメントにアクセスできるユーザーまたはグループのみが、インデックスでアクセス許可が同期されるとすぐに、検索結果で取得できるようになります。 アクセス許可は、ドキュメントの初回取り込み中にインデックスに適用されます。
SharePoint ACL のサポートは、 2025-11-01-preview REST API またはサポートされている SDK を使用して、SharePoint インデクサーを通じてプレビューで利用できます。 インデクサーは、ファイルとリスト アイテムのアクセス許可メタデータを抽出し、検索インデックスに保持します。このメタデータは、クエリ時にアクセス制御を適用するために使用されます。
このパターンには、次のコンポーネントが含まれています。
- Microsoft 365 のインデクサーをアプリケーション権限で使用し、SharePoint サイトコンテンツと ACL を読み取ります。 有効化と制限については、 SharePoint インデクサー ACL のセットアップ手順 に従います。
- 最初のインデックス作成中に、SharePoint ACL エントリ (ユーザーとグループ) がアクセス許可メタデータとして検索インデックスに格納されます。
- ACL の増分インデックス作成については、パブリック プレビュー中に 使用可能な SharePoint ACL の再同期メカニズムを 確認してください。
- クエリ時に、Azure AI Search はクエリ トークン内の Microsoft Entra プリンシパルを、インデックスに格納されている SharePoint ACL メタデータと照合します。 呼び出し元がアクセスを許可されていないドキュメントは除外されます。
プレビュー期間中は、SharePoint ACL でサポートされているプリンシパルの種類は次のとおりです。
- Microsoft Entra ユーザー アカウント
- Microsoft Entra セキュリティ グループ
- Microsoft 365 グループ
- メールが有効なセキュリティ グループ
SharePoint グループは、プレビュー リリースではサポートされていません。
構成の詳細と完全な制限については、「 Microsoft 365 ドキュメント レベルのアクセス許可 (プレビュー)で SharePoint のインデックスを作成する方法」を参照してください。
Microsoft Purview 秘密度ラベルのパターン (プレビュー)
Azure AI Search では、ドキュメント レベルのアクセス制御用 に Microsoft Purview 秘密度ラベル を取り込んで適用し、Microsoft Purview から検索および取得アプリケーションに情報保護ポリシーを拡張できます。
ラベル インジェストが有効になっている場合、Azure AI Search は、サポートされているデータ ソースから秘密度メタデータを抽出します。 これには、Azure Blob Storage、Azure Data Lake Storage Gen2 (ADLS Gen2)、Microsoft 365 の SharePoint、および Microsoft OneLake が含まれます。 抽出されたラベルは、ドキュメント コンテンツと共にインデックスに格納されます。
クエリ時に、Azure AI Search は、各ドキュメントの秘密度ラベル、ユーザーの Microsoft Entra トークン、および組織の Purview ポリシーをチェックしてアクセスを決定します。 ドキュメントが返されるのは、ユーザーの ID とラベルベースのアクセス許可が、構成済みの Purview ポリシーでのアクセスを許可する場合のみです。
このパターンには、次のコンポーネントが含まれています。
- 2025-11-01-preview REST API または Purview ラベル インジェストをサポートする対応する SDK を使用して、 インデックス、 データ ソース 、イン デクサー を (スケジュール設定の目的で) 構成します。
- システム 割り当てマネージド ID を 検索サービスに対して有効にします。 次に、検索サービスが Microsoft Purview に安全にアクセスしてラベル メタデータを抽出できるように、テナントのグローバル管理者または特権ロール管理者に 必要なアクセス権を付与するよう依頼します。
- ドキュメントをインデックス作成する前に秘密度ラベルを適用し、取り込みプロセス中に認識されて保持されるようにします。
- クエリ時に、ヘッダー
x-ms-query-source-authorizationを介して有効な Microsoft Entra トークンを各クエリ要求にアタッチします。 Azure AI Search では、トークンと関連するラベル メタデータが評価され、ラベルベースのアクセス制御が適用されます。
Purview 秘密度ラベルの適用は、シングルテナント シナリオに限定され、RBAC 認証が必要であり、パブリック プレビュー中は REST API または SDK 経由でのみサポートされます。 現時点では、オートコンプリート API と Suggest API は Purview 対応インデックスでは使用できません。
詳細については、「 Azure AI Search インデクサーを使用して Microsoft Purview 秘密度ラベルを取り込む」を参照してください。
クエリ時にドキュメント レベルのアクセス許可を適用する
ネイティブ トークンベースのクエリを使用すると、Azure AI Search はユーザーの Microsoft Entra トークンを検証し、ユーザーがアクセスを許可されているドキュメントのみを含むように結果セットをトリミングします。
ユーザーの Microsoft Entra トークンをクエリ要求にアタッチすることで、自動トリミングを実現できます。 詳細については、 Azure AI Search でのクエリ時間 ACL と RBAC の適用に関するページを参照してください。
ドキュメント レベルのアクセス制御の利点
ドキュメント レベルのアクセス制御は、AI 駆動型アプリケーションの機密情報を保護するために重要です。 これは、組織がアクセス ポリシーに合わせたシステムを構築し、承認されていないデータや機密データを公開するリスクを軽減するのに役立ちます。 AI システムは、アクセス 規則を検索パイプラインに直接統合することで、セキュリティで保護された承認された情報に基づいている応答を提供できます。
アクセス許可の適用を Azure AI Search にオフロードすることで、開発者は高品質の取得およびランク付けシステムの構築に集中できます。 この方法は、入れ子になったグループの処理、カスタム フィルターの記述、検索結果の手動トリミングの必要性を減らすのに役立ちます。
Azure AI Search のドキュメント レベルのアクセス許可は、組織のポリシーに合わせてアクセス制御を適用するための構造化されたフレームワークを提供します。 Microsoft Entra ベースの ACL と RBAC ロールを使用することで、組織は堅牢なコンプライアンスをサポートし、ユーザー間の信頼を促進するシステムを作成できます。 これらの組み込み機能により、カスタム コーディングの必要性が軽減され、ドキュメント レベルのセキュリティに対する標準化されたアプローチが提供されます。
チュートリアルとサンプル
Azure AI Search のドキュメント レベルのアクセス制御について詳しく見てみましょう。その他の記事やサンプルも紹介しています。
- チュートリアル: インデクサーを使用して ADLS Gen2 アクセス許可メタデータのインデックスを作成する
- azure-search-rest-samples/acl
- azure-search-python-samples/Quickstart-Document-Permissions-Push-API
- azure-search-python-samples/Quickstart-Document-Permissions-Pull-API
- デモ アプリ: 秘密度ラベルの取り込みと反映