3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure AI Search から SharePoint Online のドキュメントを取り込む Step by Step

3
Posted at

はじめに

Azure AI Search の Indexed SharePoint Knowledge Source を使うと、SharePoint Online のドキュメントを Azure AI Search に取り込み、検索やエージェントのナレッジとして利用できます。

この記事では、SharePoint のドキュメントライブラリを取り込む手順を、Microsoft Entra アプリの権限設定から Azure portal のウィザードによる Knowledge Source 作成まで順に紹介します。

[!IMPORTANT]
SharePoint インデクサーはプレビュー機能です。詳細は最新の公式ドキュメントとプレビュー条件を確認してください。

この記事で作成する構成

Knowledge Source を作成すると、Azure AI Search が SharePoint 用のデータソース、スキルセット、インデックス、インデクサーを自動生成します。

Knowledge Source としてまとめずに構成する場合も、基本となる設定の流れは同じです。詳しくはSharePoint インデクサーの構成手順を参照してください。

本記事は 2026/10/06 時点の情報で作成しています。

前提条件

  • Azure AI Search サービス
  • SharePoint Online と、取り込み対象のドキュメントライブラリ
  • 対象サイトに対して権限を設定できる SharePoint 管理者
  • Microsoft Entra アプリ登録と API 権限に管理者の同意を付与できる管理者
  • Knowledge Source 作成用の Azure AI Search 権限
    • 推奨: Search Service Contributor と Search Index Data Contributor
  • ベクトル化を行う場合: Foundry Model の埋め込みモデルなどのデプロイ

手順1: SharePoint の権限方式を選ぶ

取り込みに使う Entra アプリには、SharePoint のコンテンツを読むための アプリケーション権限を設定します。

この記事では、Sites.Read.All と Sites.Selected の両方を紹介しますが、アクセス範囲が異なるため、実際の構成では要件に応じてどちらかの方式を選択してください。

権限 アクセス範囲 設定後に必要な作業
Sites.Read.All アプリがテナント内の SharePoint サイトを広く読み取る Entra アプリに管理者の同意を付与する
Sites.Selected アプリがアクセスできるサイトを個別に限定する Entra アプリへの管理者の同意に加え、対象サイトごとにアプリへ権限を付与する

標準的なドキュメントライブラリの取り込みでは、Microsoft Graph のアプリケーション権限として Files.Read.All と Sites.Read.All を設定する方法がSharePoint インデクサーのドキュメントに記載されています。Sites.Selected を選ぶ場合は、権限を付けるだけではアクセスできず、対象サイトごとの許可が必要です。詳細はSelected アクセス許可の概要を参照してください。

手順2: Azure AI Search のマネージド ID を有効にする

  1. Azure portal で Azure AI Search サービスを開きます。
  2. [設定] > [ID] を開きます。
  3. [システム割り当て] の状態を オン にして保存します。
  4. 表示されたオブジェクト (プリンシパル) ID を確認します。

この ID は、後ほど Entra アプリのフェデレーション資格情報を作成するときに、信頼するマネージド ID を選択するために使います。

image.png

手順3: 取り込み用 Microsoft Entra アプリを登録して権限を設定する

  1. Azure portal で [Microsoft Entra ID] > [アプリの登録] > [+ 新規登録] を選択します。

  2. アプリケーション名を入力し、対象テナントでアプリを登録します。
    image.png

  3. アプリの [API のアクセス許可] を開き、[アクセス許可の追加] > [Microsoft Graph] > [アプリケーションの許可] を選択します。
    image.png
    image.png

  4. 権限方式に応じて、次の API アクセス許可を追加します。

    • Sites.Read.All を使う場合: Sites.Read.All、Files.Read.All、User.Read
    • Sites.Selected を使う場合: Sites.Selected、Files.Read.All、User.Read
      追加の例 Files.Read.All:
      image.png
  5. [管理者の同意を与えます] を選択します。
    image.png

Sites.Read.Allの場合の同意状態
image.png

Sites.Selectedの場合の同意状態
image.png

Sites.Selected を選んだ場合: 対象サイトへのアクセスを許可する(Sites.Read.All方式の場合は不要)

Entra ID で Sites.Selected の管理者同意を行っても、サイトへのアクセスは許可されません。インデックス対象にする 各 SharePoint サイトに、アプリのアクセス許可を個別に設定します。コンテンツを取り込む目的であれば、少なくとも read を付与します。

