アーティサン株式会社
  • Dataverse
  • Power Apps
  • Power Platform

Dataverse入門(6)!テーブルへのアクセス権限を管理する-部署とセキュリティロールを使いこなそう

こんにちは。アーティサン株式会社の伊礼(いれい)です。

この記事を書いた人
伊礼圭吾

伊礼 圭吾いれい けいご

Power Platform全般 Power Apps Dataverse Copilot Studio

Power Platformの設計・開発・コンサルティングを担当しています。既存システムからの移行検証や、Power Platformの特性に合わせた再設計はお任せください!

PL-200 PL-400 PL-600

Dataverseテーブル作成講座、最終回となる第6回は、Dataverseにおける「セキュリティと権限」についての解説となります。

普段、ExcelやSharePointリストで管理していると、「このシートは見せたくない」「このアイテムはあの部署しか編集できないようにしたい」といった権限管理に苦労したことはないでしょうか?

対してDataverseは、企業向けの業務システム構築にも耐えられる、非常に細やかな権限管理が可能となっています。

今回はより実践的な組織構造を例にして、「顧客テーブルに対する営業部と経理部の権限設定」をハンズオンで体験してみましょう!

 

 


弊社はPower Platform(Power Apps・Power Automate)に関するアプリ開発や、
皆様が内製化を行う際の支援サービスを提供しておりますので、
Power Platformに関する内容でお悩みがある場合は、以下からぜひお問い合わせください。


 

ビジネスユニットとセキュリティロールの関係

実装に入る前の前提知識として、Power Platformにおける重要な2つの概念、「部署(ビジネスユニット)」と「セキュリティロール(役割)」の関係を理解しておきましょう。

今回は、以下の図のような組織図を想定します!

Dataverse_75

 

部署(ビジネスユニット)

Power Platformにおける「部署」とは、組織内での各部署の階層構造を表すものです。

例の図では、「経理部」と「営業部」という2つの部があり、「営業部」の配下としてさらに「法人営業課」や「自治体営業課」という課があります。

この場合「法人営業課」からみれば、「自治体営業課」は直接の上下関係はありませんが、同じ「営業部の配下」となります。
ですが、「経理部」に対しては「営業部」の外の部署ということになります。

Dataverse_76

このように、部署の上下関係や包含関係を明確にするために、Power Platformでは「部署(ビジネスユニット)」の設定を行います。

ここで覚えておいていただきたいのが、Power Platformではユーザーはもちろん、Dataverseテーブル内のレコード、そして後ほど解説するセキュリティロールも、必ずどこか「1つの部署」に所属します。

テーブル内のレコードもどこか1つの部署に所属する」というのが中々イメージしづらい部分かもしませんが、この後のセキュリティロールやハンズオンを見ていただけると実感いただけるかと思います!

 

セキュリティロール

セキュリティロールとは、「ユーザーに権限を与えることで、役割を定義する」設定にあたります。
セキュリティロールには必ず1つの部署が割り当てられ、環境内のDataverseテーブルのレコードに対して「何の操作をどのレベルまで許可する」という設定が行われています。

操作については以下の表の通り、読み取りや作成、削除といったものが該当します。

操作

内容

作成

テーブルに新しいレコードを作成できる

読み取り

テーブル内のレコードを読み取り、表示できる

書き込み

既存のレコードの内容を変更することができる

削除

既存のレコードを削除することができる

アペンド

リレーションが作成されているテーブルのレコードに対して、子として紐づけを許可することができる

アペンド先

リレーションが作成されているテーブルのレコードに対して、親として紐づけを許可することができる

割り当て

レコードの所有者を変更することができる

共有

所有権は変えずに、他のユーザーへレコードに対するアクセス権を与えることができる

それに加えてセキュリティロールでは各操作ごとに、部署を基準として「アクセスレベル」の設定を行うことができます。

レベル

内容

なし

操作を一切許可しない

ユーザー

自分が所有者のレコードのみ操作できる

部署

同じ部署のレコードを操作できる

部署配下

同じ部署のレコードに加えて、配下の部署のレコードまで操作することができる

組織

部署に関係なく、組織全体のレコードを操作できる


以上が部署セキュリティロールの関係になります。

つまるところ、部署を作成してセキュリティロールの操作とアクセスレベル設定を適用することで、以下のような権限管理が実現できるようになるのです!

  • 法人営業課や自治体営業課の担当者は自身が担当の顧客しか閲覧できない

  • 法人営業課や自治体営業課の課長は、課内の担当者全員の顧客を閲覧、編集できる

  • 営業部の部長は、営業部とその配下の課の顧客をすべて閲覧、編集できる

  • 経理部は顧客のレコードをすべて閲覧できるが、編集や削除はできない


さっそくハンズオンで試してみましょう!

 

ハンズオン:部署とセキュリティロールを作ってみよう

改めて、今回構築する部署とセキュリティロールを整理してみます。

部署

セキュリティロール名

内容

営業部

営業部部長

営業部と配下の部署のレコードをすべて閲覧、編集、削除できる

