SharePoint連携の仕様ついて
Microsoft Entra IDと連携すると、次のようなことができるようになります。

ENSOUAIとMicrosoft Entra IDをつなぐ目的
Microsoft Entra IDと連携すると、次のようなことができるようになります。
①組織のMicrosoftアカウントでENSOUにログインできるようになる
ユーザーは新たにIDやパスワードを覚える必要がなく、すでに使っているMicrosoftアカウントでそのままログインできます。
②SharePoint上のドキュメントをENSOUのAIが参照できるようになる
ユーザーが普段利用しているチームサイトの資料を検索・要約・Q&Aに活用できるようになります。
接続の流れ
実際の操作は、管理者が行う部分と、各ユーザーが行う部分に分かれます。
最初に、組織の管理者(Entra IDのグローバル管理者またはSharePoint管理者)が、ENSOUに対して「この組織のSharePointを読み取ることを許可する」という承認を一度だけ行います。これは、Entra IDの管理画面から「管理者の同意(アクセス許可の付与)」を実行する形になります。
その後は、各ユーザーが自分のMicrosoftアカウントでENSOUにサインインし、自分のSharePointへのアクセスをENSOUに許可します。ユーザーごとに、自分の権限の範囲だけがENSOUから利用されます。
まとめると、最初に一度だけ管理者が組織として「ENSOUを使ってよい」と許可し、その後はユーザーが自分のアカウントをENSOUに紐づけて利用していくイメージです。
ENSOUがアクセスできる範囲
ENSOUはSharePointに対して「読み取り専用」でアクセスします。
ここでいう「読み取り専用」とは、次のようなイメージです。
ENSOUは、SharePoint上のファイルを「読むこと(内容を参照すること)」しかできません。ファイルを新しく作成したり、上書き保存したり、削除したり、フォルダ構造やアクセス権限を変更したりすることはできません。
また、アクセスできるのは「そのユーザーがもともと閲覧できるファイルだけ」です。
ユーザーがSharePoint上で閲覧権限を持っていないチームサイトやファイルは、ENSOUからも一切参照できません。ENSOUが勝手に他の部署の機密資料などを見られるようになることはありません。
さらに、ENSOUはお客様のテナント内のSharePointにしかアクセスできず、他の会社のテナントや別の組織のSharePointに勝手にアクセスすることはありません。
ENSOUが要求するスコープ(権限)の考え方
スコープとは「このアプリにどこまでさせても良いか」をMicrosoft側に伝えるための項目です。
ENSOUは、次の目的でスコープを利用します。
まず、SSO(シングルサインオン)ログインのために、ユーザーの基本的な情報へのアクセスを求めます。これは、ユーザーを識別し、表示名やメールアドレスを確認するための最低限の情報です。
このとき利用する主なスコープは、以下の項目です
openid、profile、email、User.Readです。
SSOログイン用スコープ(委任権限)
| スコープ | 用途 | タイプ | Microsoftリファレンス |
|---|---|---|---|
| openid | OpenID Connect認証トークン取得 | SSO (委任) | scopes-oidc#openid |
| profile | ユーザーの氏名・表示名等の基本情報 | SSO (委任) | scopes-oidc#profile |
| ユーザーのメールアドレス | SSO (委任) | scopes-oidc#email | |
| User.Read | サインインユーザーのプロファイル読み取り | SSO (委任) | permissions-reference#userread |
これらは、Microsoftが一般的なログイン連携で利用する標準的なスコープであり、ユーザーの基本プロフィール情報を取得するために使われます。
次に、SharePointのドキュメントを読めるようにするために、以下のスコープを利用します。
| スコープ | 用途 | タイプ | Microsoftリファレンス |
|---|---|---|---|
| Sites.Read.All | SharePointサイトおよびリストの読み取り | SharePoint接続 (委任) | permissions-reference#sitesreadall |
| Files.Read.All | SharePoint上のファイル・ドキュメントの読み取り | SharePoint接続 (委任) | permissions-reference#filesreadall |
| offline_access | バックグラウンドでのトークン自動更新 | SharePoint接続 (委任) | scopes-oidc#offline_access |
名前に「All」とついていますが、ENSOUが取得できるのは「そのユーザーに元々閲覧権限がある範囲」に限られます。ユーザーがSharePoint上で見られない情報を、ENSOUだけが特別に見られるようになることはありません。
また、offline_access というスコープも利用します。これは、ユーザーが毎回ログイン操作をしなくても、一定期間ENSOUがユーザーに代わってSharePointにアクセスできるようにするためのものです。たとえば、夜間にインデックス更新などを行う際に、毎回ユーザーにパスワード入力をお願いしなくてもよいようにするために使われます。
管理者の同意(Admin Consent)を行う際には、以下のスコープを利用します。
| スコープ | 用途 | タイプ | Microsoftリファレンス |
|---|---|---|---|
| https://graph.microsoft.com/.default | 登録済み全アプリケーション権限での管理者一括同意 | 管理者同意 (アプリケーション) | v2-oauth2-auth-code-flow |
これは、組織として「このアプリに、設定されている読み取り専用権限を使うことを許可する」という意味です。
管理者と一般ユーザーの役割分担
Entra ID側の「グローバル管理者」または「SharePoint管理者」は、組織としての初回セットアップを担当します。ENSOU側の「組織管理者」役と連携し、管理画面から管理者同意のフローを実行します。
一方、日常的な利用は「一般ユーザー」が行います。
一般ユーザーは、自分のMicrosoftアカウントでENSOUにログインし、自分のSharePointへのアクセスをENSOUに許可します。そのうえで、AIチャットなどの機能からSharePointのドキュメントを参照できるようになります。
「管理者の仕事」は、最初に一度だけ行う設定が中心です。
それ以降は、ユーザーが通常通りSharePointを使うのと同じ感覚でENSOUを利用できるようになります。
安全性に関する考え方
ENSOUは、SharePointへのアクセスを「読み取り専用」に絞り込み、必要最低限のスコープだけを利用することで、権限の持ちすぎを避けるように設計されています。
また、アクセスに利用するトークン(ログイン情報のようなもの)は、適切に保護された形で保存され、ログなどに出力されないように設計されています。これにより、第三者がトークンを不正に取得してSharePointにアクセスするリスクを抑えています。
さらに、利用できるのは、組織内のSharePointチームサイトのファイルだけになるように制限しています。個人用のOneDriveエリア(*-my.sharepoint.com)などは標準では対象外とし、業務のチームサイトの情報を中心に扱う前提になっています。
ロールと権限の対応
Entra ID (Azure AD) のロール
| Entraロール | ENSOUでの役割 | 必要な操作 |
|---|---|---|
| グローバル管理者 / SharePoint管理者 | 組織でのSharePoint接続初期セットアップ担当 | 管理者同意 (Admin Consent) の実行 |
| 一般ユーザー | 日常的なSharePoint接続ユーザー | 個別のOAuth委任認証 |
ENSOUのロール
| ENSOUロール | 説明 | 実行できる操作 |
|---|---|---|
| 組織管理者 (admin) | 組織全体の設定管理者 | SharePoint接続設定・管理者同意フロー実行・SSO設定 |
| 一般ユーザー (general) | 通常の利用者 | 自分のEntra IDアカウントによる個別SharePoint認証 |
ロール対応表
| 操作 | 必要なENSOUロール | 必要なEntraロール |
|---|---|---|
| SharePoint接続の初回設定(管理者同意) | 組織管理者 (admin) | グローバル管理者 / SharePoint管理者 |
| 個別SharePoint接続(委任OAuth) | 一般ユーザー以上 | 一般ユーザー |
| SSOログイン設定 | 組織管理者 (admin) | グローバル管理者 |
| SSOでのログイン | 全ユーザー | 一般ユーザー |
| AIチャットでSharePointドキュメント参照 | 全ユーザー(個別接続済み) | 一般ユーザー |