SharePoint インデクサーを使用してアクセス許可メタデータを取り込み、ユーザー アクセス権に基づいて検索結果をフィルター処理する (プレビュー)

メモ

Azure AI 検索は、Azure ポータル、REST API、およびAzure SDKから使用できます。 また、Foundry IQ は、エンタープライズ コンテンツを、Microsoft Foundry ポータルのエージェントの再利用可能なアクセス許可に対応したナレッジ ベースに変換するマネージド ナレッジ レイヤーです。

重要

機能、またはマークされたプロパティ (プレビュー) は、サービス レベル アグリーメントの対象ではなく、運用環境のワークロードには推奨されず、一般公開される前に変更または制約される可能性があります。 Azure AI 検索 プレビューの用語は、スタンドアロンでも一般公開されている機能の一部でも、すべてのプレビュー機能に適用されます。

SharePointアクセス許可メタデータ インジェスト (プレビュー) では、Azure AI 検索 インデクサーを使用して、アクセス制御リスト (ACL) などのアクセス許可メタデータと、Microsoft 365のSharePointの他のコンテンツを保持します。 インデクサーは、インデックスが作成された各ドキュメントのメタデータとしてアクセス許可を格納します。 クエリ時に、ユーザーはアクセス許可を持つドキュメントのみを受け取ります。

SharePoint インデクサーが SharePoint サイトからドキュメントおよび ACL 許可メタデータを取り込み、それらを Azure AI サーチ インデックスに格納するセキュリティで制限された RAG ソリューションを示すアーキテクチャ図です。RAG オーケストレーターによってクエリ結果がフィルタリングされるため、各ユーザーはアクセスが許可されたドキュメントのみを取得します。

重要

完全なSharePointのアクセス許可モデル、秘密度ラベル、すぐに使用できるセキュリティトリミングを必要とするシナリオでは、リモートSharePointナレッジソースを使用します。 この方法では、Copilot 取得 API を介してSharePointを直接呼び出します。 ガバナンスは引き続き完全にSharePointであり、クエリ結果では、適用されるすべてのアクセス許可とラベルが自動的に尊重されます。

前提 条件

  • Azure AI 検索は、任意のリージョンの課金対象レベル (Basic 以降) に適用されます。

  • Microsoft 365 のサイト、ライブラリ、フォルダー、およびアクセス許可が設定されたファイル内の SharePoint。

  • この記事で説明する ACL 固有の要件を適用して、SharePoint インデクサーのドキュメントのすべての構成手順を完了します。

  • Microsoft Entraアプリケーションのアクセス許可と、シナリオに適した資格情報を構成します。 ACL ごとのアクセス許可のシナリオを参照してください。 ACL インジェストには、アプリケーションのアクセス許可が必要です。 委任されたアクセス許可はサポートされていません。 アプリケーション許可と委任された許可のどちらにするかについては、アクセス許可の設定を選択するを参照してください。

  • REST API バージョン 2026-08-01-preview または同等のプレビュー SDK パッケージ。

制限

SharePointアクセス許可モデルのサポート

このプレビューでは、ドキュメント、リスト アイテム、および最新の ASPX サイト ページの基本的な ACL がサポートされています。

SharePoint機能 説明 サポートされています ノート
サイト、ライブラリ、リスト、ページの継承 サイト → ライブラリ/リスト → フォルダー→ファイル/アイテム/ページ。 ✔️ 取り込み時に評価されます。項目ごとに有効なACLが計算されます。
フォルダー、ファイル、リスト アイテム、ページ固有の ACL 項目レベルのアクセス。 ✔️ 最初のインジェスト時と、一意のアクセス許可を持つ項目の ACL の変更を検出する後続の実行時に含まれます。
SharePoint リスト項目 リスト アイテム (allSiteLists および allSiteContent コンテナー) に対するアクセス許可。 ✔️ 2026-05-01-preview REST API でプレビューとして提供開始。
ASPX サイト ページ モダン サイト ページ (allSitePages および allSiteContent コンテナー) に対するアクセス許可。 ✔️ 2026-05-01-preview REST API でプレビューとして提供開始。
Microsoft Entra (Microsoft 365とセキュリティ) グループ グループベースのアクセス。 ✔️ Microsoft Entra 識別子 (ID) に解決可能な場合、グループ ID が含まれます。
SharePoint サイト グループ 所有者/メンバー/訪問者とカスタム サイト グループ。 ✔️ 2026-05-01-preview REST API でプレビューとして提供開始。 SharePoint グループの構成が必要です。 グループ ID は、 spg: プレフィックスで出力されます。
共有可能な "すべてのユーザーのリンク" または "組織内のユーザーのリンク" 組織全体またはパブリック アクセス。 ❌ プレビューではサポートされていません。
外部/ゲスト ユーザー ゲスト用のアクセス。 ❌ サポートされていません。
情報管理ポリシー 特定のアクセス許可の要件を定義するポリシー。 ❌ プレビューではサポートされていません。
Purview 秘密度ラベル プライバシー、分類、アクセス許可、暗号化のためのドキュメント レベルのセキュリティ ❌ 別の機能を使用してサポートされています:感度ラベルの保持と尊重。

