セクション アクセスによるデータ セキュリティの管理
セクション アクセスは、アプリケーションのセキュリティを制御するために使用されます。これは基本的にデータロード スクリプトの一部であり、セキュリティ テーブルを追加して、誰が何を表示するかを定義します。 Qlik Sense はこの情報を使用して、ユーザーがアプリケーションを開いたときにデータを適切なスコープに縮小します。つまり、アプリケーション内のデータの一部は、ユーザーの ID に基づいてユーザーから非表示になります。 セクション アクセスはアプリケーション内のデータと緊密に統合されており、アクセスを制御するためにデータに依存しています。この形式の動的データ削減は、テーブルの行、列、または両方の組み合わせを対象にすることができます。詳細については、「Qlik の信頼とセキュリティ」を参照してください。
ロード スクリプトのセクション
データのアクセス制御は、データが通常ロードされるのと同じ方法でロードされる 1 つまたは複数のセキュリティ テーブルを通じて管理されます。これにより、これらのテーブルを標準のデータベースまたはスプレッドシートに保存できます。セキュリティ テーブルを管理するスクリプト ステートメントは、スクリプトの中で Section Access ステートメントで開始される承認セクション内に指定します。
スクリプト内で承認セクションが定義されている場合、アプリケーションのデータをロードする部分のスクリプトを Section Application で開始される別のセクション内に配置する必要があります。
ロード スクリプトに変更を加えた後、変更を有効にするためには、常にデータをリロードする必要があります。
セクション アクセスのシステム項目
アクセス レベルは、スクリプトの セクション アクセス部分内にロードされた 1 つ以上のセキュリティ テーブルのユーザーに割り当てられます。これらのテーブルには、少なくとも 2 つのシステム 項目が含まれている必要があります。アクセス レベルを定義する項目である ACCESS、および USERID または USER。EMAIL。使用例に応じて、オプションのシステム 項目を追加できます。セクション アクセスのすべてのシステム項目は次のとおりです。
ACCESS
対応するユーザーに与えられるアクセス権を定義します。
指定したユーザーに対して、Qlik Sense アプリケーションへのアクセスを承認できます。セキュリティ テーブルでは、アクセス レベルの ADMIN または USER をユーザーに割り当てることができます。管理者権限を持つユーザーは、セキュリティ テーブルによって制限されない限り、アプリケーション内の全データにアクセスできます。USER 権限を持つユーザーは、セキュリティ テーブルで指定されたデータにのみアクセスできます。有効なアクセス レベルが割り当てられていないユーザーは、アプリケーションを開くことができません。
セクション アクセスがリロード シナリオで使用される場合、スケジューラ サービス ユーザーである INTERNAL\SA_SCHEDULER は、リロードを実行するために ADMIN アクセス権を必要とします。例:
INTERNAL\SA_SCHEDULER アカウントを使用したくない場合は、別の方法について なりすましを使用したデータのリロード を参照してください。
テンプレート アプリケーションの オンデマンド アプリケーション生成 (ODAG) シナリオで セクション アクセス が使用されている場合、INTERNAL\SA_API ユーザーは、セクション アクセス テーブルに ADMIN として含まれる必要があります。例:
USERID
Qlik Sense ドメイン名とユーザー名に対応する文字列が含まれます。Qlik Sense はプロキシ サービスからログイン情報を取得し、その情報をこの項目の値と比較します。
ワイルドカード文字 (*) は、セキュリティ テーブルで指定された追加の条件に従って、すべてのユーザーとして解釈されます。例えば、次のセキュリティ テーブルでは、Qlik Sense Tenant Admins にいるユーザーは、リストされているすべての REDUCTION 値を確認できます。
NTNAME
WindowsNT ドメインのユーザー名またはグループ名に対応する文字列を含む必要がある項目。別の認証システムを使用する場合は、認証されたユーザーの名前を含める必要があります。Qlik Sense は OS からログイン情報を取得し、その情報をこの項目の値と比較します。
GROUP
Qlik Sense 内のグループに対応する文字列を含みます。Qlik Sense は、プロキシ サービスから提供されるユーザーを、このグループに基づいて解決します。
SERIAL
プラットフォームに対応する文字列が含まれます。項目に文字列 ‘QLIKSENSE’ またはワイルドカード ‘*’ が含まれている場合、セキュリティ テーブルの他の項目に応じて、アクセスが許可される場合があります。
OMIT
この特定のユーザーに対して省略する項目の名前を含みます。ワイルドカードを使用することができます。空にすることもできます。
アプリケーションへのユーザー アクセスの管理
もっとも単純な形式のセクション アクセスを使用して、特定のユーザーによるアプリケーションへのアクセスを制限できます。 除外によって、ユーザーはアプリケーションへのアクセスを拒否されます。つまり、特定のユーザーの ID がセキュリティ テーブルに記載されていない限り、そのユーザーはアプリケーションにアクセスできません。このルールの唯一の例外は、セキュリティ テーブルのいずれかの行でワイルドカード (*) が USERID 項目に割り当てられている場合です。この場合、ワイルドカードは、認証済みのすべてのユーザーがアプリにアクセスできることを意味します。以下に、ユーザー ID のリストを含むセキュリティ テーブルの例を示します。
アプリケーション内の特定のデータへのユーザー アクセスの管理
動的データ削減は、ユーザーがアプリケーション自体へのアクセスを許可された後、Qlik Sense アプリケーション内のデータ テーブルの行と列へのアクセスを制限します。
行レベルのデータへのアクセスの管理
ロード スクリプトのアクセス セクションのセキュリティ テーブルにデータ削減列を追加して、行レベルのデータへのアクセスを制限します。セクション アクセス データを実際のデータにリンクすることにより、特定のレコード (行) をユーザーから隠すことができます。表示されるまたは除外されるデータの選択は、スクリプトの セクション アクセス 部分とセクション アプリケーション部分に 1 つ以上の縮小項目に共通の名前を付けることで制御されます。ユーザー ログインの後、Qlik Sense はアクセス セクションの削減項目にある選択と、同じ項目名 (項目名は大文字で入力する必要があります) のアプリケーション セクションにある任意の項目を照合します。選択が行われると、Qlik Sense は選択によって除外されたすべてのデータをユーザーに表示しなくなります。データ削減列の項目値としてワイルドカード (*) が使用されている場合、ユーザーは、セキュリティ テーブル内で選択されているすべての削減項目に関連付けられたレコードにアクセスできると解釈されます。
Qlik Sense がセクション アクセスの削減項目をデータ モデルの項目と比較する際、次のような動作が予想されます:
データモデルの項目値とセクション アクセスの削減項目が一致した場合、アプリケーションが開き、指定したユーザーの一致に関連付けられたデータが表示されます。その他のデータは非表示となります。
削減項目値がデータ モデルのどの値とも一致しない場合、アプリケーションは通常の USER に対して開きます。ただし、ADMIN とマークされたユーザーに対しては削減されずに開きます。
アクセスの組み合わせが意図通りにならないため、セクション アクセスで複数の削減項目を使用することは推奨されません。
データ削減列のワイルドカード文字 * は、セキュリティ テーブルのすべての値のみを参照します。セクション アプリケーションに、セキュリティ テーブルの削減列には存在しない値がある場合、その値は削減されます。
ユーザー ID に基づく行レベルのデータ削減
この例では、現在、項目 REDUCTION (大文字) が セクション アクセス とセクション アプリケーションの両方にあります (項目値はすべて大文字)。2 つの項目は通常別のもので分かれていますが、セクション アクセス を使用すると、この項目はリンクし、ユーザーに表示されるレコードの数が減ります。
結果は次のようになります。
- ユーザー ADMIN は、REDUCTION = 1 または REDUCTION =2 のときにその他のユーザーに表示されるレコードとすべての項目を見ることができます。
- User A は、すべての項目と、REDUCTION=1 に関連付けられたレコードを見ることができます。
- User B は、すべての項目と、REDUCTION=2 に関連付けられたレコードを見ることができます。
- ユーザー C は、REDUCTION = 1 または REDUCTION =2 のときにその他のユーザーに表示されるレコードとすべての項目を見ることができます。
列レベルのデータへのアクセスの管理
OMIT システム 項目を セクション アクセス スクリプトのセキュリティ テーブルに追加して、行レベルのデータへのアクセスを制限します。次の例は、行のデータ削減が既に行われている前の例に基づいています。
ユーザー ID に基づく列のデータ削減
セクション アクセス の項目 OMIT で、ユーザーに表示しない項目を定義します。
結果は次のようになります。
- ユーザー ADMIN は、REDUCTION が 1 または 2、3 の場合にその他のユーザーに表示されるレコードとすべての項目を見ることができます。
- User A は、すべての項目と、REDUCTION=1 に関連付けられたレコードを見ることができます。
- User B は、NUM 以外のすべての項目と、REDUCTION=2 に関連付けられたレコードを見ることができます。
- User C は、ALPHA 以外のすべての項目と、REDUCTION=3 に関連付けられたレコードを見ることができます。
ユーザー グループへのアクセスの管理
セクション アクセス には、グループ メンバーシップを通じてユーザーに表示されるデータの範囲を制限するオプションがあります。ユーザー グループを使用してデータを制限するには、アクセス セクションのセキュリティ テーブルに GROUP 項目名を追加し、GROUP 項目の値を定義します。
ユーザー グループに基づくデータ削減
結果は次のようになります。
- ADMIN グループに属するユーザーはすべての項目を表示でき、この例では REDUCTION が 1、2、または 3 の場合に他のユーザーが表示できるレコードのみを表示できます。
- A グループに属するユーザーは、すべての項目において REDUCTION=1 に関連付けられたデータを見ることができます。
- B グループに属するユーザーは、REDUCTION=2 に関連付けられたデータを見ることができますが、NUM 項目のデータは見ることができません。
- C グループに属するユーザーは、REDUCTION=3 に関連付けられたデータを見ることができますが、ALPHA 項目のデータは見ることができません。
- GROUP1 グループに属するユーザーは、すべての項目において REDUCTION=3 に関連付けられたデータを見ることができます。
Qlik Sense はユーザーを UserID と比較し、そのユーザーがテーブル内のグループに含まれているか確認します。 ユーザーがアクセス権のあるグループに属する場合、あるいはユーザーが一致した場合、アプリケーションにアクセスできます。
なりすましを使用したデータのリロード
既定では、内部システム アカウント SA_SCHEDULER がリロード タスクの実行に使用されます。このアカウントには昇格された権限があり、技術的には、任意のデータ ソースを使用できます。ただし、QMC には、内部システム アカウントではなくアプリケーション所有者の権限を使用してリロード タスクを実行するための実装を使用する設定があります。この設定を構成すると、SA_SCHEDULER ではなくアプリケーション所有者がリロードに使用されます。つまり、セクション アクセス テーブルに追加するのは SA_SCHEDULER ではなく、アプリケーション所有者になります。タスク チェーン内において、アプリケーションは異なる所有者およびソースに対する権限を有することができますが、これは各所有者のアクセス権に依存します。詳細については、[サービス クラスター] を参照してください。
マルチクラウド環境におけるユーザー アクセスの管理
Qlik Sense マルチクラウド環境には、ユーザー認証メカニズムが混在しています。通常、Qlik Sense Enterprise on Windows を使用すると、セクション アクセス セキュリティ テーブルの USERID がプロキシ サービスによって検証されます。Qlik Cloud では、ID プロバイダーがその認証のロールを引き受けます。したがって、Qlik Sense Enterprise on Windows などのオンプレミス環境用に設定された セクション アクセス は、クラウド環境では機能しません。
OIDC または SAML ID プロバイダー (Qlik IdP またはカスタム IdP) を Qlik Cloud で使用する場合、 [subject claim] はログイン時のユーザー識別に使用されます。セクション アクセス では、セキュリティ テーブルの USERID 項目の値が、[subject claim] の値と比較されます。テナントを設定するとき、SAM アカウント名が ID プロバイダーの [subject claim] にマッピングされていることを確認してください。したがって、例えば、SAM アカウント名が AD_DOMAIN\Dev の場合、[subject claim] を AD_DOMAIN\Dev に設定します。IdP の [subject claim] の値を確認する場合、ブラウザーのテナント URL に「/api/v1/diagnose-claims」を追加します (例: your-tenant.us.qlikcloud.com/api/v1/diagnose-claims)。JSON 応答では、[subject claim] は [sub] と呼ばれます。
SAM アカウント名を使用できない場合は、別のユーザー認証方法があります。メール アドレスは異なる環境でも変更されない傾向があるため、セキュリティ テーブルでは、USERID の代わりに USER.EMAIL 項目を使用できます。セキュリティ テーブルがどのように見えるかの例を次に示します。
| ACCESS | UserId: | USER.EMAIL | コメント | COUNTRY |
|---|---|---|---|---|
| ユーザー | ABC\Joe | * | Access-on-prem | United States |
| ユーザー | * | joe.smith@example.com | Access-in-cloud | United States |
| ユーザー | ABC\Ursula | * | Access-on-prem | ドイツ |
| ユーザー | * | ursula.schultz@example.com | Access-in-cloud | ドイツ |
| ユーザー | ABC\Stefan | * | Access-on-prem | スウェーデン |
| ユーザー | * | stefan.svensson@example.com | Access-in-cloud | スウェーデン |
承認スクリプト:
各ユーザーには 2 つのレコードがあることに注意してください。1 つはオンプレミス アクセス用で、もう 1 つはクラウド アクセス用です。ワイルドカードは、関連する認証項目のみが使用されることを保証します。この例では、COUNTRY がデータ削減項目として使用されています。
セクションアクセスと Insight Advisor Chat の使用
セクション アクセスを使用するアプリケーションを Insight Advisor Chat で利用できるようにするには、次のサービス ユーザーがセクション アクセス スクリプトで管理者アクセス権を持っていることを確認する必要があります。
INTERNAL/sa_repository: これにより、ユーザー アクセスを制御するためのリポジトリ サービスでセクション アクセス スクリプトを利用できるようになります。
INTERNAL/sa_scheduler: これにより、アプリケーションは QMC タスクを使用してリロードできます。
アプリケーション名、項目名、またはマスター アイテム名に機密情報がある場合、セクション アクセスを使用するアプリケーションを Insight Advisor Chat で利用できるようにすることで、これらが公開される可能性があります。クエリのアプリケーションの提案には、ユーザーがアクセスできるストリーム内のアプリケーションが含まれます。 これらには、ユーザーがアプリケーションのセクション アクセスでアクセスできないアプリケーションが含まれる場合があります。ただし、これらのアプリケーションを選択しても何も起こりません。[軸] または [メジャー] をクリックして、セクション アクセスを使用してアプリケーションから利用可能なアイテムを表示すると、ユーザーにはアクセスできないアイテムが表示される場合があります。ただし、これらのアイテムをクリックしても、ユーザーにデータは提供されません。
例:
これらのユーザーがセクション アクセス スクリプトに入ると、アプリケーションを Insight Advisor Chat で利用できるようになります。アプリケーションがリロードされると、アプリケーションを Insight Advisor Chat で利用できるようになります。
セクション アクセスでの QVD の使用
QVD ファイルは、通常のロード、または最適化されたロードとして読み取ることができます。最適化されたロードとは、ロード中にデータ変換が行われず、WHERE 句にフィルターがない場合のことです。
セクション アクセスで QVD を使用する場合、最適化されたロードは機能しません。QVD ファイルを使用してセクション アクセスにデータをロードする場合は、QVD ファイルを展開する必要があります。QVD ファイルを展開する最も簡単な方法は、データをロードするときにフォーマットを変更することです。
次の例では、データのフォーマットが行われていないため、QVD ファイルは展開されません。
データ フォーマットなしの非稼働例 (最適化されたロード)
代わりに、たとえば upper() 関数を使用してデータをフォーマットし、QVD ファイルを展開できます。
データ フォーマットありの稼働例
Load ステートメントに Where 1=1 ステートメントを追加することもできます。
データ フォーマットありの別の稼働例
セクション アクセス を使用するためのガイドラインとヒント
セクション アクセス について知っておくべきいくつかの重要な事実と役立つヒントを次に示します。
- アクセス セクション内の LOAD または SELECT ステートメントにリストするすべての項目名と値は、すべて大文字で記述する必要があります。データベース内の小文字を含む項目名は、LOAD または SELECT ステートメントで読み取る前に、Upper 関数で大文字に変換されます。
詳細については、「Upper スクリプトおよびチャート関数」を参照してください。
- 項目名として一覧に表示される セクション アクセス システム 項目名をデータ モデルで使用できません。
- 公開済みアプリケーションの開発コピーに変更を加えた場合、セクション アクセス制御が公開済みアプリケーションに適用される前に、開発コピーを再公開する必要があります。
- スナップショットには、スナップショットを取得するユーザーのアクセス権限に従ってデータが表示され、そのスナップショットは 1 つのストーリーで共有することができます。ただし、ユーザーがアプリケーションでライブ データを見るためにストーリーからビジュアライゼーションに戻ると、それらのスナップショットは、それ独自のアクセス権限によって制限されます。
- セクション アクセスを使用する場合、または極秘データを扱う場合は、値が色構成により公開される可能性があるため、マスター軸の値に色を割り当てないでください。
- 制限されているデータを公開しないようにするには、アプリケーションを公開する前に、セクション アクセス設定が含まれるすべての添付ファイルを削除します。添付したファイルは、アプリケーションが公開されるときに含まれます。公開済みアプリケーションがコピーされると、添付ファイルがそのコピーに含まれます。ただし、添付したデータ ファイルにセクション アクセス制限が適用されている場合、ファイルがコピーされるときにセクション アクセス設定が保持されません。そのため、コピーしたアプリケーションのユーザーは、添付ファイルのすべてのデータを表示できます。
- ワイルドカード (*) は、テーブル内の項目に含まれるすべての値として解釈されます。スクリプトのアクセス セクションでロードされたテーブル内のシステム項目 (USERID、GROUP) の 1 つで使用すると、この項目のすべての可能な値 (リストされていない値も含む) として解釈されます。
- セキュリティ項目は、さまざまなテーブルに配置できます。
- QVD ファイルからデータをロードする場合、Upper 関数はロード速度を遅くします。
- セクション アクセスを設定することで、アプリケーションから自分自身をロックしている場合、データなしでアプリケーションを開き、データ ロード スクリプトでアクセス セクションを編集することができます。そのためには、データ ロード スクリプトの編集およびリロードにアクセスできる必要があります。
詳細については、「データなしでアプリケーションを開く」を参照してください。
- バイナリ ロードを使用すると、新しい Qlik Sense アプリケーションにアクセス制限が継承されます。