Qlik Trainingブログ

  • Qlik Cloud
  • Qlik Sense
  • QlikView
  • 運用者
  • 開発者
  • データロード
2023.08.08

セキュリティ機能でユーザーごとに異なるデータを表示したい!

Qlik Sense SaaSで、ユーザーごとに異なるデータの表示を行いたいと思ったことは
ありませんか?

アプリにアクセスするユーザーごとに、同一のアプリで異なるデータを表示する方法として、Section Accessというセキュリティ機能を使用する方法があります。

Section Accessを使用すると、Qlik Sense SaaSにログインしているアカウントに応じて、アプリのデータの表示/非表示を制御することができます。
そのため、複数のアプリやシートを作成することなく、一つのアプリでユーザーによって異なるデータを表示することが可能です。

目次

※本記事は「2023年07月時点のSaaS」で作成しています。

Section Accessとは

データ ロード スクリプトで実装するもので、データとは別に「どのユーザーにどのデータを見せるか」を行レベルでのセキュリティを定義し、データ制御用のマスタテーブルを用意して、そのテーブルに基づいて、アプリを開いた時点で表示制御を行うセキュリティ機能になります。

例えば、以下のようなデータがあり、「部署」ごとに閲覧対象データの表示を制御したいと仮定します。
 
以下の例の場合は、Qlikアカウントに登録しているメールアドレスが
「USER1@EXAMPLE.COM」のユーザーは部署:北米の値を閲覧でき、
「USER2@EXAMPLE.COM」のユーザーは部署:日本の値を閲覧できます。
「ADMIN@EXAMPLE.COM」のユーザーはどちらの値も閲覧できます。


▼サンプルデータ

部署 売上
北米 2021 100
北米 2022 150
日本 2021 200
日本 2022 250

Section Accessの設定方法

データ制御用のテーブルを用意する

データ制御用のテーブルを用意します。

▼データ制御用テーブルの例

ACCESS USER.EMAIL 部署
ADMIN ADMIN@EXAMPLE.COM (記載なし)
USER USER1@EXAMPLE.COM 北米
USER USER2@EXAMPLE.COM 日本
USER USER3@EXAMPLE.COM *

※項目名・項目値は、すべて 大文字 で記述する必要があります。
※例外として「*(アスタリスク)」はワイルドカード(項目内の全ての値)を表し、半角英数字で記載します。
 ただし、データ制御用テーブルに含まれていない項目値(例えば、部署が「日本、北米」以外の「南米」など)が含まれていた場合は、その値を参照することができません。
 「*」で記載する場合は、データ制御用テーブルの「部署」内に表示できるようにしたいすべての項目が「部署」の「*」以外の記載に含まれるようにしてください。


