ポータルのセキュリティ設定後編。
今回はエンティティ周りのセキュリティ設定の仕方です。
前編のWebページのセキュリティ設定はこちらから。
エンティティのセキュリティ設定
エンティティのセキュリティ設定はWebロール+エンティティのアクセス許可で行います。
ここで初めて出てくるエンティティアクセス許可ですが、セキュリティロールでの設定の仕方と勝手が違います。
セキュリティロールでは所有者を中心として見え方のスコープを設定していきますが、エンティティアクセス許可はログインユーザ(ポータルユーザ)を中心にスコープを設定していきます。
ポータルユーザが取引先担当者ということもあり、所有者が誰であろうとエンティティのアクセスに影響ありません(所有者に取引先担当者が設定できないので)。
エンティティのアクセス許可はポータル管理の[エンティティのアクセス許可]から実施できます。
こちらもレコード追加方式であり[新規]からレコードを作成します。
項目 | 値 |
---|---|
名前 | 任意名でOK |
エンティティ名 | セキュリティ制限をかけたい対象のエンティティを選択 |
Webサイト | ポータルのサイトを指定 |
スコープ | (ここについては後述します) |
特権 | 許可したい操作をチェック |
子エンティティのアクセス許可 | (後述) |
Webロール | このルールを適用するWebロールを指定(複数可) |
スコープと子エンティティのアクセス許可以外は項目名の通りなので迷うことはないかと思います。
アクセス範囲を決める重要な設定がスコープになるわけですが、スコープは以下の5種類から選択が可能です。
グローバル
グローバルは無条件に組織全体になります。
セルフ
セルフは自分自身のユーザに対する権限になります。
自分自身ということはポータルユーザのため、ログインした取引先担当者に対しての特権を設定してくことになります。
そのため、エンティティが取引先担当者を選択した時しか使用できません。
取引先担当者
自身のポータルユーザ(取引先担当者レコード)に関連するレコードが対象となります。
取引先企業
自身が所属する会社(取引先担当者レコード)に関連するレコードが対象となります。
ポータルユーザに会社名が設定されていないと使用できません。
取引先担当者はヒトに対して関連するレコードのアクセス制御をしますが、取引先企業は会社の持ち物に対して関連するレコードのアクセス制御をします。
親
ここまでは、取引先企業と取引先担当者に関連するレコードに対してのアクセス制御でした。
これらのエンティティと直接関連のないエンティティでアクセス制御をしたい場合は、親エンティティからのアクセス制御を引き継いだ形でアクセス制御をします。
親エンティティを辿ったとしても、最終的に行き着く先は取引先企業(自分の会社)or取引先担当者(ログインユーザ)になります。
実装例を交えて設定してみる
スコープについての説明は以上ですが、ややこしくなりがちなので、実装例を交えてエンティティのアクセス制御を設定したいと思います。
今回のケースはこの様な感じ。
取引先企業の中に取引先担当者(ポータルユーザ)が所属。
取引先担当者はそれぞれ営業案件を抱えています。
その営業案件の中に商品(カスタムエンティティ)が複数持てる様な構造を想定。
その中で、ログインユーザから見て赤枠のところが参照可能な範囲とします。
つまり、自社に属する他ユーザの営業案件や商品は見れるけど、他社の営業案件や商品は見れない様にしたいです。
皆さんもちょっと考えて見てください。
エンティティのアクセス制御 解答編
では解答から。
取引先企業
まずは取引先企業エンティティから設定しましょう。
まず間違えやすいのが、スコープは取引先企業ではありません。
取引先企業をスコープにする場合は取引先企業と関連があるエンティティに対してアクセス制御が可能であり、取引先企業自身は対象にならないからです。
取引先企業は自分の会社の情報だけが見たいので、スコープをspan class=”bold”>取引先担当者にしましょう。
あとは、ログインユーザと関連している取引先企業を見たいので、関連付けには会社名で参照しているリレーションを指定しましょう。
よって正解の設定はこちら。
(特権やWebロールは省略しています)
取引先担当者
次は取引先担当者の設定。
こちらもスコープを取引先担当者としないこと。
アクセス制御かけたい範囲は自分を含む所属する会社に属する取引先担当者なので、スコープは取引先企業を指定。
あとは、取引先企業と関連しているリレーションを指定しましょう。
正解の設定はこちら。
また、別解として前述の取引先企業のエンティティアクセス制御を使って親スコープとしてもOKです。
結果は同じになります。
営業案件
続いて営業案件の設定。
ここでは、取引先担当者と関連するエンティティのため、スコープに取引先担当者を選びがちですが、それだと自分の営業案件しか見れないのでこのケースではNGです。
なので、前述の取引先担当者で自分の会社に所属する取引先担当者全員が見れる設定になっているため、そのエンティティアクセス制御を使います。
よって、スコープを親として取引先担当者のエンティティアクセス制御を引き継ぎます。
商品
最後に商品エンティティ。
ここは営業案件のアクセス権をモロに受けるので、スコープは親一択ですね。
次回やること
今回はエンティティのアクセス制御について取り上げましたが、まだポータル上でエンティティのレコードが見える様になっていないためポータルから見える様にしたいと思います。
コメント