Udemy 新コース: 作って学ぶMicrosoft 365 Copilot Chat !

SharePoint リストでの権限制御と Dataverse セキュリティロールの比較 | Power Platform

SharePoint リストでは、その行の作成者が誰かによって権限の指定を行うことができます。一方、Dataverse では、 SharePoint リストよりも複雑なデータレベルのセキュリティを設けることができます。

その権限の範囲の指定、権限の深さの指定について違いがありますので本記事ではそちらを紹介します。

SharePoint リストと Dataverse の権限制御

SharePoint リスト

以下は、SharePoint リストでの詳細設定から、リストアイテムの読み取りアクセス権をユーザー本人が作成したアイテムか、全てのアイテムにするかを設定できる画面です。また、作成と編集についても同じ設定を行うことができます。

Dataverse

Dataverse では更に複雑な要件に対応できるようになっています。以下のように、読み取りできるのは自分が所属している部署配下の行、書き込み(編集)できるのはユーザーが所属している部署の行、削除はできない、というようにマトリックス形式で設定できます。

これを用いれば、部署を設定して、その部署の行のみを見ることができる、ただし、削除はさせないようにするなどの権限設定を行うことができます。

権限の範囲

権限の範囲がどのようなレベルで行うことができるのかを比較した表が以下です。

  • SharePoint リストでの権限の管理は、基本的には2段階で、すべてまたは自分が作成者の行です。
  • Dataverse には部署の概念があり、階層的に段階をカスタマイズすることができます。
  • Dataverse では所属する部署、所属する部署配下のレベルを設定することもできます。
  • Dataverse では、作成者の他に行の所有者の列があり、後からレコードの所有者を別のユーザーやチームに変更することができます。
権限制御の比較項目SharePointDataverse
すべての行
自身が作成者の行所有者は既定で作成者になる。
また、所有者を後から変更可能
自身が所有者の行所有者という概念がない
所有者が同じ部署の行所有者という概念がない
所有者が同じ部署配下の行所有者という概念がない

Dataverse での権限の範囲を実際の画面を見ながら掘り下げてみましょう。権限の範囲は部署 (チーム) に基づいて決定されます。

例えば、以下のように Dataverse に保存された注文データがあったとします。この所有者がもし、商品開発部の人が所有者として割り当てられていれば、その行は同じく商品開発部のものという判定になります。

権限の深さ

Power Platform 管理センターにてセキュリティロールを設定することができます。設定したいテーブルに対して、CRUD操作を以下の範囲で割り当てることができます。これが権限の深さに当たります。

例えば、読み取りを部署とすると、同じ部署の人だけが読み取りできます。

部署は以下とすると、その組織よりも下の部署があれば、その配下の組織のデータも読み取りできます。

ユーザーとすると、自分が所有者の行のみを読み取りできます。

組織とすると、すべての行を読み取りすることができます。

なしの場合は、読み取りすることができません。

これを作成、読み取り、書き込み、削除、アペンドする、アペンドする先、割り当てる、共有について設定ができます。

SharePoint のセキュリティ制御

SharePoint リストをデータソースとして使う場合、気をつけなければならないのが権限の二重管理です。 私のブログをご覧になっている方は Power Apps キャンバスアプリのデータソースとして SharePoint リストを検討されている方が多いでしょう。そのような場合、以下の概念図を頭においておく必要があります。

SharePoint リスト画面があるために権限の二重管理が発生し、直接リストにアクセスすると本来与えたくないデータの一括ダウンロード削除等の想定を超えた権限の処理を行わせてしまうリスクが有ります。

そのため、SharePoint リストをデータソースとして利用するアプリはビジネス上削除や一括ダウンロードされたとしても問題がないような重要でないデータ特性のシナリオに活用しましょう。

例: 社用車の管理、掲示板 (顧客管理、製品管理、稟議などには使わない)

このようなシナリオの例は、私の書籍で紹介しています。ご興味がありましたらご参考ください。

