アプリ開発の調査にかかる
時間を削減したい
内製化支援サービス
アプリを自分たちで
作成できるようになりたい
DX人材育成プログラム
プロに開発を依頼したい
アプリ開発導入支援サービス
機能拡張サービス
X-SP Feature
デザイン拡張サービス
X-SP Design
モダン化から運用管理までサポート
構築支援サービス
Dataverseテーブル作成講座、最終回となる第6回は、Dataverseにおける「セキュリティと権限」についての解説となります。
普段、ExcelやSharePointリストで管理していると、「このシートは見せたくない」「このアイテムはあの部署しか編集できないようにしたい」といった権限管理に苦労したことはないでしょうか?
対してDataverseは、企業向けの業務システム構築にも耐えられる、非常に細やかな権限管理が可能となっています。
今回はより実践的な組織構造を例にして、「顧客テーブルに対する営業部と経理部の権限設定」をハンズオンで体験してみましょう!
【このシリーズの過去回一覧】
弊社はPower Platform(Power Apps・Power Automate)に関するアプリ開発や、
皆様が内製化を行う際の支援サービスを提供しておりますので、
Power
Platformに関する内容でお悩みがある場合は、以下からぜひお問い合わせください。
ビジネスユニットとセキュリティロールの関係
実装に入る前の前提知識として、Power Platformにおける重要な2つの概念、「部署(ビジネスユニット)」と「セキュリティロール(役割)」の関係を理解しておきましょう。
今回は、以下の図のような組織図を想定します!
部署(ビジネスユニット)
Power Platformにおける「部署」とは、組織内での各部署の階層構造を表すものです。
例の図では、「経理部」と「営業部」という2つの部があり、「営業部」の配下としてさらに「法人営業課」や「自治体営業課」という課があります。
この場合「法人営業課」からみれば、「自治体営業課」は直接の上下関係はありませんが、同じ「営業部の配下」となります。
ですが、「経理部」に対しては「営業部」の外の部署ということになります。
このように、部署の上下関係や包含関係を明確にするために、Power Platformでは「部署(ビジネスユニット)」の設定を行います。
ここで覚えておいていただきたいのが、Power Platformではユーザーはもちろん、Dataverseテーブル内のレコード、そして後ほど解説するセキュリティロールも、必ずどこか「1つの部署」に所属します。
「テーブル内のレコードもどこか1つの部署に所属する」というのが中々イメージしづらい部分かもしませんが、この後のセキュリティロールやハンズオンを見ていただけると実感いただけるかと思います!
セキュリティロール
セキュリティロールとは、「ユーザーに権限を与えることで、役割を定義する」設定にあたります。
セキュリティロールには必ず1つの部署が割り当てられ、環境内のDataverseテーブルのレコードに対して「何の操作をどのレベルまで許可する」という設定が行われています。
操作については以下の表の通り、読み取りや作成、削除といったものが該当します。
操作 |
内容 |
|---|---|
作成 |
テーブルに新しいレコードを作成できる |
読み取り |
テーブル内のレコードを読み取り、表示できる |
書き込み |
既存のレコードの内容を変更することができる |
削除 |
既存のレコードを削除することができる |
アペンド |
リレーションが作成されているテーブルのレコードに対して、子として紐づけを許可することができる |
アペンド先 |
リレーションが作成されているテーブルのレコードに対して、親として紐づけを許可することができる |
割り当て |
レコードの所有者を変更することができる |
共有 |
所有権は変えずに、他のユーザーへレコードに対するアクセス権を与えることができる |
それに加えてセキュリティロールでは各操作ごとに、部署を基準として「アクセスレベル」の設定を行うことができます。
レベル |
内容 |
|---|---|
なし |
操作を一切許可しない |
ユーザー |
自分が所有者のレコードのみ操作できる |
部署 |
同じ部署のレコードを操作できる |
部署配下 |
同じ部署のレコードに加えて、配下の部署のレコードまで操作することができる |
組織 |
部署に関係なく、組織全体のレコードを操作できる |
以上が部署とセキュリティロールの関係になります。
つまるところ、部署を作成してセキュリティロールの操作とアクセスレベル設定を適用することで、以下のような権限管理が実現できるようになるのです!
法人営業課や自治体営業課の担当者は自身が担当の顧客しか閲覧できない
法人営業課や自治体営業課の課長は、課内の担当者全員の顧客を閲覧、編集できる
営業部の部長は、営業部とその配下の課の顧客をすべて閲覧、編集できる
経理部は顧客のレコードをすべて閲覧できるが、編集や削除はできない
さっそくハンズオンで試してみましょう!
ハンズオン:部署とセキュリティロールを作ってみよう
改めて、今回構築する部署とセキュリティロールを整理してみます。
部署 |
セキュリティロール名 |
内容 |
|---|---|---|
営業部 |
営業部部長 |
営業部と配下の部署のレコードをすべて閲覧、編集、削除できる |
法人営業課 |
法人営業課長 |
法人営業課内のレコードをすべて閲覧、編集、削除できる |
法人営業課 |
法人営業課担当者 |
自身が作成したレコードを閲覧、編集できる |
自治体営業課 |
自治体営業課長 |
自治体営業課内のレコードをすべて閲覧、編集、削除できる |
自治体営業課 |
自治体営業課担当者 |
自身が作成したレコードを閲覧、編集できる |
経理部 |
経理部 |
営業部と配下の部署のレコードをすべて閲覧できるが、作成、編集、削除はできない |
これで必要な部署とセキュリティロールが洗い出せました!
それではまず、部署を作成していきましょう!
1. 部署の作成
部署の作成はPower Platform 管理センターより行います。
Power Platform 管理センターを開き、画面左のタブから「管理」→「環境」と選択し、権限設定をしたいPower Platform環境を選択します。
選択した環境の管理画面が表示されたら、画面右上の「アクセス」欄の中に「部署」があるので、そちらをクリックします。
または、画面上部タブの「設定」から「ユーザーとアクセス許可」→「部署」と進んでも構いません。
すると環境内の部署一覧画面に遷移するのですが、一覧には最低でも1つの部署が表示されていると思います。
Power Platform環境では、環境の作成時に自動で環境内で最上位となるルート部署が作成され、ユーザーはこのルート部署の配下に任意の部署を作成していくこととなります。
そのため厳密には、これから作成する法人営業課などもすべて、上位の部署をたどっていくとルート部署の配下ということになりますね。
さて、それでは新しい部署を追加していきましょう!
画面左上の「+新しい部署」をクリックすると、画面右側に新しい部署の設定メニューが表示されます。
部署を作成する際には「上位の部署」を設定する必要があるので、組織全体で上位の部署から作成する必要があります。
今回は「営業部」と「経理部」から作成していきましょう!設定項目は簡単で、以下の通りです!
営業部
名前: 営業部
上位の部署: ルート部署
経理部
名前: 経理部
上位の部署: ルート部署
続いて、残りの部署も作成していきます。
法人営業課
名前: 法人営業課
上位の部署: 営業部
自治体営業課
名前: 自治体営業課
上位の部署: 営業部
部署の作成は以上です!
「上位の部署から作成していく」、というポイントさえ守れば、部署の作成は非常に簡単です!
2. セキュリティロールの作成
次に、セキュリティロールを作成します。
部署と同じく、環境の管理画面で「アクセス」欄の中にある「セキュリティロール」をクリックします。
また部署と同じように、環境内に存在するセキュリティロールの一覧画面へ遷移します。
セキュリティロールは「システム管理者」や「Environment Maker」など、既定で様々なロールが用意されています。
こちらも画面右上から「+新しいロール」をクリックし、新しいロールの設定画面を表示しましょう。
部署の作成と比べると必須入力の項目が多いですが、ここで重要なのは「ロール名」と「部署」の2項目です!
他の入力項目についてはどういったユーザーが対象なのか、どんなアプリやシステムに利用するのか、何のテーブルに操作を許可するのか、などを記載してあげると、後から見て何のためのロールなのかが分かりやすくなります。
メンバーの特権継承については、基本的なセキュリティロールとなる「Basic User」レベルのアクセスレベルをコピーするかを設定できます。
特別な事情がなければ、「直接ユーザー(Basic)アクセスレベルとチーム特権」を選択しておきましょう。
「実行中のモデル駆動型アプリにApp Opener特権を含める」は、既存のモデル駆動型アプリを利用できるようにしておきたい場合はチェック、個別に設定したい場合はチェックを外しましょう。
そうしたら、まずは法人営業課担当者のセキュリティロールから作っていきましょう。
法人営業課担当者
ロール名: 法人営業課担当者
部署: 法人営業課
各項目を入力し「保存」をクリックすると、そのままテーブルへのアクセスレベルを設定できる画面へ遷移するので、画面右上で「顧客」と入力し、第3回で作成した顧客テーブルを探しましょう。
ここで、テーブルに対して各操作ごとに、アクセスレベルの設定が可能です!
法人営業課担当者のロールでは「自身が作成したレコードを閲覧、編集できる」という操作権限を想定しているので、以下の通り設定しましょう!
このように設定することで、自身が作成したレコードの読み取りや編集はできるが、削除や割り当ての変更はできず、他の担当者が作成したレコードも閲覧できない権限となります。
アクセスレベルの設定が完了したら、画面上部タブの「保存」または「保存+閉じる」をクリックして、セキュリティロールの作成は完了です!
これで法人営業課担当者のセキュリティロールが作成できました!
同じ要領で、その他のセキュリティロールも作成していきましょう!
設定は以下のようなイメージです!
ロール名 |
部署 |
作成 |
読み取り |
書き込み |
削除 |
アペンド |
アペンド先 |
割り当て |
共有 |
|---|---|---|---|---|---|---|---|---|---|
営業部部長 |
営業部 |
部署配下 |
部署配下 |
部署配下 |
部署配下 |
部署配下 |
部署配下 |
部署配下 |
部署配下 |
法人営業課長 |
法人営業課 |
部署 |
部署 |
部署 |
部署 |
部署 |
部署 |
部署 |
部署 |
法人営業課担当者 |
法人営業課 |
ユーザー |
ユーザー |
ユーザー |
なし |
ユーザー |
ユーザー |
なし |
なし |
自治体営業課長 |
自治体営業課 |
部署 |
部署 |
部署 |
部署 |
部署 |
部署 |
部署 |
部署 |
自治体営業課担当者 |
自治体営業課 |
ユーザー |
ユーザー |
ユーザー |
なし |
ユーザー |
ユーザー |
なし |
なし |
経理部 |
経理部 |
なし |
組織 |
なし |
なし |
なし |
なし |
なし |
なし |
3. ユーザーへの割り当てと確認
最後に、作成した部署とセキュリティロールをユーザーに割り当てていきましょう。
こちらも部署と同じく、環境の管理画面で「アクセス」欄の中にある「ユーザー」をクリックします。
すると環境内のユーザーの一覧が表示されますので、まずは部署を割り当てましょう。
変更したいユーザーを選択して、「部署を変更する」をクリックします。
部署の変更画面に遷移しますので、ユーザーに割り当てたい部署に変更して「保存」をクリックします。
これで部署を変更できたので、続いてセキュリティロールを割り当てます!
同じく、ユーザー情報から「ロールを管理する」をクリックします。
「セキュリティロールの管理」メニューが表示されるので、先ほど作成したセキュリティロールを選択し、「保存」をクリックします。
おつかれさまです!
以上が部署とセキュリティロールの割り当て手順になります!
ユーザーに割り当てていく作業は大変ですが、
このような手順で部署とセキュリティロールを割り当てていくことで、権限がユーザーにも適用されていきます!
Point
セキュリティロールは各個人のユーザーだけでなく、テナントで作成したセキュリティグループにも付与することが可能です!
セキュリティグループであれば、SharePointリストへのアクセス権限などと一緒に管理することができますので、実務ではセキュリティグループ単位でセキュリティロールを付与してあげることが推奨されます!
4. 権限の動作を確認する
それでは前回の記事で作成したモデル駆動型アプリを使って、期待通りの表示になるか確認していきます!
まずは「自治体営業課のAdeleさんとLeeさん」で新しい顧客を登録してみます!
-
Adeleさんの画面
-
Leeさんの画面
すると2人とも同じ自治体営業課ですが、担当者レベルのセキュリティロールしか付与されていないため、
顧客一覧のビューではお互いが登録した(所有者である)レコードが見えていない状態となっているのが確認できます!
では続いて、「自治体営業課長のNestorさん」と、「法人営業課長のMiriamさん」からはどう見えるでしょうか。
-
Nestor課長の画面
-
Miriam課長の画面
Nestorさんは自治体営業課長のセキュリティロールが付与されているため、
自治体営業課の担当者であるAdeleさんとLeeさんが登録したレコードがすべて表示されています!
対して法人営業課長のセキュリティロールが付与されているMiriamさんの画面には、
法人営業課の担当者であるAlexさんや、Pradeepさんが登録したレコードのみが表示され、自治体営業課の担当者が登録したレコードは表示されていません。
つまり同じ営業部内でも、課ごとのスコープで顧客のレコードが表示されている状態ですね!
それでは、「営業部長のJohannaさん」と「経理部のPattiさん」の画面を見てみましょう!
-
Johanna部長の画面
-
Pattiさんの画面
このように、営業部内の担当者が登録したレコードがすべて表示されています!
これでハンズオンの最初で設定した要件通りに、顧客テーブルに対する権限管理を実装できていることが確認できましたね!
おわりに
以上、Dataverseテーブルにおける権限管理の設定でした!
Dataverseの部署とセキュリティロール、この2つの機能を活用することで、
組織の階層構造や業務内容に合わせながら、テーブルとレコードに対して柔軟かつ堅牢な権限管理を構築できることがお分かりいただけたかと思います。
ExcelやSharePointリストだけでは実現が難しい、「部署ごとに閲覧できるデータの分割」や「レコードの所有者による権限範囲の設定」といった要件も、Dataverseなら標準機能だけで実装できてしまうんですね!
さて、これまでのシリーズを通してDataverseテーブルの作成や設定、モデル駆動型アプリの作り方、そして今回の権限管理まで、Dataverseを扱う上で知っておきたい基本について解説いたしました。
ここまでの内容をマスターしていただければ、充分にDataverseを利用したアプリやシステムの構築ができるようになっているかと思います!
DataverseはMicrosoftの強力なサービスですので、
ぜひ皆さんの業務、環境でもDataverseの活用にチャレンジしていただければと思います!
全6回にわたり、ありがとうございました!
それでは!
【こちらも合わせて読みたい】
こんにちは。アーティサン株式会社の伊礼(いれい)です。