サポート > リポジトリ > 認証・認可 > グループ権限
ja | en

所属グループごとに権限を設定し、登録したデータの参照・更新の制御を行うことができます。

あるグループに所属しているアカウント同士では登録したデータの参照・更新は可能だが、別のグループに所属するアカウントからは参照のみで更新はさせない、といったような使い方ができます。

これはモデル単位で設定します。

グループ権限管理は Wagby が提供する「グループ」モデルである jgroup を用います。ログオンアカウントを管理するモデルである juser と連携しており、ログオンアカウントは複数のグループに所属することができます。

グループの作成方法は「アカウント > グループの使い方」をお読みください。

図1 グループモデルとアカウントモデル

モデル毎に「R:読み取り権限」「W:書き込み権限」の2つの権限を組み合わせたパターンを選択します。

図2 グループ権限の設定

各パターンはそれぞれ下表のように設定されています。

パターン データ登録者 同一の所属グループ その他の所属グループ
R W R W R W
パターン1 - - - -
パターン2 - - -
パターン3 - -
パターン4 - -
パターン5 -
パターン6 (初期値)

パターンは制約の厳しい順に並んでいます。初期値は「パターン6」(制約なし)が設定されています。

システム管理者は(パターンの設定に関わらず)すべてのデータの閲覧と更新を行うことができます。

本機能を使用すると、Wagby は関連するモデルのテーブル定義に(内部で利用するグループ権限管理用の)項目「データ所有者」及び「データ所有者の所属グループ」を追加します。

そのため、設定変更後はテーブル構造が変わります。既存のテーブルをすべて削除したあと、テーブルの再作成を行ってください。

データ登録後にユーザの所属グループを変更した場合

データ登録後にユーザの所属グループを変更しても既存のデータは影響を受けません。「データ登録時に設定された所有者の所属グループ」が維持されます。

これを「パターン5」のグループ権限を例に説明します。

用意するグループ

グループID (主キー) グループ名
1000総務部
1001営業部
1002技術開発部

用意するアカウント

アカウント 名前 所属グループ
satou佐藤総務部
suzuki鈴木総務部
yamada山田技術開発部

佐藤がデータを登録した場合

佐藤が顧客データ(ID:1)を登録します。

顧客ID 作成者(データ所有者) データ所有者の所属グループ 佐藤の操作 鈴木の操作 山田の操作
RWRWRW
1satou1000 -

佐藤はデータを登録した本人のため、読み書きできます。
鈴木は同一グループのため、読み書きできます。
山田は異なるグループのため、読み取りのみ許可されます。

佐藤の所属グループを変更した後

"satou" (佐藤) の所属グループを技術開発部に変更します。この操作はすでに登録済みのデータには影響がありません。

顧客ID 作成者(データ所有者) データ所有者の所属グループ 佐藤の操作 鈴木の操作 山田の操作
RWRWRW
1satou1000 -

佐藤のグループを変更したにも関わらず、鈴木が読み書きでき、山田は読み取りのみです。 これは、登録済みデータは登録時の所属グループのIDを保持しているためです。

佐藤が新しいデータを登録した場合

所属グループ変更後に登録を行ったデータについては、変更後のグループが適用されます。

顧客ID 作成者(データ所有者) データ所有者の所属グループ 佐藤の操作 鈴木の操作 山田の操作
RWRWRW
2satou1002 -

佐藤が過去に登録したデータの「データ所有者」を変更したい場合

顧客IDが1のデータは、佐藤の所属グループが変わっても(データ作成者が佐藤であるため)佐藤はそのまま読み書き可能です。運用ポリシー上、データ所有者を変更したいという場合、次の手順を行ってください。

  1. システム管理者またはグループ管理者(後述)でログオンします。
  2. 当該データの更新画面を開きます。
  3. 「データ所有者」という項目が表示されますので、こちらを佐藤以外のアカウントへ修正します。このとき、データ所有者の所属グループも同時に変更されます。
図3 データ所有者を変更する
運用上、"データ所有者(総務部)" というアカウントを用意しておくという考え方もあります。データ所有者の変更は、このアカウントに付け替えるというものです。(誰かがこのアカウントを使ってシステムを操作することはない、とします。)

佐藤がデータ所有者であることはそのままに、データ所有者の所属グループだけを変更したい場合

次の手順で変更します。

  1. システム管理者またはグループ管理者(後述)でログオンします。
  2. 当該データの更新画面を開きます。
  3. 「データ所有者」という項目が表示されますので、こちらをいったん佐藤以外のアカウントへ修正します。(例:admin)
    「データ所有者の所属グループ」はWagbyの参照連動自モデル保存機能を使っています。この値を修正するために、参照先を変更する必要があります。
  4. 再度、更新画面を開きます。「データ所有者」に再びsatouを選択し、保存します。

各グループには、グループ内のデータに対して特別な権限を持つ「グループ管理者」を用意することができます。

「グループ管理者」はプリンシパルとして提供されますが、これが選択できるのはグループ管理者の権限が(同一の所属)グループの権限を超える運用を行うときに限定されます。具体的には次のパターンです。

パターン 同一の所属グループ グループ管理者の権限
R W
パターン1 - - RW
パターン1 - - R
パターン2 - RW
パターン4 - RW

パターン2を例にあげて説明します。同一グループに属するアカウントは通常、読み取りが許可されています。しかしグループ管理者は通常の権限を強化したものとなっているため、書き込み(データの登録、更新、削除)が行えます。

グループ管理者プリンシパルの選択

グループ管理者はプリンシパルとして用意されます。そのため複数のアカウントをグループ管理者に任命することができます。

図4に示すように、プリンシパルは2種類用意されます。

図4 二つのグループ管理者プリンシパル

「グループ管理者」は、グループ管理者の権限でデータを操作することに加え、代理登録を行うことができます。
「グループ管理者(代理登録不可)」は、グループ管理者の権限でデータを操作できますが、代理登録を行うことはできません。

システム管理者またはグループ管理者は「データ所有者」という項目を変更することにより、データの代理登録を行うことができます。

グループ管理者の権限が "RW" となっている必要があります。"R" では代理登録はできません。

準備(プリンシパルの設定)

代理登録できるアカウントに、プリンシパル「グループ管理者」と「アカウント閲覧者」を与えます。(なお、システム管理者はこれらを別途、与えなくても常に代理登録が可能です。)

図5 グループ管理者とアカウント閲覧者のプリンシパルを与える

代理登録を行う

図5で用意したアカウント佐藤で、顧客データの登録画面を開きます。図6に示すように「データ所有者」という項目が表示され、かつ変更できるようになっていることがわかります。(この項目はシステム管理者またはグループ管理者以外では不可視です。)

図6 データ所有者項目が表示される

別のアカウントに変更することができます。(図7)なお、佐藤はグループ管理者のため、所属する同じグループのアカウントに限定されます。

図7 データ所有者を変更した

グループ権限管理を解除するには、「権限パターン」の設定をパターン6(初期値; 制約なし)にします。

  • そのモデルの検索・一覧表示画面を用意しなかった場合、グループ権限は利用できません。(設定は無効となります。)
  • グループ権限を有効にして更新制限を行っているモデルの一覧表示画面で更新ボタンを用意しないようにしてください。グループ権限利用時、詳細画面に用意される更新ボタンは権限を有するユーザーのみが押せるような制御が働きますが、一覧表示画面には未対応です。