法人営業課

法人営業課長

法人営業課内のレコードをすべて閲覧、編集、削除できる

法人営業課

法人営業課担当者

自身が作成したレコードを閲覧、編集できる

自治体営業課

自治体営業課長

自治体営業課内のレコードをすべて閲覧、編集、削除できる

自治体営業課

自治体営業課担当者

自身が作成したレコードを閲覧、編集できる

経理部

経理部

営業部と配下の部署のレコードをすべて閲覧できるが、作成、編集、削除はできない

これで必要な部署とセキュリティロールが洗い出せました!

それではまず、部署を作成していきましょう!

 

1. 部署の作成

部署の作成はPower Platform 管理センターより行います。

Power Platform 管理センターを開き、画面左のタブから「管理」→「環境」と選択し、権限設定をしたいPower Platform環境を選択します。

Dataverse_77

選択した環境の管理画面が表示されたら、画面右上の「アクセス」欄の中に「部署」があるので、そちらをクリックします。

Dataverse_78

または、画面上部タブの「設定」から「ユーザーとアクセス許可」→「部署」と進んでも構いません。

すると環境内の部署一覧画面に遷移するのですが、一覧には最低でも1つの部署が表示されていると思います。

Dataverse_79

Power Platform環境では、環境の作成時に自動で環境内で最上位となるルート部署が作成され、ユーザーはこのルート部署の配下に任意の部署を作成していくこととなります。
そのため厳密には、これから作成する法人営業課などもすべて、上位の部署をたどっていくとルート部署の配下ということになりますね。

さて、それでは新しい部署を追加していきましょう!

画面左上の「+新しい部署」をクリックすると、画面右側に新しい部署の設定メニューが表示されます。

Dataverse_80

部署を作成する際には「上位の部署」を設定する必要があるので、組織全体で上位の部署から作成する必要があります。

今回は「営業部」と「経理部」から作成していきましょう!設定項目は簡単で、以下の通りです!

営業部

  • 名前: 営業部

  • 上位の部署: ルート部署

経理部

  • 名前: 経理部

  • 上位の部署: ルート部署


続いて、残りの部署も作成していきます。

法人営業課

  • 名前: 法人営業課

  • 上位の部署: 営業部

自治体営業課

  • 名前: 自治体営業課

  • 上位の部署: 営業部

Dataverse_81

部署の作成は以上です!
上位の部署から作成していく」、というポイントさえ守れば、部署の作成は非常に簡単です!

 

2. セキュリティロールの作成

次に、セキュリティロールを作成します。
部署と同じく、環境の管理画面で「アクセス」欄の中にある「セキュリティロール」をクリックします。

Dataverse_82

また部署と同じように、環境内に存在するセキュリティロールの一覧画面へ遷移します。
セキュリティロールは「システム管理者」や「Environment Maker」など、既定で様々なロールが用意されています。

Dataverse_83

こちらも画面右上から「+新しいロール」をクリックし、新しいロールの設定画面を表示しましょう。

Dataverse_84

部署の作成と比べると必須入力の項目が多いですが、ここで重要なのは「ロール名」と「部署」の2項目です!

他の入力項目についてはどういったユーザーが対象なのか、どんなアプリやシステムに利用するのか、何のテーブルに操作を許可するのか、などを記載してあげると、後から見て何のためのロールなのかが分かりやすくなります。

メンバーの特権継承については、基本的なセキュリティロールとなる「Basic User」レベルのアクセスレベルをコピーするかを設定できます。
特別な事情がなければ、「直接ユーザー(Basic)アクセスレベルとチーム特権」を選択しておきましょう。

実行中のモデル駆動型アプリにApp Opener特権を含める」は、既存のモデル駆動型アプリを利用できるようにしておきたい場合はチェック、個別に設定したい場合はチェックを外しましょう。

そうしたら、まずは法人営業課担当者のセキュリティロールから作っていきましょう。

法人営業課担当者

Dataverse_85
  • ロール名: 法人営業課担当者

  • 部署: 法人営業課


各項目を入力し「保存」をクリックすると、そのままテーブルへのアクセスレベルを設定できる画面へ遷移するので、画面右上で「顧客」と入力し、第3回で作成した顧客テーブルを探しましょう。

Dataverse_86

ここで、テーブルに対して各操作ごとに、アクセスレベルの設定が可能です!

Dataverse_87

法人営業課担当者のロールでは「自身が作成したレコードを閲覧、編集できる」という操作権限を想定しているので、以下の通り設定しましょう!

Dataverse_88

このように設定することで、自身が作成したレコードの読み取りや編集はできるが、削除や割り当ての変更はできず、他の担当者が作成したレコードも閲覧できない権限となります。

アクセスレベルの設定が完了したら、画面上部タブの「保存」または「保存+閉じる」をクリックして、セキュリティロールの作成は完了です!

Dataverse_89

これで法人営業課担当者のセキュリティロールが作成できました!

同じ要領で、その他のセキュリティロールも作成していきましょう!
設定は以下のようなイメージです!

ロール名

部署

作成

