Power Apps で作成したアプリ以外から SharePoint リストにアクセスさせたくない？


# はじめに

Power Apps でアプリを作成する際、アプリのデータソースとして SharePoint リストを利用する場合があります。

この際、例えば、何かの申請をするアプリにおいて、アプリを介して作成した申請データを他のユーザーに閲覧させたくない、他のユーザーが作成したデータの変更、削除がされるのを防ぎたいなどの理由により、作成したアプリ以外からは SharePoint リストにアクセスさせたくないという要望をいただくことがあります。
※アプリでは、上記のようなことができないように実装しておく

今回は、この観点でのアプローチについて整理してみました。


# SharePoint リストのアクセス権の設定

今回は以下のようなサイト、リストを使って説明していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/55d011ec-15f0-dc19-8990-19cdbaeb60f1.png)

まず、SharePoint リストのアクセス権制御方法についてです。既定のリストのアクセス許可は、所属するサイトのアクセス許可を継承します。例えば、以下のような感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6f9b6053-f726-7977-6f41-f5ef6c0aca86.png)

Power Apps で作成したアプリのデータソースとして SharePoint リストを使う、かつ、データの登録を行うアプリの場合、編集権限を与えるのが一般的かと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/ddb645d1-0b16-7ac7-374a-80724ebcda6c.png)

仮に、SharePoint サイトの権限とリストの権限を分けたい場合は、以下の箇所から変更することも可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b8900651-6064-6ffe-4c1f-f1d91fa8b1fd.png)

:::note warn
以下の点に注意する必要があります。
:::

https://social.msdn.microsoft.com/Forums/ja-JP/95495ffd-cf3f-41cd-9e1f-b474157f523a/sharepoint-online

いずれにせよ、編集の権限をつけた際は、既定では、新規のアイテムの登録ができ、また、**他人が作成したレコードに対しても編集や削除ができてしまいます。**

こちらを防ぐ方法としては、**そもそも自分が作成したアイテムに対してしか権限を付与しないことです。**

こちらについては、以下の箇所から設定変更できます。
既定では、"すべてのアイテム" となっているため、以下のように変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c86193d5-54e5-fb6a-f31b-b2e99a8430bc.png)

こちらの設定をすると、リストにアクセスしても、自分が作成していないアイテムは表示されないことになります。
※サイトの管理者には表示されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0129a282-5f57-55c2-f01b-1cc219e9b569.png)

:::note warn
例えば、自分の部署の人が作成したアイテムは表示できるが、他部署の人が作成したアイテムは表示できないといった、きめ細やかなアクセス制御はできません。Dataverse の場合は可能です。
:::

# アクセス権はあるが、Power Apps で作成したアプリ以外からはアクセスさせたくない

何らかの理由で、このようなことを実現したい場合のアプローチについてです。

まず、**SharePoint は情報共有基盤です。そのため、アクセス権がある場合、情報を見つけやすく、アクセスしやすくなるよう、様々な導線が引かれています。**

そのため、これから紹介する方法を講じたとしても、**Power Apps 以外から SharePoint リストにアクセスさせないようにすることは保証できません。また、今後のサービスのアップデートにより動作が変わる可能性もございます。**

上記前提ではありますが、そもそも、SharePoint リストにアクセスする方法や、それをできるだけ塞ぐ方法について整理してみました。

## SharePoint リストにアクセスする方法

正直色々あります。
まず、ブラウザから直接 SharePoint のアプリを選択する方法です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/1ca8fc8a-758c-37e4-f38f-367472a0a8f0.png)
こちらを選択すると、よくアクセスするサイト、フォローしているサイトなどが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/41e49840-673b-77a2-1e1e-e3882cc6b188.png)

また、Microsoft 365 のトップページに最近利用したリストが表示されたり、アクセス権があれば、サイト、リスト、リストのアイテムなど、様々な検索結果にも表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4e825829-7df0-7f37-76ec-3ceb3f638c6d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/187b5e48-4862-3a01-8d6e-4fe2dbd9cfeb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/484115ab-abb8-f34c-9e63-2e6f88a8c562.png)

また、Microsoft Lists アプリからもアクセス可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/91ec00b4-b067-3e1f-3ac4-fb74fa3b7708.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8a615185-135a-fac0-ab84-a2c03c2de03c.png)

そのため、一度でもアクセスされると、そこからアクセスを塞ぐのはかなり難しいため、そのような要件がある場合は、以下のようなアプローチが良いかと思います。

**ただし、この場合も、サイトやリストの URL を知っていればアクセスできますし、あくまで、ベストエフォートでアクセスしにくくするという位置づけで捉えていただけたらと思います。**

* アプリ作成、テスト時点では、サイトやリスト作成した際、最低限の人にアクセス権を付与する
* 後述するサイトやリストの設定を行っておく
* アプリの利用範囲を拡大する際、サイトやリストのアクセス権を追加する

## 検索結果に表示させない

サイト、リスト、リストのアイテム等が検索結果に表示させないようにする方法は以下の通りです。それぞれ、既定の "はい" から "いいえ" に変更します。

<サイト側>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/04c36f01-d87c-c946-aab8-cc2ecc3abb9e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/3f0821fc-8222-d9e2-08cb-6bc715435875.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/809e1ff9-d74d-78af-a516-7e9dd5489202.png)


<リスト側>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/53bb40c4-3528-d7a1-be77-9e5c3131f024.png)

上記設定を実施した結果、サイト、リスト、リストのアイテムなどが検索結果に表示されなくなりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/bca6e1c2-69b8-c8a3-9c22-a2a751a0454e.png)

:::note warn
設定変更後、反映されるまで多少タイムラグ (最大で 24 時間程度) がある場合があります。
:::

## サイトのフォローをさせないようにする

以下の設定より、リストが存在するサイトをフォローできなくすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6e10734d-8ce6-7baf-0202-cae5798e3486.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4b683a29-1af3-345b-b14c-e7323bd180f7.png)

設定をすると、フォローするための星印のアイコンが出てこなくなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/900fd8a7-f5c3-c89e-5f6a-449deda2a316.png)

:::note warn
既にフォローされているものを強制的に解除することはできません
:::