ここでは、Microsoft が提供する Graph Explorer を基本手順として紹介します。Graph Explorer は、サインインしたユーザーが自身の権限を委任して Microsoft Graph API を実行するアプリです。組織のポリシー上、Graph Explorer に必要な委任アクセス許可を与え、ユーザーの権限で管理操作を実行することを許容できない場合は、後述の 組織で管理する専用アプリを使う PnP PowerShell の手順を利用してください。

基本手順: Graph Explorer で REST API を実行する

Graph Explorer を使う場合も、API を実行する Graph Explorer 自体への委任アクセス許可と管理者同意が必要です。これは、取り込み用アプリへの Sites.Selected の管理者同意とは別です。

1. サインインし、Graph Explorer のアクセス許可に管理者同意を与える

  1. Microsoft Graph Explorer を開き、対象テナントの管理者アカウントでサインインします。
    image.png

    サインイン時のユーザー情報読み取りの同意がポップアップ表示されたら同意します。
    image.png

  2. プロフィールメニューの [Consent to permissions] から Sites.FullControl.All を探してクリック > 同意します。
    image.png
    image.png

  3. 管理者同意の画面で、要求されているアクセス許可と対象組織を確認し、[組織の代理として同意する] を選択して承諾します。この操作には、テナント全体の管理者同意を付与できる管理者が必要です。

サインインしただけで Sites.FullControl.All が付与されるわけではありません。同意画面が出るタイミングや表示は、既存の同意状態・組織のポリシーによって異なります。必要なアクセス許可が既に管理者同意済みであれば、同意画面は再表示されない場合があります。組織で Graph Explorer への同意が認められていない場合は、承認済みの管理用アプリを使う PowerShell 手順を利用してください。

image.png

2. 対象サイトの siteId を取得する

対象サイトの URL が https://contoso.sharepoint.com/sites/Marketing の場合、次の GET リクエストを Graph Explorer で実行します。

GET https://graph.microsoft.com/v1.0/sites/contoso.sharepoint.com:/sites/Marketing?$select=id,webUrl

私の検証環境 https://<--->.sharepoint.com/sites/AUSearch での例
image.png

レスポンスの id が、次の POST /sites/{siteId}/permissions に指定する siteId です。値は次のように、ホスト名・サイトコレクション ID・サイト ID をカンマで連結した形式になります。この連結された値をそのまま次の手順で使用します

{
  "id": "contoso.sharepoint.com,<site-collection-id>,<site-id>",
  "webUrl": "https://contoso.sharepoint.com/sites/Marketing"
}

Microsoft Graph Explorer でのサイト取得には、サインインしたユーザーが対象サイトを参照できることと、Graph Explorer 側で必要な Microsoft Graph のアクセス許可が必要です。権限の詳細はMicrosoft Graph の「Get a SharePoint site」を参照してください。

Graph Explorer の API 実行は、サインインしたユーザーの委任アクセス許可で実行されます。

3. REST API で取り込み用アプリに read を付与する

取得した id 全体で URL内の {siteId} を置き換え、次の POST リクエストを Graph Explorer で実行します。本文の application.id には 取り込み用アプリのクライアント ID を指定します。Graph Explorer はサインインしたユーザーのアクセストークンをリクエストに付けて実行します。

POST https://graph.microsoft.com/v1.0/sites/{siteId}/permissions
Content-Type: application/json

{
  "roles": ["read"],
  "grantedToIdentities": [
    {
      "application": {
        "id": "<取り込み用アプリのクライアントID>",
        "displayName": "<取り込み用アプリの表示名>"
      }
    }
  ]
}

取り込み用アプリのクライアントIDや表示名はアプリ作成時の概要画面にて取得します

image.png

201 Created が返り、レスポンスに対象アプリと roles: ["read"] が含まれることを確認します。

image.png

代替手順: 管理用アプリを使う PnP PowerShell で権限を付与する

Graph Explorer への委任を組織で許容できない場合は、 PowerShell による管理用アプリを別途作成して PowerShell でのログイン時に使用します。

詳細を展開

この手順も対話型ログインによる 委任認証で、サインインした管理者の権限を使います。違いは、委任先を Microsoft 提供の Graph Explorer ではなく、手動で作成したアプリにすることです。