Microsoft Power Automate[実践]入門――クラウドフローによる業務自動化の手引きとリファレンス

SharePoint リスト、サイト自体

SharePoint リストのセキュリティは、Microsoft Entra ID セキュリティグループやSharePoint グループ等により、SharePoint サイトごと、またその配下のリスト毎の権限を設定することができます。

以下のようなパターンから選択したり、カスタマイズ権限を作成することができます。

メモ

SharePoint はセキュリティロールではなくグループを割当することで設定します。

SharePoint レコード単位

レコードのセキュリティとしては前述した通りレコードの作成者のみが見ることができるという制御を行うことができます。作成者のみのため、上司が見るという運用はできませんし、作成者を変更することはできません。

メモ

Dataverseの場合、作成者とは別に所有者という属性でレコードを管理しています。所有者を変更することでアクセス権を人に渡したりすることができるようになっています。

SharePoint リストの注意点

SharePoint 側デビューの制限ができない場合でも、Power Apps の画面上にて表示する項目を関数 (Power Fx) を利用して制限することができます。

しかしながら、SharePoint リストをPower Apps のデータソースとするときの注意点は、そもそもPower Apps 用のデータソースとしてSharePoint リストが開発されておらずSharePoint としての専用のビューが用意されています。

メモ

SharePoint リストのURLさえわかってしまえば、Power Apps のアクセス権がある方はSharePoint リストの専用ビューにもアクセスできるので、SharePoint から直接のデータ削除等を行えてしまいます。

Dataverse セキュリティ

Dataverse のテーブルへのアクセス権

テーブル及びその権限の深さを設定したセキュリティロールを作成することができます。そのセキュリティロールをユーザーまたは部署 (チーム) に設定することができます。

セキュリティロールと部署の運用方法

運用の観点では部署 (チーム) に設定することがとても便利です。詳細はこちらで紹介しておりますのでご参考ください。

セキュリティロールは複数割当することができます。

複数のセキュリティロールを割り当てたときの動作は以下のとおりです。

アクセス権判定としては「許可」される判定が優先される

複数のセキュリティロールを割り当てた場合、許可が強い判定が優先されます。

セキュリティロールの作成方法と割当方法は以下のとおりです。

Dataverse 階層セキュリティ

テーブル毎のセキュリティの他に、レコードごとのセキュリティを設定することができます。レコードには所有者という属性が必ず設定されており、どのユーザーまたはチームの持ち物なのかと言うのが管理されています。

所有者は必ずレコードに設定されています

所有者の変更は以下のように行うことができます。

ユーザーによって、上司の作成したレコードは表示はできるが編集ができない設定や、他の部署のレコードは表示のみで編集できないようにすることができます。

また、表示もさせないようにすることも設定することができます。

以下のレコードは例として階層セキュリティを設定して、部下は自分のレコードのみ表示できるが、上司のレコードは表示できないような設定をしています。

部下が見える画面
上司が見える画面

こちらの設定は、「ユーザーに対して所属する組織」を設定することで実現できます。

セキュリティを考え、部署を作成してユーザーに割り当てておきます。するとそのユーザーが作成したレコードは所属組織に自動で紐づくため、セキュリティが「セキュリティロールとの組み合わせ」で判定されます。

Dataverse for Teams のセキュリティ

Dataverse for Teams のセキュリティはDataverse とは完全に別で、Teams のチームと一致しています。

こちらでいう、「出荷管理」がチーム、その他「一般」等の階層はチャネル。

Dataverse for Teams ではチームに参加しているユーザーがDaataverse にアクセスできます。

まとめ

Dataverse は複雑なセキュリティ設定が可能で、最初設定は大変ですが休暇申請や人事評価等の個人情報を扱ったり、金額情報を扱うような重要な情報を扱うケースの利用に向いています。

必要なシナリオがでてきた場合、是非検討をしてみてください。

コメントを残す

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

Index