サポートされているグループリレーションシップ

Microsoft Entraグループ推移性は、Microsoft Entra内で適用されます。 SharePoint グループのメンバーである Microsoft Entra グループは展開されません。

アクセス許可の関係 サポートされています Guidance
SharePoint項目に直接割り当てられているユーザーまたはMicrosoft Entra グループ はい インデクサーは、ユーザーまたはMicrosoft Entraグループ オブジェクト ID をアイテムのアクセス許可メタデータに格納します。
ユーザーが推移的なMicrosoft Entra グループの入れ子を使用して、割り当てられたMicrosoft Entra グループに到達する はい クエリ時の Microsoft Graph による解決では、ユーザーの推移的な Microsoft Entra グループ メンバーシップが展開されます。
アイテムにアクセスできるSharePoint サイト グループに直接割り当てられたユーザー はい SharePoint グループのサポートを構成します。
SharePoint グループ内にネストされた Microsoft Entra グループ いいえ SharePoint グループの解決では、入れ子になった Microsoft Entra グループは展開されません。 このリレーションシップに依存する結果は除外されます。SharePoint グループにユーザーを直接追加するか、サポートされているMicrosoft Entra グループの割り当てを通じてアクセス許可を付与します。
SharePoint と Microsoft Entra を組み合わせたその他のネスト構成 指定なし Microsoft Entra の推移性を根拠に、サポートされていると判断しないでください。 このプレビューの制限は、SharePoint グループ内で入れ子になったMicrosoft Entra グループに限定されます。

階層型アクセス許可の評価方法

SharePoint権限は、継承が解除されない限り、Site → Library → Folder → File の階層を継承します。

インジェスト中、インデクサーは各レベルでユーザーとグループの識別子 (ID) を収集し、各ファイルの有効な ACL を計算します。

ACL ごとのアクセス許可シナリオ

ACL インジェストに必要なMicrosoft Entraアプリケーションのアクセス許可と資格情報の種類は、インデックスを作成する項目の種類とグループの種類によって異なります。 アプリの登録では、すべてのアクセス許可が API のアクセス許可で追加されます>アクセス許可を追加すると、フェデレーション資格情報が証明書とシークレット>Federated 資格情報の下に追加されます。 詳細な手順とスクリーンショットについては、「手順 3: Microsoft Entra アプリケーションの登録を作成するおよび登録済みアプリケーションをマネージド ID で構成するを参照してください。

