階層による表示範囲
読み手がどこに位置するか(その事業単位、その下の単位、またはその報告ライン)によって、誰がレコードを読めるかを広げます。unit、unit_and_below、own_and_reports のスコープを使います。
階層による表示範囲は、組織の中でどこに位置するかによって、人が読めるレコードを広げます。地域マネージャーは自分の地域の誰かが所有するすべてのレコードを見られ、チームリーダーは直属と間接の部下のレコードを見られます。これは権限セットでオブジェクトごとに、読み取り(または書き込み)のスコープとして設定します。
利用できる場所。 セルフマネージドの ObjectOS Enterprise のデプロイメントで、
hierarchySecurity機能を含むライセンスのもと。ObjectOS Cloud では、Enterprise 契約のもと。それ以外のどこでも、このページの 3 つのスコープは所有者自身のレコード以上のものを何も付与しません。開いた側に倒れて失敗することは決してありません。要件を参照してください。
3 つのスコープ
own(レコードの所有者)と org(組織内の全員)はすべてのエディションで機能します。3 つの階層のスコープは、その間に位置します。
| スコープ | 読み手が見られるのは、次の人が所有するレコード | 構築の元 |
|---|---|---|
unit | 読み手と、読み手の事業単位のほかのすべてのメンバー。下へは降りません。 | 読み手のポジションの割り当て、なければ単位のメンバーシップ |
unit_and_below | 読み手の事業単位とツリーでその下にあるすべての単位、そしてそのすべてのメンバー | 事業単位のツリー |
own_and_reports | 読み手と、管理の連鎖でその下にいる全員(直属と間接) | 各ユーザーのマネージャー |
スコープは、人が読めるものを広げるだけです。共有ルールとレコードの共有に追加され、誰かがすでに持っているアクセスを取り除くことはなく、org を越えることもありません。スコープが決めるのは権限がどのレコードに適用されるかであって、新しい権限を付与することは決してありません。
例
事業単位のツリーには Region があり、その下に Team、そして兄弟の単位 Other があります。Alice と Carol は Region に、Bob は Team に、Dave は Other にいます。Bob は Alice の部下です。
unitの Alice が見られるのは Alice、Carol です。Bob と Dave は見られません。unit_and_belowの Alice が見られるのは Alice、Carol、Bob です。Region は Team へ降ります。兄弟の単位の Dave は外れたままです。unit_and_belowの Bob が見られるのは Bob だけです。下に何もない単位が、親へと上に広がることはありません。own_and_reportsの Alice が見られるのは Alice、Bob です。Bob の単位がどこであっても、彼女の部下だからです。
スコープを設定する
権限セットのオブジェクトのエントリに readScope(必要なら writeScope も)を設定します。地域全体を読む営業担当者:
// Keys of a permission set; its other keys are omitted.
objects: {
opportunity: { allowRead: true, allowEdit: true, readScope: 'unit_and_below' },
}自分の報告ラインに限られるチームリーダー:
// Keys of a permission set; its other keys are omitted.
objects: {
opportunity: { allowRead: true, readScope: 'own_and_reports' },
}階層のスコープを使う、コードで書かれたスタックは requires: ['hierarchy-security'] を宣言しなければなりません。なければスタックはビルドされません。スコープを解決できない環境は、それを使うメタデータの公開を拒否し、そのようなドラフトが保存されたときに警告します。
どの単位があなたのものか
unit と unit_and_below では、読み手の単位はまずポジションの割り当てから取られます。現在の各割り当てが配置されている事業単位です。配置された割り当てを持たない読み手だけが、メンバーである単位にフォールバックします。
これは、複数の単位に属していても 1 つしか管理していない人にとって重要です。Alice は Region と部門横断の Project 単位のメンバーですが、彼女のセールスマネージャーのポジションは Region で割り当てられています。unit では、彼女が見られるのは Region のメンバーだけです。Project のメンバーシップが、彼女の読めるものを広げることはありません。
- 配置された割り当てが複数あれば合算されます:読み手の単位はそのすべてです。
- 期限切れの割り当ては数えられません:valid-from / valid-until の期間外にある割り当ては、その単位の付与を止めます。
割り当てと事業単位のツリーについてはポジションを参照してください。
投入するデータ
スコープは、ディレクトリや人事のソースが SCIM、連携、管理画面を通じて提供するデータを読みます。
| データ | 使うもの |
|---|---|
| 事業単位のツリー(各単位の親) | unit_and_below |
| ポジションの割り当て(事業単位と有効期間付き) | unit、unit_and_below(第一候補) |
| 事業単位のメンバーシップ | unit、unit_and_below(フォールバック) |
| 各ユーザーのマネージャー | own_and_reports |
どちらのたどり方も 20 階層までに制限されているので、不正なツリーや偶然の報告の循環が無限ループになることはありません。結果はユーザーごとに短時間キャッシュされ、ツリー、メンバーシップ、割り当て、またはユーザーのマネージャーが変わるたびに消去されます。
報告ラインは 1 つの組織の中にとどまる
複数の組織を持つデプロイメントでは、マネージャーとその部下は少なくとも 1 つの組織を共有していなければなりません。
- 組織をまたいでマネージャーを設定することは拒否されます。 部下と提案されたマネージャーがどちらも組織に属していて、1 つも共有していない場合、書き込みは
400 INVALID_REFERENCE(reason: 'cross-organization-manager')で拒否されます。管理画面、API、インポート、システムのコードのいずれからでも同じです。修正するには、2 人に共有の組織を与えるか、部下自身の組織の中からマネージャーを選びます。 - 「同じ組織」ではなく「組織を共有する」です。 グループと工場の両方のメンバーであるグループレベルのマネージャーは、どちらの人も管理できます。
- まだ組織を持たないユーザーが拒否されることは決してなく、たどる対象から外されることもありません。
- 読み取りも同じルールに従います。
own_and_reportsは境界で止まります。別の組織にだけ属する部下は外され、その下の全員も外されます。
グループレベルの監督のためには、その人に監督する組織のメンバーシップを与えてそこでより広いスコープの権限セットを付与するか、1 つの組織の中で事業単位のツリーを使ってください。
要件
- セルフマネージドの ObjectOS Enterprise: 機能に
hierarchySecurityを含むライセンス(デフォルトの Enterprise の機能セットは含みます)。なければ、スコープはownとして動作します。 - ObjectOS Cloud: Enterprise 契約。Free と Team ではスコープは
ownとして動作し、環境はそれを使うメタデータの公開を拒否します。 - ObjectOS Community: 利用できません。スコープは
ownとして動作します。
ほかのすべての Enterprise の機能と同じく、権利を失うとアクセスが狭まります。ランタイムが止まることは決してありません。