読み取り

書き込み

削除

アペンド

アペンド先

割り当て

共有

営業部部長

営業部

部署配下

部署配下

部署配下

部署配下

部署配下

部署配下

部署配下

部署配下

法人営業課長

法人営業課

部署

部署

部署

部署

部署

部署

部署

部署

法人営業課担当者

法人営業課

ユーザー

ユーザー

ユーザー

なし

ユーザー

ユーザー

なし

なし

自治体営業課長

自治体営業課

部署

部署

部署

部署

部署

部署

部署

部署

自治体営業課担当者

自治体営業課

ユーザー

ユーザー

ユーザー

なし

ユーザー

ユーザー

なし

なし

経理部

経理部

なし

組織

なし

なし

なし

なし

なし

なし

 

3. ユーザーへの割り当てと確認

最後に、作成した部署とセキュリティロールをユーザーに割り当てていきましょう。

こちらも部署と同じく、環境の管理画面で「アクセス」欄の中にある「ユーザー」をクリックします。

Dataverse_90

すると環境内のユーザーの一覧が表示されますので、まずは部署を割り当てましょう。
変更したいユーザーを選択して、「部署を変更する」をクリックします。

Dataverse_91

部署の変更画面に遷移しますので、ユーザーに割り当てたい部署に変更して「保存」をクリックします。

Dataverse_92

これで部署を変更できたので、続いてセキュリティロールを割り当てます!
同じく、ユーザー情報から「ロールを管理する」をクリックします。

Dataverse_93

セキュリティロールの管理」メニューが表示されるので、先ほど作成したセキュリティロールを選択し、「保存」をクリックします。

Dataverse_94

おつかれさまです!
以上が部署とセキュリティロールの割り当て手順になります!

ユーザーに割り当てていく作業は大変ですが、
このような手順で部署とセキュリティロールを割り当てていくことで、権限がユーザーにも適用されていきます!

Point

セキュリティロールは各個人のユーザーだけでなく、テナントで作成したセキュリティグループにも付与することが可能です!
セキュリティグループであれば、SharePointリストへのアクセス権限などと一緒に管理することができますので、実務ではセキュリティグループ単位でセキュリティロールを付与してあげることが推奨されます!

 

4. 権限の動作を確認する

それでは前回の記事で作成したモデル駆動型アプリを使って、期待通りの表示になるか確認していきます!

 

 

まずは「自治体営業課AdeleさんLeeさん」で新しい顧客を登録してみます!

  • Adeleさんの画面

    Dataverse_95
  • Leeさんの画面

    Dataverse_96

すると2人とも同じ自治体営業課ですが、担当者レベルのセキュリティロールしか付与されていないため、
顧客一覧のビューではお互いが登録した(所有者である)レコードが見えていない状態となっているのが確認できます!

では続いて、「自治体営業課長Nestorさん」と、「法人営業課長Miriamさん」からはどう見えるでしょうか。

  • Nestor課長の画面

    Dataverse_97
  • Miriam課長の画面

    Dataverse_98

Nestorさんは自治体営業課長のセキュリティロールが付与されているため、
自治体営業課の担当者であるAdeleさんLeeさん登録したレコードがすべて表示されています!

対して法人営業課長のセキュリティロールが付与されているMiriamさんの画面には、
法人営業課の担当者であるAlexさんや、Pradeepさん登録したレコードのみが表示され、自治体営業課の担当者が登録したレコードは表示されていません。

つまり同じ営業部内でも、課ごとのスコープで顧客のレコードが表示されている状態ですね!

それでは、「営業部長Johannaさん」と「経理部Pattiさん」の画面を見てみましょう!

  • Johanna部長の画面

    Dataverse_99
  • Pattiさんの画面

    Dataverse_100

このように、営業部内の担当者が登録したレコードがすべて表示されています!

これでハンズオンの最初で設定した要件通りに、顧客テーブルに対する権限管理を実装できていることが確認できましたね!

 

おわりに

以上、Dataverseテーブルにおける権限管理の設定でした!

Dataverseの部署セキュリティロール、この2つの機能を活用することで、
組織の階層構造業務内容に合わせながら、テーブルレコードに対して柔軟かつ堅牢な権限管理を構築できることがお分かりいただけたかと思います。
ExcelやSharePointリストだけでは実現が難しい、「部署ごとに閲覧できるデータの分割」や「レコードの所有者による権限範囲の設定」といった要件も、Dataverseなら標準機能だけで実装できてしまうんですね!


さて、これまでのシリーズを通してDataverseテーブルの作成や設定モデル駆動型アプリの作り方、そして今回の権限管理まで、Dataverseを扱う上で知っておきたい基本について解説いたしました。

ここまでの内容をマスターしていただければ、充分にDataverseを利用したアプリやシステムの構築ができるようになっているかと思います!

DataverseはMicrosoftの強力なサービスですので、
ぜひ皆さんの業務、環境でもDataverseの活用にチャレンジしていただければと思います!

全6回にわたり、ありがとうございました!
それでは!

 

こちらも合わせて読みたい