応用例 複数項目の組み合わせパターンに応じたデータの閲覧制御

最終更新日: 2020年3月14日
R8 | R9

サンプルの仕様

あるモデルの複数項目の「組み合わせ」によって、アクセスレベルを算定できるものとします。 このとき、当該アクセスレベルをもった利用者のみ、データの閲覧を行わせたいという要件を実現してみます。

例を示します。ある工場からの出荷製品について、次のような条件で判定処理を行うものとします。

また、上記 1 〜 3 に対して、次のようなアクセスレベル表を用意するものとします。

アクセスレベル 条件 説明 処理
レベル4 (1) かつ (2) かつ (3) 全世界へ公開 該当製品を公開する
レベル3 (1) かつ (2) アジア地域へ公開
レベル2 (3) 国内へ公開
レベル1 社内限定

始めにシステム管理者(admin)でログオンし、テストユーザを登録します。 ここではレベル1からレベル4のプリンシパルをもったアカウントをそれぞれ作成しました。

図1 テストアカウント一覧

level1アカウントのプリンシパルには「一般ユーザ」と「レベル1」を付与します。同様に level2 アカウントには「レベル2」を、level3 アカウントには「レベル3」を、level4 アカウントには「レベル4」をそれぞれ付与します。

図2 level1アカウントの例

続いて製品(テストモデル)を作成します。各項目を入力すると、アクセスレベルの値は自動計算されます。

図3 テストモデルの登録

アクセスレベル毎のテストモデルを用意します。

図4 用意したテストモデル一覧

アクセスレベル1をもったアカウントでログオンします。アクセスレベル1のデータのみが閲覧できます。

図5 アクセスレベル1のデータのみが閲覧できる

アクセスレベル2をもったアカウントでログオンします。 アクセスレベル1およびレベル2データが閲覧できます。

図6 アクセスレベル1,2のデータを閲覧できる

アクセスレベル3をもったアカウントでログオンします。 アクセスレベル1、レベル2、レベル3のデータが閲覧できます。

図7 アクセスレベル1,2,3のデータを閲覧できる

アクセスレベル4をもったアカウントでログオンします。 すべてのアクセスレベルのデータが閲覧できます。

図8 すべてのレベルのデータを閲覧できる

定義方法

サンプルで用意したモデルは次の通りです。

図9 モデル定義一覧

本サンプルで利用する項目を示します。

図10 利用する項目

「アクセスレベル」を整数型として用意します。次の計算式によって求められるとします。

IF(
  AND(
    ${gaihihantei#id}==2,
    ${gaihihanteikekka#id}==2,
    ${status#id}==3,
    ${seihinsyubetsu#id}==1
  ),
  4,
  IF(
    AND(
      ${gaihihantei#id}==2,
      ${gaihihanteikekka#id}==2, 
      ${status#id}==3
    ), 
    3, 
    IF(
      ${seihinsyubetsu#id}==1, 
      2,
      1
    )
  )
)
図11 計算式の設定

さらにアクセスレベル項目について、複数の暗黙条件を設定します。

暗黙条件の設定では「指定した権限を満たした場合、この暗黙条件を適用しない(無視する)」というオプションが用意されています。この機能を活用します。

図12 アクセスレベルへの暗黙条件の設定

複数の暗黙条件が指定された場合

複数の暗黙条件が指定された場合、これらの暗黙条件は「かつ」条件式として扱われます。 ここで示した例の場合、下記の条件が適用されることになります。

「アクセスレベル」項目は「1より小さい」かつ「2より小さい」かつ「3より小さい」かつ「4より小さい」(「適用外の権限」が考慮されていないとき)

これに「適用外の権限」を考慮すると次のようになります。

access1 権限を持つユーザの場合

暗黙条件は以下のように動作します。

「アクセスレベル」項目は「2より小さい」かつ「3より小さい」かつ「4より小さい」

ただし「2より小さい」という条件は「3より小さい」と「4より小さい」を包含しているので、結果的には「アクセスレベル」項目は「2より小さい」という条件が適用されることになります。

access1, access2 権限を持つユーザの場合

暗黙条件は以下のように動作します。

「アクセスレベル」項目は「3より小さい」かつ「4より小さい」

ただし「3より小さい」という条件は「4より小さい」を包含しているので、結果的には「アクセスレベル」項目は「3より小さい」という条件が適用されることになります。

権限の設定

権限を用意します。利用者毎に割り当てる「プリンシパル」と、各プリンシパルに対応した「パーミッション」を用意します。

図13 プリンシパル、パーミッションの設計