FessのMicrosoft 365プラグインの権限設定ドキュメントを追加

Fess Microsoft 365プラグイン(fess-ds-microsoft365)を使う際に、Azure App登録でどの権限を設定すればいいのかがわかりにくかったので、READMEに詳しくまとめました。fess-ds-microsoft365のPR #32 の話です。

背景

Microsoft 365プラグインでは、OneDrive、OneNote、Teams、SharePointなど複数のDataStoreをサポートしていますが、それぞれで必要なMicrosoft Graph APIの権限が異なります。今までは必要な権限がすべて列挙されているだけだったので、どのDataStoreを使う場合にどの権限が必要なのかがわかりにくい状態でした。

最小権限の原則に従って、必要な権限だけを設定できるようにドキュメントを整備しました。

DataStoreごとの必要権限

各DataStoreで必要な権限を表にまとめました。

DataStore必須権限条件付き権限
OneDriveDataStoreFiles.Read.AllUser.Read.All (1), Group.Read.All (2), Sites.Read.All (*3)
OneNoteDataStoreNotes.Read.AllUser.Read.All (1), Group.Read.All (2), Sites.Read.All (*4)
TeamsDataStoreTeam.ReadBasic.All, Group.Read.All, Channel.ReadBasic.All, ChannelMessage.Read.All, ChannelMember.Read.All, User.Read.AllChat.Read.All (5), Files.Read.All (6)
SharePointDocLibDataStoreFiles.Read.All, Sites.Read.All (*7)
SharePointListDataStoreSites.Read.All (*7)
SharePointPageDataStoreSites.Read.All (*7)

条件付き権限の説明:
– (1) user_drive_crawler=true または user_note_crawler=true の場合(デフォルト: true)
– (
2) group_drive_crawler=true または group_note_crawler=true の場合(デフォルト: true)
– (3) shared_documents_drive_crawler=true の場合(デフォルト: true)
– (
4) site_note_crawler=true の場合(デフォルト: true)
– (5) chat_id を指定している場合
– (
6) append_attachment=true の場合
– (*7) site_id を指定している場合は Sites.Selected で代替可能

Sites.Selected権限について

site_id を指定してSharePoint系のDataStoreを使う場合、Sites.Read.All の代わりに Sites.Selected を使うことで、より制限されたアクセスが可能です。

  1. Azure PortalでアプリにSites.Selected権限を付与
  2. Microsoft Graph PowerShellまたはAPIで特定サイトへのアクセスを許可
  3. 各対象サイトへのアクセスを明示的に許可

参考: https://learn.microsoft.com/en-us/graph/permissions-reference#sitesselected

最小権限の設定例

OneDriveのみ(ユーザードライブ)の場合:

Files.Read.All, User.Read.All

SharePointリスト(特定サイト)の場合:

Sites.Selected(サイトごとの設定が必要)

Teams(チャンネルのみ、チャットなし)の場合:

Team.ReadBasic.All, Group.Read.All, Channel.ReadBasic.All, ChannelMessage.Read.All, ChannelMember.Read.All, User.Read.All

まとめ

これで、使用するDataStoreに応じて必要最小限の権限だけを設定できるようになりました。Azureの管理者に権限申請する際も、「このDataStoreを使うからこれだけの権限が必要」と説明しやすくなったと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です