Qlik Community

Japan

cancel
Showing results for 
Search instead for 
Did you mean: 
tsi
Employee
Employee

A Primer on Section Access(日本語訳)

Henric Cronströmのブログの日本語訳をご紹介いたします。


オリジナルの英文ブログへのリンク

http://community.qlik.com/blogs/qlikviewdesignblog/2014/05/26/section-access


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

セクションアクセスは、アプリケーションのセキュリティをコントロールするために提供されている機能です。 基本的には、ロードスクリプトのなかで、Authorization(権限)を定義します。下記の図のように、Authorization(権限)テーブルを定義すると、

QlikViewは、このテーブルの情報を利用して、ユーザーがアプリケーションを開く際に、権限の定義に基づいて読み込むデータの範囲を限定します。

なお、この機能は、動的なデータ削減の手段のひとつとして、パブリッシャーのLoop-and-Reduce機能と比較されることがあります。

Primer_Session_access_1.jpg

例えば、上のデータモデルのなかの、Authorization(権限)テーブルの中のCOUNTRY の項目をキーにして、権限制御を行う例を用いて、説明してみましょう。(なお、実際のアプリケーションでは、Authorizationテーブルはデータモデルを確認できるテーブルビューアー上には表示されませんが、今回は説明のために表示させた図を掲載しています。)この場合、ユーザーがアプリケーションを開いた際に、ユーザー名(NT NAME)からCOUNTRYを判断し、Customers(顧客)テーブルのCOUNTRY の項目と結びつき、さらに他のテーブルのデータとQlikViewの連想技術に基づいて、関連づけられていきます。 以下の例では、NTNAMEからCOUNTRYCustomerCategoryNameの項目が関連しています。

Premir_session_access2.png

セッションアクセスを含むスクリプトをデバックする場合には、一時的にSection Access statement の記載部分をコメントアウトして、デバックモードで実行し、NTNAMEを確認する方法が便利です。

Section Access statement には、少なくともACCESS,NTNAME及びAuthorization(権限)テーブルとリンクする項目の3つの項目が必要です。また、部門やユーザーロールなどの情報も追加されるケースが多いです。

セッションアクセスに関するポイントをいくつか記載しておきます。

  • セッションアクセスの全ての項目及び値は大文字である必要があります。もし、小文字の項目や値が含まれている場合には、Upper()関数を使って大文字への変換を行ってください。
  • USERIDPASSWORD の項目ではなく、NTNAMEの項目を利用しましょう。デバックやテストの際に便利です。
  • NTNAMEの項目は、認証ユーザーとの照合に利用されます。また、ユーザー管理をWindows認証ではなく、他の認証で行っている場合にはticketingの設定に利用されます。
  • NTNAME は、個別のユーザーだけでなく、グループ名も含まれます。
  • ドキュメントプロパティの起動画面タブの「セッションアクセスによる初期データ削除」と「強制削除」のフラグがOnになっていることを確認してください。なお、データ制御を行う項目が、実際のソースデータの中に含まれていない場合には、データ削減は行われません。
  • もし、ユーザーがサーバー経由ではなく、qvwファイルをダウンロードしてオフラインのローカルクライアントでqvwファイルを閲覧する場合には、セッションアクセスの機能は限定的になってしまいます。なぜなら、ファイルのデータ自体の削減はおこなわれず、またデータの暗号化もされないため、悪意のないユーザーであれば問題はありませんが、仮に、悪意のあるユーザーがデータを権限外のデータを閲覧しようとした場合の抜け道となる可能性があるからです。
  • 私は、オフラインでの利用時には、セッションアクセスの利用ではなく、パブリッシャーによるデータ削減を利用することをお勧めします。
  • セッションアクセスに関連する多くのサンプルスクリプトでは、インラインロードによるコーディングを利用していますが、実業務で利用するアプリケーションでは、インラインロードではなく、データベースに権限テーブルを作成し、SELECT文を使ってコーディングすることをお勧めします。

最後に、

  • セッションアクセスをアプリケーションに組み込む際には、必ずバックアップ・コピーを作成しておいてください。そうしないと、あなた自身がロックされてしまうケースが起きてしまうかもしれません。

セッションアクセスは、一つのアプリケーションを利用して、フレキシブルにデータのアクセスを制御するために有効な機能です。そして、サーバー利用時にも、権限制御の方法のひとつとして利用できます。


HIC

Labels (1)
0 Replies