概要
Spotfire ServerがSpotfire Advanced Data Services(以降、ADS)よりインフォメーションリンク(JDBC)でデータを取得する際に、Spotfire Serverのデフォルトディレクトリで管理されるユーザーの所属グループ情報を利用することで、簡易的に列ベースセキュリティを実現する方法について説明します。
本記事では、以下のように、Spotfire Server上で管理されるユーザーの所属するグループに応じて、クエリ実行先のADS公開テーブルより”金額”カラムをそのまま取得するか、NULLに置換して取得するかを制御します。
- “金額閲覧権限あり”グループに所属するユーザー → “金額”カラムのデータを取得できる
- “金額閲覧権限なし”グループに所属するユーザー → “金額”カラムのデータを取得できない
検証環境
製品 | バージョン |
---|---|
Spotfire Server | 14.0 |
Spotfire Advanced Data Services | 8.8 |
ADS公開ビュー
ADS上の公開データベースにある以下のテーブルに対し、Spotfireからインフォメーションリンク(JDBC)で接続し、クエリを実行します。
Spotfireグループ
インフォメーションリンク設定
クエリ実行先のADS公開テーブルに対して作成したインフォメーションリンクが参照するカラムにCASE文を記述します。
本記事では、sample_viewインフォメーションリンクが参照する金額カラムの式フィールドに以下のCASE文を記述します。
CASE WHEN INSTR(JSON_ARRAY(%CURRENT_GROUPS%), '金額閲覧権限なし') > 0 THEN NULL ELSE %1 END
%CURRENT_GROUPS%
には、インフォメーションリンク実行時にSpotfireにログイン中のユーザーが所属するグループ一覧が配列で格納されています。(参考:Personalized Information Links)
%CURRENT_GROUPS%
に金額閲覧権限なしが含まれる場合は、“金額”カラムの内容としてNULLが取得され、それ以外の場合には実際の値(%1
)が取得されます。
この式フィールドに記述する内容は、インフォメーションリンクによりクエリが実行されるデータソース(本記事ではADS)において実行可能なものである必要があります。
クエリ実行先データソースでは実行できない関数等を記述するとインフォメーションリンク実行時にエラーが発生しますのでご注意ください。
動作確認
所属グループによって“金額”カラムの内容が異なることを確認します。
“金額閲覧権限あり”グループに所属するユーザー
“金額”カラムのデータが取得できていることが確認できます。
“金額閲覧権限なし”グループに所属するユーザー
“金額”カラムのデータが取得できていないことが確認できます。