1
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?

EntraグループにSharePoint リストのアイテムへのアクセス権限をPower Automateで付与する

Last updated at Posted at 2024-12-17

はじめに

 SharePoint リストでは、アイテムごとにアクセス権限を設定することができます。アクセス権限の付与先にEntraグループを指定することができます。業務で、Entraグループへの付与を自動化することに取り組んでいます。本記事では、Power Automateで実現した方法を記載します。

SharePoint リスト

 SharePoint リストはExcelのようにデータをテーブルで持ちます。Excelとの違いはMicrosoft製品との相性が良く、Power Automateによる自動化やMicrosoft Listsによるフォーム、Power AppsでGUI画面を容易作成することができます。
 今回、注目しているのはSharePointで作ったリストのアイテム(1行のデータ)にMicrosoft Entra グループでアクセス権限を設定することができるという点です。手動で設定するには以下の手順を踏みます。

  1. 設定したいアイテムを右クリック→「アクセス許可の管理」を選択
    sharepoint_item_access.png
  2. 検索ボックスにEntra グループの名称を入力し、該当グループを選択→「送信」を選択することでアクセス権が付与されます。
    sharepoint_item_access_select_entra_group.png

上記の作業を今回はSharePoint リストと相性が良いPower Automateで自動化していきます。

SharePoint上でのEntraグループの扱いについて

 手動でEntraグループにアクセス権限を与えると、SharePointのユーザーやグループを管理する画面にEntraグループが作成されます。確認方法は以下の手順です。

  1. 右上の「設定」→「サイトのアクセス許可」を選択し、「高度なアクセス許可を設定」を選択
    sharepoint_show_users.png
  2. ユーザー/グループ一覧に該当のEntraグループを確認することができます。
    sharepoint_user_test_entra_group.png
     この作成されたEntraグループは、SharePoint上ではドメイングループという種類で管理されるようです。
  3. Entraグループの名称を選択することで、以下の詳細な情報を確認できます。
    sharepoint_user_info.png
     詳細な情報を確認すると、「ユーザー情報」という表記があることからSharePoint上で作成されたEntraグループはSharePoint ユーザー扱いであることがわかります。「アカウント」という箇所は秘密情報なので隠していますが、テナント情報やEntraグループのオブジェクトIDを組み合わせた文字列です。

手動でのアクセス権限付与の裏側では、自動でEntraグループの参照情報を持つSharePointユーザーを作成していることがわかりました。では、Power Automateで実現していきます。

Power Automate

Power Automateはビジネス業務の自動化をローコードで書くことができるサービスです。SharePointを操作するAPIが用意されているのでPower Automateを使って実現していきます。

全体図

完成した全体図は以下のようになります。

powerautomate_all.png

使用したトリガー/アクションを以下に記します。

 Microsoft SharePoint コネクタの中を探しましたが、HTTPリクエストを使用する方法しかやりたいことは実現できなかったです。

詳細な説明

Microsoft Entra GroupからSharePoint Userを作成する

powerautomate_create_user.png

 Sharepoint上でのentraグループの扱いについてより、Entraグループに相当するSharePointユーザーを作成する箇所です。BodyのLoginNameに前述したテナント情報やEntraグループのオブジェクトIDを組み合わせた文字列を入れます。_api/web/siteusersのAPIドキュメントはこちらです。今回は、SharePointリストのアイテムの列にAccessGroupというユーザー/グループの種類を入力して作成し、トリガーからその値を取得してきています。

リストアイテムの権限継承を解除する

powerautomate_breakroleinheritance.png

 アイテムにはSharePointサイトのアクセス権限が継承されています。新しいアクセス権限を付与するには、まず継承を解除する必要があります。breakroleinheritanceというAPIを実行することで可能です。APIドキュメントはこちらです。

リストアイテムの権限にEntraグループを追加する

powerautomate_addroleassignment.png

 roleassignments/addroleassignmentのAPIを実行することで、Entraグループにアイテムへのアクセス権限を付与することができます。principalidにはEntraグループを元に作成したSharePointユーザーのIdを指定してください。ここではユーザー作成したHTTPリクエストのレスポンスをJSON解析した情報からIdを取得して指定しています。roledefidには読み取り/書き込み権限の指定をします。書き込み権限であれば1073741830を指定します。こちらのドキュメントを参考に作成しました

課題

  • Power Automateの実行開始が遅い
    • 体感として、アイテム作成してから4,5分掛かる
  • Power Automateの運用について
    • IaC化が対応していないので、運用時で苦労することが目に見えている
      • (エンジニア目線の考えなのかもしれない)
    • 各アクションごとにCode viewという機能がありJSON形式でコードを確認することができる。最悪のケースで、Github等で1アクションごとにコード管理する

まとめ

 本記事では、Entraグループにアイテムへのアクセス権限付与をPower Automateで実現しました。一番の苦悩は、SharePointが裏でEntraグループの情報を元にSharePoint ユーザーを自動で作成していたということを気づくのに時間が掛かったことです。

1
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
1
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?