Scenario 追加する API アクセス許可 資格情報
ドキュメント ライブラリ ファイルの ACL(Microsoft Entra ユーザーと標準グループ (Microsoft Entra セキュリティ グループ、Microsoft 365 グループ、メールが有効なセキュリティ グループ) 経由でのみアクセスが許可されている場合 Microsoft Graph: Files.Read.All、Sites.FullControl.All (またはスコープ付きアクセスの場合は Sites.Selected) クライアント シークレットまたはフェデレーション資格情報
SharePoint サイト グループ (所有者、メンバー、閲覧者、またはカスタム サイト グループ) も考慮する必要がある場合の、ドキュメント ライブラリ内のファイルに対する ACL Microsoft Graph: Files.Read.All、Sites.FullControl.All (または Sites.Selected)
SharePoint: Sites.FullControl.All (または Sites.Selected)
フェデレーション資格情報 (必須)
SharePoint リスト項目の ACL Microsoft Graph: Files.Read.All、Sites.FullControl.All (または Sites.Selected)、User.Read.All
SharePoint: Sites.FullControl.All (または Sites.Selected)
フェデレーション資格情報 (必須)
ASPX サイト ページのコンテンツと ACL Microsoft Graph: Sites.FullControl.All (または Sites.Selected)、User.Read.All (ドキュメント ライブラリまたはリストのインデックスを作成する場合は、上記の行から Files.Read.All を保持します)
SharePoint: Sites.FullControl.All (または Sites.Selected)
フェデレーション資格情報 (必須)
sharePointConnectorAppRegistration を使用したSharePoint サイト グループのクエリ時間解決 SharePoint: User.Read.All をインデクサーで使用されるのと同じアプリ登録に追加します フェデレーション資格情報 (必須)

メモ

  • アクセス許可を追加するときは、Microsoft Graph と SharePoint の 2 つの API サーフェスから選択します。 どちらも、同様の名前のアクセス許可を公開します。 たとえば、 Sites.FullControl.All は両方の下に存在します。 表に示されている API 画面の下に各アクセス許可を追加します。

  • シナリオで SHAREPOINT API アクセス許可が追加されるたびに、フェデレーション資格情報を使用します。 クライアント シークレットは、Microsoft Graphのみドキュメント ライブラリ行に対してのみ機能します。

  • User.Read.All はリスト アイテムと ASPX サイト ページに必要です。インデクサーは、ユーザーの電子メールのみを返すSharePoint REST API を介してこれらのアクセス許可を読み取るためです。 その後、インデクサーはMicrosoft Graphを呼び出して各電子メールをMicrosoft Entra オブジェクト ID に解決します。その検索には User.Read.All が必要です。

  • Sites.Selected を使用する場合は、インデックスを作成する前に、各ターゲット SharePoint サイトへの明示的なアクセス権をアプリに付与します。

フェデレーション資格情報は、クライアント シークレットではなく、信頼されたマネージド ID を使用してアプリを認証します。 同じフェデレーション資格情報は、SharePoint サイト グループのインジェスト (インデクサー) とクエリ時間の評価の両方を対象とします。 セットアップ手順については、 マネージド ID を使用した登録済みアプリケーションの構成に関するページを参照してください。

ACL インジェストを有効にする前に

登録済みのMicrosoft Entra アプリケーションで次の手順を実行します。

  1. 前の表のシナリオは、インデックスを作成する予定の内容 (ドキュメント ライブラリ ファイル、リスト アイテム、ASPX サイト ページ) と、SharePointサイト グループを受け入れる必要があるかどうかに基づいて特定します。
  2. Microsoft Entra 管理センターでアプリの登録を開き、API アクセス許可>アクセス許可の追加 に移動します。
  3. シナリオに一覧表示されているMicrosoft Graphアクセス許可を追加します。 管理者の同意を付与します。
  4. シナリオにSharePointアクセス許可も必要な場合は、アクセス許可の追加をもう一度選択し、SharePoint API を選択し、Sites.FullControl.All (または Sites.Selected) を追加します。 管理者の同意を付与します。
  5. 資格情報を設定します:
    • Microsoft Graphのみのシナリオでは、クライアント シークレット (Certificates&secretsClient シークレット) またはフェデレーション資格情報を使用できます。
    • SharePointアクセス許可を含むシナリオでは、フェデレーション資格情報を Certificates & secretsFederated credentials に追加します。 マネージド ID を使用した登録済みアプリケーションの構成を参照してください。
  6. ターゲット SharePoint サイトへのアクセス権をアプリケーションに付与します (スコープ付きアクセスに Sites.Selected を使用する場合は特に重要です)。インデックスを作成するコンテンツとアクセス許可を読み取ることができます。

正しいMicrosoft Entra識別子を見つける

各識別子は、Azure ポータル内の異なる場所に表示され、特定の構成フィールドにマップされます。 このセクションは、フェデレーション資格情報を使用SharePoint ACL インジェストを構成する場合のリファレンスとして使用します。 これらの識別子は、SharePoint グループ サポートの構成およびデータ ソースの接続文字列で参照されます。

識別子 ポータルの場所 使用場所 ノート
インジェスト アプリ アプリケーション (クライアント) ID アプリの登録><your-app>>Overview データ ソース接続文字列では ApplicationId、sharePointConnectorAppRegistration では applicationId この ID は、ほとんどの構成フィールドに適しています。 "クライアント ID" とも呼ばれます。
アプリケーション オブジェクト ID アプリの登録><your-app>>Overview (アプリケーション (クライアント) ID の下) Azure AI 検索構成では使用されません これをアプリケーション (クライアント) ID と混同しないでください。 クライアント ID のすぐ下の同じブレードに表示されます。
サービス プリンシパル オブジェクト ID Microsoft Entra ID>エンタープライズ アプリケーション><your-app>>管理>プロパティ Azure AI 検索構成では使用されません これは、アプリのサービス プリンシパル表現です。 これは、アプリ登録オブジェクト ID とは異なる GUID です。
マネージド ID のプリンシパル ID マネージド ID リソース >プロパティ または検索サービスの ID ブレード Azure AI 検索 データ ソースまたはインデックス構成で直接使用されない アプリ登録でフェデレーション ID 資格情報を設定するときに内部的に使用されます。 作成する認証情報は、この ID を信頼対象とします。
フェデレーション認証情報オブジェクト ID アプリの登録管理証明書 & シークレットフェデレーション資格情報 Azure AI 検索構成では使用されません federatedCredentialIdにフェデレーション ID 資格情報エントリの GUID を使用しないでください。
フェデレーション資格証明のアプリケーション ID システム割り当て: Microsoft Entra ID>エンタープライズ アプリケーション><search-service>>プロパティ; ユーザー割り当て: <managed-identity-resource>>プロパティ データ ソース接続文字列では FederatedCredentialApplicationId、sharePointConnectorAppRegistration では federatedCredentialId マネージド ID 参照については、 フェデレーション資格情報アプリケーション ID を参照してください。

フェデレーション資格証明のアプリケーション ID

データ ソースの接続文字列の federatedCredentialId とインデックス定義の FederatedCredentialApplicationId には、インジェスト アプリの ID ではなく、マネージド ID 自体のアプリケーション (クライアント) ID を使用します。

システム割り当てマネージド ID:

  1. Azure AI 検索 サービスに移動します。
  2. [ セキュリティとネットワーク>Identity] を選択します。
  3. システム割り当て タブで、オブジェクト (プリンシパル) ID を控えておきます。
  4. Microsoft Entra ID>Manage>Enterprise アプリケーションに移動します。
  5. 検索サービス名を検索するか、 オブジェクト (プリンシパル) ID を 検索ボックスに貼り付けます。
  6. 結果を選択し、[ プロパティ] を開きます。 ここに示す アプリケーション ID を コピーします。これは、データ ソース内の FederatedCredentialApplicationId の値であり、インデックスに federatedCredentialId 。

ユーザー割り当てマネージド ID:

  1. ユーザー割り当てマネージド ID リソースに移動します。
  2. [設定]>[プロパティ] の順に選択します。
  3. クライアント ID をコピーします。これは、データ ソース内のFederatedCredentialApplicationIdとインデックス内のfederatedCredentialIdの値です。

ACL インジェストとクエリ時間の適用用に検索サービスを構成する

次の手順では、検索サービスで ACL インジェストを構成し、クエリ時に ACL の受け入れを有効にします。

ACL フィールドを設定する場所を選択する

ACL メタデータ フィールドをマップする場所は、インデクサーがソース項目ごとに 1 つのドキュメントを書き込むか、ソース項目ごとに複数のチャンクを書き込むかによって異なります。

Scenario ACL フィールドに入力する方法 なぜでしょうか
スキルセットなし、またはチャンク化なしのスキルセット。ソース アイテムごとに 1 つの検索ドキュメント Indexer フィールド マッピングのみ (metadata_user_ids → UserIds、metadata_group_ids → GroupIds、および SharePoint グループmetadata_spo_site_url → SharePointSiteUrl)。 インデクサーはターゲット インデックスに 1 つのドキュメントを書き込み、フィールド マッピングはソース メタデータをインデックス フィールドに伝達します。
チャンクを使用したスキルセット (統合ベクター化のためのテキスト分割スキルなど)、各チャンクで親フィールドが繰り返される単一インデックス (projectionMode: skipIndexingParentDocuments) スキルセット内のインデックス プロジェクション(mappings、/document/metadata_user_ids からは /document/metadata_group_ids、SharePoint グループについては /document/metadata_spo_site_url)。 親ドキュメントはインデックスされておらず、インデックスされているのはチャンクのみです。 ACL 値はすべてのチャンクに投影する必要があるため、クエリ時間フィルターは結果で返されるチャンクに適用されます。 これらのフィールドのインデクサー フィールド マッピングは、このモードではバイパスされます。
チャンク化と 2 つのインデックス (親インデックス+子チャンク インデックス) を用いたスキルセット 両方: インデクサー フィールド マッピングは親インデックスの ACL フィールドを設定し、インデックス プロジェクションは子チャンク インデックスの ACL フィールドを設定します。 どちらのインデックスもクエリ可能であり、それぞれフィルター処理するメタデータが必要です。

チャンク化されたすべてのシナリオでは、すべてのチャンクに ACL フィールドが含まれている必要があります。 アクセス許可フィルターはドキュメントごとに適用されるため、ACL フィールドが欠けているチャンクは正しい呼び出し元に返せません。

1. データ ソースの構成

このセクションは、基本手順ステップ 4: データソースの作成との差分です。 indexerPermissionOptions で を設定して、SharePoint ドキュメントから userIds および groupIds のインデックスを作成できるようにします。

{
  "name": "my-sharepoint-acl-datasource",
  "type": "sharepoint",
  "indexerPermissionOptions": ["userIds", "groupIds"],
  "credentials": {
    "connectionString": "<connection-string>;"
  },
  "container": {
    "name": "<library-name>",
    "query": "<optional-folder-path>"
  }
}

2. インデックス定義にアクセス許可フィールドを追加する

ACL を格納し、クエリ時間のフィルター処理をサポートするために、 インデックス スキーマ定義 にフィールドを追加します。

{
  "fields": [
    { "name": "UserIds",  "type": "Collection(Edm.String)", "permissionFilter": "userIds",  "filterable": true, "retrievable": false },
    { "name": "GroupIds", "type": "Collection(Edm.String)", "permissionFilter": "groupIds", "filterable": true, "retrievable": false }
  ],
  "permissionFilterOption": "enabled"
}

値 retrievable 検証するには、開発中にのみ属性を true に設定します。 インデックスの再構築を必要とせず、取得可能な値を true から false に変更できます。

3. スキルセットでインデックス プロジェクションを構成する (該当する場合)

チャンクが有効になっている場合、 projectionMode が skipIndexingParentDocumentsされている場合、親ドキュメントはインデックスに書き込まれません。 indexProjections.selectors[].mappings を介して、ACL メタデータを各チャンクに引き継ぎます。

インデクサーで、統合ベクター化を有効にするときにテキスト分割スキルなどのデータ チャンクを含むスキルセットを使用する場合は、インデックス プロジェクションを使用して ACL プロパティを各チャンクにマップしてください。 次の例の // 行は説明的な注釈であり、有効な JSON ではありません。 要求を送信する前に、それらを削除します。

PUT https://{service}.search.windows.net/skillsets/{skillset}?api-version=2026-08-01-preview
{
  "name": "my-skillset",
  "skills": [
    {
      "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
      "name": "#split",
      "context": "/document",
      "inputs": [{ "name": "text", "source": "/document/content" }],
      "outputs": [{ "name": "textItems", "targetName": "chunks" }]
    }
    // ... (other skills such as embeddings, entity recognition, etc.)
  ],
  "indexProjections": {
    "selectors": [
      {
        "targetIndexName": "chunks-index",
        "parentKeyFieldName": "parentId",          // must exist in target index
        "sourceContext": "/document/chunks/*",     // match your split output path
        "mappings": [
          { "name": "chunkId",           "source": "/document/chunks/*/id" },     // if you create an id per chunk
          { "name": "content",           "source": "/document/chunks/*/text" },   // chunk text
          { "name": "parentId",          "source": "/document/id" },              // parent doc id
          { "name": "UserIds",  "source": "/document/metadata_user_ids" },
          { "name": "GroupIds",  "source": "/document/metadata_group_ids" },
          { "name": "SharePointSiteUrl", "source": "/document/metadata_spo_site_url" } // include when the index has sharePointConnectorAppRegistration (SharePoint groups support)
        ]
      }
    ],
    "parameters": {
      "projectionMode": "skipIndexingParentDocuments"
    }
  }
}

UserIds、GroupIds、および SharePointSiteUrl マッピングは、SharePoint インデクサー (/document/metadata_*) によって出力されたソース レベルのメタデータを読み取り、各チャンクに値を書き込みます。

4. ACL のインデクサー フィールド マッピングを構成する

インデクサー フィールド マッピングは、インデクサーがソース アイテムごとに 1 つのドキュメントを書き込む場合 (チャンクなし)、またはチャンク インデックスと共に別の親インデックスを保持する場合に使用します。 スキルセットが projectionMode: skipIndexingParentDocuments を使用してドキュメントを単一のターゲット インデックスにチャンク化する場合、ここに示すフィールド マッピングは、チャンク インデックスについては前の手順の indexProjections.mappings によって置き換えられます。

必要な indexer 構成に加えて、SharePointの生のメタデータ ACL フィールドをインデックスフィールドにマッピングしてください。

{
  "fieldMappings": [
    { "sourceFieldName": "metadata_user_ids",  "targetFieldName": "UserIds" },
    { "sourceFieldName": "metadata_group_ids", "targetFieldName": "GroupIds" }
  ]
}

5. インデクサーを実行する

ACL メタデータは、インデクサーの実行時に取り込まれます。 インデクサーを作成または更新した後 ( 「手順 6: インデクサーを作成する」を参照)、インデクサーがコンテンツと共に ACL を取り込むよう実行をトリガーします。

POST https://[service name].search.windows.net/indexers/[indexer-name]/run?api-version=2026-08-01-preview
api-key: [admin key]

既にアイテムのインデックスが作成されている既存のインデクサーで ACL インジェストを有効にした場合は、/resyncを使用してoptions: ["permissions"]を呼び出してそれらの項目の ACL をバックフィルするか、特定の項目を再抽出/resetdocsします。

6.ACL インジェストを確認する

ACL 値が正しく設定されていることを確認するには:

  1. インデックス定義で、retrievable と true の UserIds を一時的に GroupIds に設定してください。 retrievableを変更する場合、インデックスの再構築は必要ありません。
  2. 昇格読み取りクエリを実行してUserIdsとGroupIdsを選択し、各コレクションが空でないことを確認します。 チャンク化されたシナリオでは、各チャンクに両方のフィールドが含まれていることを確認してください。
  3. 検証後に retrievable を false に戻します。

SharePoint グループのサポートを構成する

2026-05-01-preview REST API 以降、SharePoint インデクサーはサイト グループ メンバーシップ (所有者、メンバー、訪問者、カスタム サイト グループ) SharePoint取り込むことができます。 クエリ時にこれらのグループが優先されます。 SharePoint グループ ID は、Microsoft Entra グループ オブジェクト ID と区別するために、metadata_group_ids プレフィックス付きで spg: フィールドに出力されます。

このチュートリアルはこの手順内で完結しています。手順を順に実行して、インデックスとインデクサーのフィールド マッピングを構成し、SharePoint サイト グループの適用を使用してインデックスに対してクエリを実行します。

次のコンポーネントが連携して、SharePoint サイト グループの解決を可能にします。

コンポーネント Where Purpose
sharePointConnectorAppRegistration ( applicationId、 tenantId、 federatedCredentialIdあり) インデックス定義 SharePoint REST API を呼び出し元のユーザーとして呼び出し、クエリ時にサイト グループメンバーシップを解決するために検索サービスに必要な認証構成を提供します。
SharePointSiteUrl フィールド ( sharepointSiteUrl: true付き) インデックス スキーマ + metadata_spo_site_url からのインデクサー フィールド マッピング ドキュメントがどの SharePoint サイトに属しているかを識別することで、SP グループ解決のスコープが適切に設定されます。
spg: 内の GroupIds 接頭辞付きの値 ドキュメントのアクセス許可メタデータ SharePointサイト グループ ID とグループ オブジェクト ID Microsoft Entra区別します。

1.前提条件

メモ

データ ソースの接続文字列内の FederatedCredentialApplicationId および federatedCredentialId 内の sharePointConnectorAppRegistration では、マネージド ID のアプリケーション ID を使用します。 sharePointConnectorAppRegistrationの applicationId プロパティは、インジェスト アプリのクライアント ID を使用します。 正しい値を見つけるには、「正しいMicrosoft Entra識別子を見つける」を参照してください。

2. インデックスを構成する

sharePointConnectorAppRegistration構成とSharePointSiteUrl フィールドをUserIdsフィールドとGroupIdsアクセス許可フィルター フィールドと共に追加して、完全なインデックス図形を 1 か所に配置します。 permissionFilterOption: "enabled"を維持します。

PUT https://{service}.search.windows.net/indexes/{index}?api-version=2026-08-01-preview
{
  "name": "my-sharepoint-acl-index",
  "sharePointConnectorAppRegistration": {
      "applicationId": "<ingestion-app-client-id>",
      "federatedCredentialId": "<managed-identity-application-id>",
     "tenantId": "<sharepoint-tenant-id>"
  },
  "fields": [
    { "name": "UserIds",           "type": "Collection(Edm.String)", "permissionFilter": "userIds",  "filterable": true, "retrievable": false },
    { "name": "GroupIds",          "type": "Collection(Edm.String)", "permissionFilter": "groupIds", "filterable": true, "retrievable": false },
    { "name": "SharePointSiteUrl", "type": "Edm.String", "sharepointSiteUrl": true, "filterable": false, "retrievable": false }
  ],
  "permissionFilterOption": "enabled"
}

3. インデクサー フィールド マッピングを構成する

SharePointメタデータ フィールドを、1 つの結合されたマッピング ブロック内のインデックス フィールドにマップします。 最初の 2 つのマッピングは、標準 ACL インジェストに使用されるマッピングと同じです。3 番目のマッピングでは、SharePointグループの解決がアクティブになります。

{
  "fieldMappings": [
    { "sourceFieldName": "metadata_user_ids",             "targetFieldName": "UserIds" },
    { "sourceFieldName": "metadata_group_ids",            "targetFieldName": "GroupIds" },
    { "sourceFieldName": "metadata_spo_site_url",  "targetFieldName": "SharePointSiteUrl" }
  ]
}

スキルセットがドキュメントをチャンクに分割する場合は(たとえば、統合ベクトル化のために Text Split スキルを使用して)、代わりに SharePointSiteUrl を通じて indexProjections.mappings を各チャンクに投影します。 ACL フィールドを設定する場所の選択を参照してください。

4. インデックスのクエリを実行する

クライアント側の変更は必要ありません。 同じx-ms-query-source-authorization トークンは、Microsoft EntraとSharePointサイト グループの両方の適用をアクティブにします。 検索サービスは、インデックス上の sharePointConnectorAppRegistration を使用して、SharePoint グループのメンバーシップをサーバー側で解決します。

要求の形状については、general クエリの例およびSharePoint固有のサンプルとSharePointサイト グループの適用を参照してください。

5. 確認する

SharePoint グループ ID がインデックスに取り込まれていることを確認するには、elevated-read クエリを実行して GroupIds を選択し、応答で spg: で始まる値を探します。

インデックス付きコンテンツとソース コンテンツの間でアクセス許可を同期する

2026-05-01-preview REST API 以降では、インデクサーの実行が成功するたびに、一意のアクセス許可を持つ項目の ACL の変更が検出され、更新されます。 インデクサーはSharePoint変更トークンを使用して、コンテンツの変更を取得するのと同じ方法で、ロールの割り当ての追加と削除を段階的に取得します。

一部のシナリオでは、引き続き明示的な更新が必要です。

スコープの変更 自動的に検出されました 推奨されるアクション
一意のアクセス許可 (ファイル、リスト アイテム、またはページ) を持つ特定のアイテムに対するアクセス許可 はい アクションは必要ありません。 この変更は、次に成功したインデクサーの実行で取得されます。
特定のアイテムのコンテンツ変更 (その項目の有効な ACL も再評価されます) はい アクションは必要ありません。
子アイテムによって継承される親スコープ (サイト、ライブラリ、リスト、またはフォルダー) に対するアクセス許可の変更 いいえ /resyncを使用してoptions: ["permissions"]を呼び出してデータ ソース全体の ACL を更新するか、影響を受けるドキュメント キーを使用して/resetdocsを呼び出してコンテンツと ACL の両方を更新します。
既存のインデクサーで有効になっている ACL インジェスト いいえ 以前にインデックス付けされた項目の ACL を補完するには、/resync を指定して options: ["permissions"] を呼び出します。

特定のドキュメントをリセットする

特定の ドキュメントをリセット して、コンテンツと ACL を完全に再び取り込むことができます。

POST https://{service}.search.windows.net/indexers/{indexer}/resetdocs?api-version=2026-08-01-preview
{
  "documentKeys": ["doc123", "doc456"]
}

完全なデータ ソース間で ACL を再同期する

最初のインジェスト後 に、完全なデータ セット ACL コンテンツを再同期 できます。 この操作を完全に成功させるには、完了後に インデクサーを実行 する必要があります。

POST https://{service}.search.windows.net/indexers/{indexer}/resync?api-version=2026-08-01-preview
{
  "options": ["permissions"]
}

重要

更新メカニズムをトリガーせずにSharePointアクセス許可を変更すると、インデックスは以前に取り込まれたファイルの古い ACL データを処理します。

データと ACL のインデックスを作成した後、 インデックスに対してクエリを実行できます。

Troubleshooting

症状: 原因と解決策
UserIds またはインデックス付きドキュメントで GroupIds が空です スキルセットで projectionMode: skipIndexingParentDocumentsを使用している場合、ACL フィールドのインデクサー フィールド マッピングはバイパスされます。 代わりに、すべてのチャンクで indexProjections.mappings を使用して ACL フィールドを設定します。
SharePointサイト グループ ID がないか、GroupIds 値に spg: プレフィックスがありません インデックスに sharePointConnectorAppRegistration 構成があり、 SharePointSiteUrl フィールドが sharepointSiteUrl: trueと共に存在し、 metadata_spo_site_url マッピングがインデクサー フィールド マッピングまたはインデックス プロジェクションのいずれかに存在することを確認します。
SharePointSiteUrl は、ACL が正常に反映されているにもかかわらず、インデックス作成後も空または null のままになる インデクサーは、metadata_sharepoint_site_urlではなく、metadata_spo_site_urlの下にこのメタデータを出力します。 インデクサー フィールド マッピングで "sourceFieldName": "metadata_spo_site_url"が使用されていることを確認します。 スキルセットがチャンクされたドキュメントにインデックス プロジェクションを使用している場合は、プロジェクション マッピング ソースが /document/metadata_spo_site_urlされていることを確認します。
インデクサーは 401 または 403 を返します シナリオのMicrosoft GraphとSharePoint API の両方のアクセス許可に対して管理者の同意を付与します。 シナリオで必要な場合は、(クライアント シークレットではなく) フェデレーション資格情報を使用します。 ACL ごとのアクセス許可のシナリオを参照してください。
サイト、ライブラリ、リスト、またはフォルダーの ACL を変更した後にアクセス許可が古くなる /resync で options: ["permissions"] を呼び出します。 コンテキストについては、「 インデックス付きコンテンツとソース コンテンツの間でアクセス許可を同期 する」を参照してください。
federatedCredentialId の構成時に sharePointConnectorAppRegistration は拒否される フェデレーション ID 資格情報のオブジェクト ID またはマネージド ID のプリンシパル ID ではなく、マネージド ID のアプリケーション ID を使用します。 フェデレーション資格情報アプリケーション ID を参照してください。
インデクサーは 401 Unauthorized を返し、 FederatedCredentialApplicationId が設定されます インジェスト アプリのアプリケーション (クライアント) ID (ApplicationId) やオブジェクト ID ではなく、マネージド ID のアプリケーション ID (エンタープライズ アプリケーションで見つかった) を使用したかどうかを確認します。 ユーザー割り当てマネージド ID の場合は、マネージド ID リソースの [プロパティ] ページのクライアント ID を使用します。 「正しいMicrosoft Entra識別子を見つける」を参照してください。

ACL メタデータのインデックスが作成された後にクエリ時間の結果が見つからない、予期しない、または失敗した場合は、「SharePointアクセス許可のフィルター処理のトラブルシューティング」を参照してください。