1. PnP PowerShell をインストールする

PowerShell 7.4 以降で次のコマンドを実行します。Windows PowerShell 5.1 ではなく、PowerShell 7 を使ってください。

powershell
Install-Module PnP.PowerShell -Scope CurrentUser

詳細はPnP PowerShell のインストール手順を参照してください。

2. PowerShell 管理用の Entra アプリを準備する

Azure AI Search の取り込み用アプリとは別に、管理者の対話型ログインに使うアプリを登録します。組織で承認済みの PnP 管理用アプリがある場合は、それを利用できます。

アプリ 用途 このサイト権限付与に関係する Microsoft Graph 権限
取り込み用アプリ Azure AI Search が対象サイトを読み取る アプリケーション権限 Sites.Selected
PowerShell 管理用アプリ 管理者が取り込み用アプリへサイト権限を付与する 委任アクセス許可 Sites.FullControl.All

管理用アプリには、次の設定を行います。

  1. [Microsoft Entra ID] > [アプリの登録] > [+ 新規登録] から管理用アプリを登録します。
  2. アプリケーション (クライアント) ID を控えます。
  3. [認証] > [プラットフォームの追加] > [モバイル アプリケーションとデスクトップ アプリケーション] で、リダイレクト URI に http://localhost を登録します。
  4. [API のアクセス許可] > [アクセス許可の追加] > [Microsoft Graph] > [委任されたアクセス許可] から Sites.FullControl.All を追加します。
  5. 管理者同意を付与できる管理者が、[管理者の同意を与えます] を選択します。

詳細はPnP PowerShell 用のアプリ登録手順を参照してください。

3. 管理者として接続し、取り込み用アプリに Read を付与する

次の値を環境に合わせて置き換え、PowerShell で実行します。ブラウザーが開いたら、SharePoint Administrator 以上のロールを持つアカウントでサインインします。

powershell
$siteUrl = "https://contoso.sharepoint.com/sites/Marketing"
$managementAppId = "<PowerShell 管理用アプリのクライアントID>"
$ingestionAppId = "<取り込み用アプリのクライアントID>"

