セキュリティ ルールのしくみ
Qlik Sense Enterprise on Windows では、セキュリティル ールを使用して、アプリやストリームなどのリソースへのアクセスをユーザーに許可できます。すべてのセキュリティ ルールは本質的に包括的です。つまり、常にユーザーにリソースへのアクセスを許可し、ユーザーのアクセスを拒否するルールを作成することはありません。セキュリティ ルールの目的は、通常、一部のユーザーのみにリソースへのアクセスを許可することです。適切なユーザーだけがリソースにアクセスできるようにすることは、セキュリティ ルール管理者 (SecurityAdmin) のタスクです。
2 つの簡単なセキュリティ ルール
簡単なスタートとして、Qlik Sense Enterprise on Windows、 StreamEveryone、StreamEveryoneAnonymous のインストールに含まれている 2 つのセキュリティ ルールを見てみましょう。
[ID] セクションでは、ルールが無効になっていないため、ルールがアクティブであることがわかります。ルールの目的は、[説明] ボックスに記載されています。
[基本] セクションでは、リソース フィルターが特定のストリームを特定します。フィルターの最初の部分はリソース タイプ Stream を識別し、2 番目の部分はグローバル一意識別子 (GUID) です。リソース フィルターはルールの範囲を示します。ここで、ルールがカバーするエンティティのタイプを定義します。リソース フィルターを使用すると、例えば、ユーザーが表示できるアプリを定義するルールと比較して、ユーザーが表示できるデータ接続に影響を与えるさまざまなルールのセットを設定できます。
参照先: リソース フィルターの定義
ユーザーが実行できるアクションは Read と Publish です。すべてのユーザーは、アプリやアプリ オブジェクトなど、ストリーム内のコンテンツにアクセスできます。ユーザーは、アプリとアプリ オブジェクトをストリームに公開することもできます。
[詳細] セクションでは、条件は [!userIsAnonymous()] です。このルールは匿名ユーザーを除外するため、[説明] の記述はすべてのユーザーに当てはまるわけではありません。[IsAnonymous()] 関数の詳細については、IsAnonymous を参照してください。
コンテキスト: このルールは、ハブと QMC から Everyone ストリームにアクセスするユーザーの両方に適用されます。
匿名ユーザーはルール StreamEveryone を介してストリーム Everyone にアクセスできないため、別のルールが必要です。
ルールは StreamEveryoneAnonymous で、3 つの例外を除いて StreamEveryone ルールに似ています。
-
実行できる唯一のアクションは Read であり、Publish は不可能です。
-
条件は [userIsAnonymous()] です。これは、ルールが匿名ユーザーにのみ適用されることを意味します。
-
コンテキストは [ハブでのみ] です。匿名ユーザーは QMC にアクセスできません。
Everyone ストリームに 2 つのルールが必要なのは、アクションとコンテキストの違いによるものです。それらの違いがなかったら、StreamEveryone で十分だったでしょう。
カスタム プロパティを使用したストリームとセキュリティ ルールの作成
Qlik Sense Enterprise on Windows でインストールされているルールが多数ある場合でも、組織の特定のニーズを満たす新しいセキュリティルールを作成する必要があります。セキュリティ ルールを作成するときは、カスタム プロパティまたはユーザー ロールを使用して管理を容易にすることができます。 ここでは、カスタム プロパティを紹介します。ユーザー ロールについては、セキュリティ ルールのユーザー ロールの定義 を参照してください。
カスタム プロパティを使用すると、セキュリティ ルールを変更せずに、ユーザー アクセスを簡単に追加または削除できます。この例では、カスタム プロパティはまだ定義されていません。
カスタム プロパティの定義
[財務] と [営業] の 2 つのユーザー グループが、四半期レポート アプリが公開される [四半期報告書] と呼ばれるストリームにアクセスする必要があると想定します。これらのグループはまだユーザー ディレクトリで定義されていないため、定義する必要があります。これを行うには、[財務] と [営業] の値を使用してカスタム プロパティを作成します。
カスタム プロパティの新規作成
値が [財務] と [営業] の [部門] というカスタム プロパティを作成します。
-
QMC スタート ページで、[カスタム プロパティ] を選択します。
-
[新規作成] をクリックします。
カスタム プロパティ編集ページが開きます。
-
名前 [部門] を入力します。
-
[リソース タイプ] で、[ストリーム] および [ユーザー] を選択します。
これらは、セキュリティ ルールに必要なリソースです。
-
[値] で [新規作成] をクリックします。
-
値 [財務] を追加し、[新規作成] をクリックします。
-
値 [営業] を追加します。
-
[適用] をクリックします。
[部門] という新しいカスタム プロパティが、[財務] と [営業] の 2 つの値で作成され、それぞれのグループのユーザーに割り当てます。
カスタム プロパティ値をユーザーに割り当て
-
QMCで、[ユーザー] を開きます。
-
列セレクター () を開き、[@Department] を選択します。これは、リストの最後の項目である可能性があります。
-
[財務] グループに追加するユーザーを選択します。複数選択が可能です。
-
[編集] を選択します。
-
[プロパティ] セクションで、[カスタム プロパティ] が選択されていることを確認します。
[カスタム プロパティ] セクションが表示され、[部門] はオプションです。
-
[部門] のボックスをクリックし、値 [財務] を選択します。
-
[財務] のすべてのユーザーの値が [財務] になるまで、このステップを繰り返します。
-
[適用] をクリックします。
-
[営業] グループのメンバーに対して対応するアクションを実行します。
これで、[財務] と [営業] の 2 つのカスタム プロパティ グループができました。これらは、いくつかの異なるセキュリティ ルールで使用できます。ユーザーは簡単に追加または削除できます。カスタム プロパティの値として部門を追加することもできます。
ストリームとセキュリティ ルールの作成
これでカスタム プロパティ値が得られ、ストリームの [四半期報告書] と、ユーザー グループにストリームへのアクセスを許可するセキュリティ ルールを作成できます。
-
QMC スタート ページから [ストリーム] に移動し、[新規作成] をクリックします。
-
ストリームに [ 四半期報告書] という名前を付けます。
-
[適用] をクリックします。
セキュリティ ルール エディタが表示されます。セキュリティ ルールの作成をキャンセルする場合、ストリームにはセキュリティ ルールがなく、すべてのユーザーがそのストリームにアクセスできます。それはおそらくあなたが望むものではありません。
-
セキュリティ ルールに [StreamQuarterlyReport_Read] という名前を付けます。 (セクション [ID] を選択する必要があります)
-
必要に応じて、説明を追加します。
-
[リソース フィルター] は、一意のストリーム ID で既に存在しています。
-
[アクション] の場合は、[読み取り] を保持したまま、[公開] の選択をクリアします。
-
ルール エディタで、画像に示すように、user、@Department、=、value、Finance を選択します。
- [ルールの検証] をクリックして、ルール構文が正しいことを確認します。ルールのロジックはテストされていません。
-
[適用] をクリックして、ルールを保存します。
[営業] グループに何が起こったのか疑問に思われるかもしれません。そのユーザー グループを追加するには、さまざまな方法があります。[条件] ボックスで直接変更を加えることができますが、最も安全な方法はルール エディタを使用することです。
- [関連するアイテム] で、[セキュリティ ルール] を選択します。
- [StreamQuarterlyReport_Read] をダブルクリックします。
-
[基本] セクションで、ルール エディタの [+] をクリックします。
-
画像に示すように、演算子 [OR] を選択してから、user、@Department、=、value、Sales を選択します。
[条件] ボックスの文字列は、ルール エディタでの変更を反映するように更新され、次のようになります: ((user.@Department="Finance" or user.@Department="Sales"))。代わりに、[条件] ボックスで直接変更を加えた場合は、それに応じてルール エディタが更新されます。
-
[適用] をクリックします。
[営業] グループの別のオプションは、[営業] グループに関連する可能性のあるアクション [読み取り]、[公開]、[更新] を使用して個別のセキュリティ ルールを作成することです。
新しいルールの監査
新しいセキュリティ ルールが適切なユーザーに適切な種類のアクセスを許可していることを確認することが重要です。
-
引き続き [ストリーム: 関連するアイテム] ページで、[ルールの監査] をクリックして、新しく作成したルールを編集および監査するためのページを開きます。
-
ストリームの監査が設定されているので、[監査] をクリックするだけです。
新しいセキュリティ ルールがユーザー ディレクトリに対してテストされるようになり、[営業] および [財務] のユーザーのリストに、ストリームへの読み取り権限があることを示す [R] が表示されるはずです。
既存のグループのカスタム プロパティを使用したストリームとセキュリティ ルールの作成
多くの場合、会社には Active Directory などのユーザー ディレクトリがあり、カスタム プロパティで使用して、すべてのユーザーにストリームへのアクセスを許可できます。
カスタム プロパティの新規作成
[ADGroupStream_Read] というカスタム プロパティを作成します。
-
QMC スタート ページで、[カスタム プロパティ] を選択します。
-
[新規作成] をクリックします。
カスタム プロパティ編集ページが開きます。
-
[ADGroupStream_Read] という名前を入力します。
-
[リソース タイプ] で、[ストリーム] および [ユーザー] を選択します。
これらは、セキュリティ ルールに必要なリソースです。
-
[適用] をクリックします。
この場合、特定のカスタム プロパティ値は必要ありません。すべてのユーザーは同じユーザー ディレクトリに属しているため、セキュリティ ルールでカスタム プロパティ名を使用できます。そのディレクトリのメンバーになると、ストリームへのアクセスが許可されます。
ディレクトリ サービスのプロパティの詳細については、プロパティ を参照してください。
セキュリティ ルールの作成
これでカスタム プロパティが作成され、ユーザーにストリーム [四半期報告書] へのアクセスを許可するセキュリティ ルールを作成できます。
-
QMC スタート ページから [セキュリティ ルール] に移動し、[新規作成] をクリックします。
-
セキュリティ ルールに「ADGroupStreamQuarterlyReport_Read」という名前を付けます。
-
[リソース フィルター]に Stream_* と入力します。
-
[アクション] で、[読み取り] を選択します。
-
ルール エディタで、画像に示すように、#Stream、@ADGroupStream_Read、=、user、group を選択します。
-
[コンテキスト] で、[Only in hub] を選択します。
このルールは、ハブからストリームにアクセスするユーザーにのみ適用されます。
-
[適用] をクリックして、ルールを保存します。
新しいセキュリティ ルールが作成され、Active Directory グループのすべてのユーザーがストリーム [四半期報告書] への読み取りアクセス権を持ちます。
セキュリティ ルールのユーザー ロールの定義
ユーザー ロールは、カスタム プロパティを使用せずにルール管理を容易にする方法です。ロールを定義し、それらをユーザーに割り当てます。ロールをいくつかのセキュリティ ルールで使用して、その役割を持つすべてのユーザーにアクセスを許可できます。
ユーザー ロールを使用したストリームおよびセキュリティ ルールの作成
開発者用とテスター用の 2 つのユーザー ロールが必要であると仮定します。これらの役割には異なるアクセス ニーズがあるため、2 つのセキュリティ ルールが必要です。
テスターと開発者向けのセキュリティ ルールの定義
また、テスターがストリームへの読み取りアクセス権を持っていれば十分であると想定します。
-
QMC スタート ページから [ストリーム] に移動し、[新規作成] をクリックします。
-
ストリーム に [TestStream1] という名前を付けます。
-
[適用] をクリックします。
[セキュリティ ルールの編集] ページが表示されます。セキュリティ ルールの作成をキャンセルする場合、ストリームにはセキュリティ ルールがなく、すべてのユーザーがそのストリームにアクセスできます。それはおそらくあなたが望むものではありません。
- [プロパティ] で、[ID] を選択します。
-
[名前] に、Tester_<ストリームの GUID> ([リソース フィルター] からの GUID) と入力します。
-
[アクション] の場合は、[読み取り] を保持したまま、[公開] の選択をクリアします。
-
ルール エディタで、画像に示すように、user、roles、=、value を選択し、Tester を手動で入力します。
[リソース フィルター]、[条件]、[アクション] 項目で定義されているアクセス権は、ユーザー ロール [テスター] に適用されます。この役割は、ユーザーに適用できるようになります。
-
[ルールの検証] をクリックして、ルール構文が正しいことを確認します。ルールのロジックはテストされていません。
-
[適用] をクリックして、ルールを保存します。
-
[関連するアイテム] で、[セキュリティ ルール] をクリックします。
情報メモここには、この特定のストリームに関連付けられているすべてのセキュリティ ルールがあります。 -
[関連付けルールの作成] をクリックして、同じストリームに対して別のルールを作成します。今回は開発者向けです。
-
[名前] に、Developer_<ストリームの GUID> ([リソース フィルター] からの GUID) と入力します。
-
[アクション] では、[ 読み取り]、[更新]、[削除]、[公開] をすべて選択する必要があります。
-
ルール エディタで、画像に示すように、user、roles、=、value を選択し、Developer を手動で入力します。
この役割は、ユーザーに適用できるようになります。
-
[ルールの検証] をクリックして、ルール構文が正しいことを確認します。ルールのロジックはテストされていません。
-
[適用] をクリックして、ルールを保存します。
これで、いくつかの異なるセキュリティ ルールで使用できる 2 つのユーザー ロール、[テスター] と [開発者] ができました。ユーザーは簡単に追加または削除できます。同じ方法で、追加のユーザー ロールを作成できます。
ユーザーへの役割の割り当て
-
QMCで、[ユーザー] を開きます。
-
[テスター] の役割を希望するユーザーを選択します。複数選択が可能です。
-
[編集] をクリックします。
-
[ロールの追加] をクリックして、リストから [テスター] を選択します。
-
[適用] をクリックします。
-
[ユーザー] をクリックして、ユーザーの概要を開きます。
[管理者ロール] 列で、ユーザーの役割が [テスター] であることを確認します。
-
[開発者] の役割を持つ必要があるユーザーに対して、対応するアクションを実行します。
新しいルールの監査
新しいセキュリティ ルールが適切なユーザーに適切な種類のアクセスを許可していることを確認することが重要です。
-
[ストリーム] に移動し、[TestStream1] をダブルクリックします。
[ストリームの編集] ページが表示されます。
-
[関連するアイテム] で、[セキュリティ ルール] をクリックします。
このストリームに関連付けられているセキュリティ ルールが表示されます。
-
[Tester_<GUID>] を選択し、[ルールの監査] をクリックします。
([Developer_<GUID>] を選択することもできます。これは、対象となるのと同じストリームです)
-
[監査] をクリックします。
このストリームのセキュリティ ルールはユーザー ディレクトリに対してテストされるようになり、テスターが読み取りアクセスを示す [R] のみを持つユーザーと、[RUDP] ([読み取り]、[更新]、[削除]、[公開]) を持つ開発者のリストが作成されるはずです。
ルール階層
セキュリティ ルールを設計するときは、さまざまなリソース フィルター間の階層関係を理解することが重要です。このような関係を認識していないと、ルールが意図したとおりに機能しなくなる可能性があります。多くの場合、アイテムへのアクセスには複数のセキュリティ ルールが含まれます。アプリを使用できるようにするには、そのアプリへの読み取りアクセス権を持っているだけでは不十分です。アプリが公開されているストリームへのアクセス権も必要です。 アプリ内のアプリ オブジェクトも編集する場合は、そのアプリ オブジェクトに更新権限を付与する追加のルールが必要になります。
これまでに達成したことを検討し、ユーザーにストリームへのアクセスを許可すると、 ユーザーがアプリを開いてアプリ オブジェクトを表示する前に、より多くのセキュリティ ルールが必要になるようです。しかし、それは必要ではなく、その理由はそのようなルールが既に存在しているからです。前述のように、Qlik Sense Enterprise on Windows にはいくつかのセキュリティ ルールがインストールされています。これらのルールの一部は、システムが機能するために不可欠であるため、編集または削除できません。他のルールは便宜上存在しますが、この場合、セキュリティ ルール Stream が存在すると便利です。これはルールがどのように見えるかです。
ルールの説明には、「ユーザーは、公開先のストリームへの読み取りアクセス権がある場合、リソースを表示する必要があります」と記載されています。ストリームへの読み取りアクセス権がある場合は、このルールを通じて、そのストリームに追加されたコンテンツも表示できます。このルールが存在するため、ユーザーにアプリやアプリ オブジェクトへの読み取りアクセスを許可するルールを作成する必要はありません。すべて処理されています。
[リソース フィルター] の値は [App*] であることに注意してください。[App*] 値は、アプリとアプリ オブジェクトの両方をカバーします。テンプレートからルールを作成するときのアプリ アクセスの既定値は [App_*] であり、アプリ オブジェクトではなくアプリのみが対象となります。
ルールの条件は少し難しく見えるかもしれませんが、1 つずつ見てみましょう。
最初の部分: resource.resourcetype = "App" and resource.stream.HasPrivilege("read")。
この条件では、アプリが公開されているストリームへの読み取りアクセス権が必要です。読み取りアクセス権がある場合、アプリへの読み取りアクセス権が付与されます ([アクション] セクションに記載されています)。
2 番目の部分: or ((resource.resourcetype = "App.Object" and resource.published ="true" and resource.objectType != "app_appscript" and resource.objectType != "loadmodel") and resource.app.stream.HasPrivilege("read"))
条件のこの部分は、アプリ オブジェクトが公開されているストリームへの読み取り権限を持っていることにも依存します。 読み取り権限がある場合、アプリ オブジェクトが公開されている場合、アプリ オブジェクト ([app_appscript] と [loadmodel] を除く) への読み取りアクセス権が付与されます。
Stream などの一般的なセキュリティ ル ールを設定することは、ストリーム内のコンテンツへのアクセス権の付与を簡素化するための便利なソリューションです。ただし、アプリまたはアプリ オブジェクトへのアクセスを制限する場合は、特定の条件で新しいルールを作成し、アクセス権を付与する既存のルールを無効にする必要があります。ユーザーがアクセスできるように、リソースへのアクセス権をユーザーに付与するセキュリティ ルールが 1 つあれば十分であることを忘れないでください。アクセス権が付与されていない別のルールが存在する場合でも、リソースにアクセスできるようになります。
既存のルールに基づいての新しいルールの作成
Qlik Sense Enterprise on Windows には、既定で含まれているいくつかのセキュリティ ルールが付属しています。ルールには、2 つのタイプがあります。(Default および Read only) が保存されます。Read only ルールは、システムが機能するために不可欠であるため、編集または削除できません。Default ルールは編集できます。編集すると、ルールタ イプが 3 番目のタイプ Custom に変更されます。既存の Default ルールを編集する場合は、コピーを作成して編集することを強くお勧めします。後で既存のルールが必要になる場合があります。
パフォーマンス
セキュリティ ルールを設計するときは、パフォーマンスについて考慮することが重要です。アプリ、ストリーム、セキュリティ ルールの数が増えると、ハブの起動が遅くなり、応答時間が長くなるため、パフォーマンスが問題になる可能性があります。パフォーマンスに役立つセキュリティ ルールを設計できるようにするには、ルールの評価プロセスを理解する必要があります。
評価手順の概要については、評価フロー を参照してください。
QMC のベスト プラクティスと効率的なセキュリティ ルールを作成するためのガイドラインについては、QMC パフォーマンス – ベスト プラクティス を参照してください。
パフォーマンスの詳細については、[ルールを使用した Qlik Sense Enterprise の最適化] を参照してください。