●ACCESS
(項目名の変更:不可
 ユーザーに割り当てるアクセス権です。

ADMIN」権限を持つユーザー データ制御用のテーブルによって制限されない限り、アプリ内の全データを閲覧できます。
USER」権限を持つユーザー 定義されたデータのみ閲覧できます。
ADMIN/USER」権限のどちらも割り当てられていないユーザー アプリを開くことができません。


●USER.EMAIL
(項目名の変更:不可
 ユーザーのメールアドレスを指定します。

●部署(項目名の変更:可)
閲覧可能なデータを制御するための、任意項目です。
「USER3」に対し指定している「*」は、データ制御用テーブルの「部署」項目に存在するすべての値が閲覧可能になるオプションです。

アプリを複製し、バックアップを取得する

Section Accessの設定前に対象のアプリを複製し、バックアップを取得します。

Section Accessの設定を誤った場合、例えば、誤ったメールアドレスをSection Accessで設定してしまった場合、今までアプリにアクセス出来ていたユーザーがアプリにアクセスできなくなることがあります
設定を誤った場合でも、Qlik Sense SaaSで対象のアプリの右横にある[…]をクリックし、[データなしで開く]を選択すると、[データ ロード エディタ]でスクリプトを編集することも可能ですが、予めアプリを複製しバックアップを取得してください。

アプリの[データ ロード エディタ]にスクリプトを記述する

アプリの[データ ロード エディタ]にスクリプトを記述し、ロードします。
※解説はコメント(//の後)に記載しています。

▼スクリプト例

Section Access;

//データ制御用テーブルは、「Section Access;」の後に
//ロードスクリプトを書きます。
//なお、このテーブルのデータは分析用のデータとしては表示されません。

LOAD * INLINE [
ACCESS,USER.EMAIL,部署
ADMIN,ADMIN@EXAMPLE.COM,
USER,USER1@EXAMPLE.COM,北米
USER,USER2@EXAMPLE.COM,日本
USER,USER3@EXAMPLE.COM,*
];

Section Application;

//分析用データのロードスクリプトは「Section Application;」
//の後に書きます。

LOAD * INLINE [
部署,年,売上
北米,2021,100
北米,2022,150
日本,2021,200
日本,2022,250
];

※上記例ではデータを見やすくするため、インライン ロードでデータを記載しています。
 データ制御用のマスターやアプリのデータソースはデータベースやExcelファイルなどを使用できます。

データ制御の動作を確認する

アプリを公開し、データ制御の動作を確認します。
アプリを公開している場合は、公開したアプリでリロードを行うことでデータ制御が反映されます。

▼ADMIN@EXAMPLE.COMでログインしたときに表示されるデータ

部署 売上
北米 2021 100
北米 2022 150
日本 2021 200
日本 2022 250


▼USER1@EXAMPLE.COMでログインしたときに表示されるデータ

部署 売上
北米 2021 100
北米 2022 150

 
▼USER2@EXAMPLE.COMでログインしたときに表示されるデータ

部署 売上
日本 2021 200
日本 2022 250


▼USER3@EXAMPLE.COMでログインしたときに表示されるデータ

部署 売上
北米 2021 100
北米 2022 150
日本 2021 200
日本 2022 250


▼その他のユーザー
Section Accessのデータ制御用テーブルに登録されていないユーザーがアプリ一覧からアプリを開いた際は「エラーが発生しました」「アクセスが拒否されました」と表示されます。
もし、意図せずこのような表示となった場合はデータ制御用のテーブルの見直しを行ってください。

管理コンソールでスケジュールリロードする際の注意点

管理コンソールでスケジュールを作成してリロードを行う場合、管理スペースか共有スペースかで必要な権限が異なります。
それぞれのスペースで以下の権限を持つユーザーがリロードおよび定期的なリロードのスケジュール設定が可能なユーザーとなります。

 管理スペース:所有者、管理可能
 共有スペース:所有者、管理可能、編集可能

加えて、Section Accessを用いてリロードを行っている場合はリロードを行うユーザーに対して、データ制御用テーブルの「ACCESS」項目でADMIN権限を持たせて、全てのデータが参照可能な状態にしてください。

さいごに

Section Accessの機能について、おわかりいただけたでしょうか。

今回紹介したSection Accessの詳細については、以下のメーカーヘルプをご覧ください。
Section Accessによるデータセキュリティの管理

Section Accessを利用して表示するデータを制御することで、ユーザーごとにアプリやシートを個別に作成する必要がなくなります。
ユーザーごとにアプリやシートを作成している方は是非、活用してみてください!

関連している記事

  • Qlik Cloud
  • Qlik Sense
  • 利用者
  • 可視化・分析
2024.05.02

複数のアプリから目的のチャート同士を比較しよう!

複数のアプリから特定のチャート同士を比較して見たいことはありませんか?本記事では、Qlik Sense SaaSの[ハブで監視]の活用方法を紹介します。

  • Qlik Cloud
  • Qlik Sense
  • 運用者
2024.04.24

Qlik Cloud 日本リージョンへの移行方法(qlik-cli利用時の注意点)

先日、本ブログにて、日本リージョンへテナントを移行する方法の全体像をご紹介しました。今回は、コマンドラインのqlik-cliを用いたテナント移行時の注意点と、コマンドやスクリプトの記述例をご紹介します。

  • Qlik Sense
  • Qlik Cloud
  • 開発者
  • 運用者
2024.04.17

Qlik Application Automation活用術:Microsoft Teamsにメッセージを配信する

Qlik Sense SaaSを使用していて、メジャーの結果と事前に設定した閾値を比較して、閾値を超えたら通知を飛ばせたら良いな、と考えたことはありませんか?本記事では、Qlik Sense SaaSの「Qlik Application Automation」でMicrosoft Teamsにメッセージを配信する方法を紹介します。

ページの先頭へ戻る