Connect-PnPOnline `
  -Url $siteUrl `
  -ClientId $managementAppId `
  -Interactive

$permission = Grant-PnPEntraIDAppSitePermission `
  -AppId $ingestionAppId `
  -DisplayName "<取り込み用アプリの表示名>" `
  -Permissions Read `
  -Site $siteUrl

$permission

Connect-PnPOnline の -ClientId は 管理用アプリ、Grant-PnPEntraIDAppSitePermission の -AppId は 取り込み用アプリの ID です。Azure AI Search のマネージド ID とも取り違えないでください。

4. 付与した権限を確認する

Get-PnPEntraIDAppSitePermission `
  -Site $siteUrl `
  -PermissionId $permission.Id

Disconnect-PnPOnline

取得した権限の Roles が read であることを確認します。PermissionId を指定しない取得では Roles が表示されない制約があるため、付与時に返された ID を指定します。対象サイトが複数ある場合は、サイトごとに接続・付与・確認を行います。

詳細はGrant-PnPEntraIDAppSitePermissionとGet-PnPEntraIDAppSitePermissionを参照してください。

手順4: Entra アプリにフェデレーション資格情報を追加する

  1. Entra アプリ登録の [証明書とシークレット] > [フェデレーション資格情報] を開きます。

  2. [資格情報の追加] を選択します。
    image.png

  3. シナリオとして [マネージド ID] を選択します。
    image.png

  4. 手順2で有効にした Azure AI Search のマネージド ID を選び、名前をつけて資格情報を保存します。
    image.png
    image.png

これにより、Entra アプリは Azure AI Search のマネージド ID を信頼し、シークレットレスでの認証が実現できます。

image.png

手順5: Azure portal のウィザードで Knowledge Source を作成する

ここからは Azure portal の Knowledge Source 作成ウィザードを使います。

1. Knowledge Source の作成画面を開く

  1. Azure portal で対象の Azure AI Search サービスを開きます。

  2. [Agentic retrieval] > [Knowledge sources] > [Knowledge source の追加] を開きます。
    image.png

  3. SharePoint のインデックス取り込み用ソースを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281819/99c78c70-b841-4338-9a37-f306d3ad90d0.png)

2. SharePoint の接続情報を設定する

  1. Knowledge Source の名前を入力したら、マネージドID認証を有効化します
    image.png

  2. 手順3・4で準備した取り込み用アプリとフェデレーション認証を使って、対象の SharePoint サイトへ接続する設定を行います。

設定する情報 値
SharePoint サイト URL 取り込み対象のサイト URL
アプリケーション ID SharePoint 権限を設定した 取り込み用アプリのクライアント ID
テナント ID SharePoint サイトを所有する Entra テナントの ID
フェデレーション認証で使用する ID Azure AI Search のマネージド IDのオブジェクトID

アプリケーションIDとテナントIDの確認はアプリの概要から

image.png

フェデレーション認証で使用する IDはアプリの証明書とシークレット画面から

image.png

ドキュメントライブラリや取り込み範囲を指定する項目では、対象ライブラリを確認します。既定のドキュメントライブラリを取り込む設定は、既定のサイトライブラリ(API 上では defaultSiteLibrary) に対応します。

image.png

取り込み範囲を query で指定する場合は、コンテナー名を useQuery にします。以下はクエリ欄に入力する例です。URL は実際のサイト・ライブラリに置き換えてください。

特定のドキュメントライブラリだけを取り込む

includeLibrary=https://contoso.sharepoint.com/sites/AISearch/Shared%20Documents

サイト内の全ライブラリから、指定のライブラリを除外する

includeLibrariesInSite=https://contoso.sharepoint.com/sites/AISearch;excludeLibrary=https://contoso.sharepoint.com/sites/AISearch/Archive

複数の指定は ; で区切ります。query は取り込み対象の指定であり、アプリのアクセス権を広げるものではありません。詳細はSharePoint インデクサーの「インデックスを作成するドキュメントを制御する」を参照してください。

接続文字列を入力する画面の場合は、次の形式を使います。

SharePointOnlineEndpoint=https://<tenant>.sharepoint.com/sites/<site-name>;ApplicationId=<取り込み用アプリのクライアントID>;TenantId=<SharePointのテナントID>;FederatedCredentialApplicationId=<SearchのマネージドIDのクライアントID>

接続文字列方式では、ApplicationId は取り込み用アプリのクライアント ID、FederatedCredentialApplicationId は Azure AI Search のマネージド ID のクライアント ID です。Graph Explorer や PowerShell 管理用アプリの ID、マネージド ID のオブジェクト ID ではありません。クライアント ID はオブジェクトIDをEntra ID上で検索することで取得できます
image.png

3. ベクトル化などの取り込み設定を確認する

テキストのベクトル化を使う場合は、ウィザードのベクトル化設定で、準備した埋め込みモデルのリソースとデプロイを指定します。モデルへの認証には Azure AI Search のマネージド ID を使用します。

Azure AI Search のマネージド ID には、埋め込みモデルのリソースに対する Cognitive Services User or Foundry User ロールも必要です。この権限を AI Search が使用して、Foundry 上のモデルやAPIを利用します

画像の処理、同期スケジュール、アクセス許可メタデータの取り込みなどの項目が表示される場合は、用途に合わせて確認します。検索時に SharePoint の権限を反映したい場合は、後述の ACL に関する補足も確認してください。

image.png

4. 設定を確認して作成する

サイト URL、認証情報、取り込み範囲、モデルの設定を確認し、Knowledge Source を作成します。作成後、Knowledge sources 一覧に表示されることを確認します。

Knowledge Source の作成に伴い、SharePoint 用のデータソース、スキルセット、インデックス、インデクサーも生成されます。

image.png

手順6: 取り込み状態を確認する

  1. Azure portal の Azure AI Search サービスで、生成された インデクサーを開きます。
  2. 実行履歴から取り込みの実行結果を確認し、エラーや失敗したドキュメントがないことを確認します。警告がある場合も、内容を確認してください。
  3. 生成された インデックスを開き、ドキュメント件数と、検索エクスプローラーで対象ドキュメントを検索できることを確認します。

image.png

image.png

まとめ

Azure portal のウィザードで Indexed SharePoint Knowledge Source を作成し、フェデレーション認証でシークレットを使わずに SharePoint のドキュメントを取り込みました。

取り込み用アプリのアプリケーション構成については管理者の協力が必要な点にご注意のうえ本記事を活用いただければと思います。

参考資料

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?