memomoji | nanamoji

Microsoft365周辺、Power Appsの勉強、備忘録

SharePoint Listsをデータソースにするときのアクセス権設定のメモ

Power AppsをM365ライセンスの範囲内で利用しようとする場合、SharePoint Listsをデータソースにすることが多いと思います。

ここで、他の人の登録したデータは見せたくないということはしばしばあると思います。調べてみていくつかのやり方や考え方がありましたので、うっかり怪我をしないよう、メモとしてまとめておきます。

内容としては人様の書かれたブログを紹介しているだけ、人の褌を使わせていただいているだけです。詳細な設定方法は各ブログをご覧ください。

1.リストの詳細設定でユーザー本人の作成したアイテムのみ許可する方法

shanqiai.lekumo.biz

おそらくこの方法が王道だと思います。

リストの設定

  1. このリストに対する権限 → 投稿
  2. 詳細設定 → 読み取りアクセス権、作成/編集のアクセス権を、ユーザー本人の作成したアイテム(orなし)にする。

詳細設定

ユーザーはListsにアクセスしても、自分が登録したデータしか表示することができません。
全件を見る必要があるユーザーにはフルコントロール または デザイン権限を付与します。

この方法のメリットは、設定が簡単であることと、ユーザーがListsに直接アクセスしても困らないところです。
Listsのコメントで登録ユーザーにメンションすれば、メールで通知が届いてLists上でコメントのやり取りをすることができます。 (登録ユーザー以外にメンションすると通知メールは届きますが、アクセスしようとするとエラーになります。) また、ユーザー自身がこのListsをデータソースとした別のPower Appsアプリを作成した場合でも、自分の登録したデータしか表示できません。

デメリットとしては、"登録した本人"に限定されます。登録したのはAさんだけど結果はBさんもほしいとか、承認者ではないが部門メンバーのデータを閲覧したいといった要望については、別の手段を検討する必要があります。

2.すべてのアイテムを表示するビューを非表示にして疑似的なアクセス権を与える方法

artisan.jp.net

この方法はあくまで"疑似的なアクセス権"であって、ルールや運用をしっかりしないと誰でも全件触れる状態になってしまいますのでご注意ください。
ただ、リスクを分かった上でこういう方法もあると知っておくことで、運用上の応用が利くのではないかと思います。

リストの設定

  1. 登録者が自分のものだけを表示するビューを作成し、既定のビューにする。(登録者 = [Me]でフィルタ)
  2. デフォルトで存在する"すべてのアイテム"ビューのアドレスを変更する。(デフォルトのAllItemsを推測されないものに変更する)
  3. "すべてのアイテム"ビューを非表示にする。(PnP PowerShell利用)
  4. ユーザーが個人用ビューを作成できないよう、投稿権限から"個人用ビューの管理"を外した権限を作成し、ユーザーに割り当てる。
  5. Lists自体を非表示にする。(必要であれば)

このメリットとしては、1のフィルタする条件を登録者ではなく「閲覧者」など複数のユーザーやグループを登録できる列を作っておけば、任意のユーザーがアイテムにアクセスできるようにすることが出来ます。
また、ビューを制限しているので、見せたくない列を非表示にしておくこともできます。
リストの権限は特に制限していないので、コメントのメンションも利用できます。

デメリットとしては、"すべてのアイテム"のURLが共有されてしまうとアクセス権がガバガバになります。URLを共有するリスクを知っている人だけが使えるようなルールの徹底が必要です。
また、自分の登録したものしか見えないビューで運用していてもListsのURL自体がわかるので、ユーザーが独自のPower Appsアプリを作ってデータソースにすることで全件閲覧可能になります。

上記の点からこの設定を使う場合は元のサイトに記載のあるようにPower Appsのライセンスがない場合(Power BI、Power Automate等も)や、各ユーザーが使わない前提か、コメントのメンションなどLists自体の機能は使わずListsの存在を隠しておくか、または、全件共有してもらって構わない内容を扱うデータで利用するかになるでしょう。見せるけど編集はさせたくないという場合は、1の方法と併用する必要があると思います。

3.Power Automateを仲介させてユーザーに直接アクセス権を与えない方法

mofumofupower.hatenablog.com

こちらは参考情報として。
データソースがExcelの場合には1の方法が取れないので、ユーザーにはアクセス権を与えず管理者の権限で読み書きするようPower Automateを利用する方法です。


情報を公開してくださる先人の皆様には常々感謝しております。
勝手に引用しておりますので、苦情や誤解を招く表現がありましたらご連絡いただけると幸いです。
同じように悩んでいる方がいるのではないかと思い、僭越ながらまとめさせていただきました。自分で試すのが一番ですがそれなりに時間もかかりますし、たまたま見つけた方法で運用してしまって後から想定と違うというのも困ると思いますので。多少なりともお役に立てましたら幸いです。