メイン コンテンツをスキップする

セキュリティ ルールの例: ある顧客のケース

このページ上

セキュリティ ルールの例: ある顧客のケース

以下の例は、セキュリティ ルールに関する顧客のニーズに合わせて柔軟なソリューションが開発された顧客のケースを示しています。

ユーザー ディレクトリ構造

顧客は次のユーザー ディレクトリ構造を持っており、それを再利用する必要がありました。

プロジェクト

ユーザー ディレクトリ構造の例 1
ロール アクセス コンテンツ
開発者 フォルダの接続 Excel ファイル
管理者 QMCアクセス アプリ、アプリ オブジェクト、タスク
オーディエンス 1 ストリーム ダッシュボード 1、ダッシュボード 2、ダッシュボード 3
オーディエンス 2 ストリーム ダッシュボード 4、ダッシュボード 5、ダッシュボード 6

この構造は顧客のQlik Sense展開において複数のプロジェクトを持ち、その展開が複数のロールで構成されていることを示しています。

  • 開発者: フォルダ接続を使って、このプロジェクトのための資料を作成することを許可されている。
  • 管理者: プロジェクトのリソース管理を許可されているスーパー ユーザーの一種。
  • オーディエンス: 各オーディエンスに関連付けられたストリームを通じてダッシュボードの定義済みセットの使用を許可されているユーザー

セキュリティ ロールとプロジェクト グループの追加

次のテーブルでは元のユーザー ディレクトリ構造を再利用します。ただし 2 つの新しいプロパティとして、セキュリティ ロールとプロジェクト グループを追加します。

プロジェクト (proj_X)

ユーザー ディレクトリ構造の例 2
ロール (セキュリティ ロール) プロジェクト (プロジェクト グループ) コンテンツ
開発者 (role_dev) DC_ProjectX (projX_dev) Excel ファイル
管理者 (role_admin) QMCアクセス (projX_admin) アプリ、アプリ オブジェクト、タスク

オーディエンス 1 (role_ext)

(ロールなし=読み取りアクセス)

Proj1_Aud1 (projX_aud1) ダッシュボード 1、ダッシュボード 2、ダッシュボード 3

オーディエンス 2 (role_ext)

(ロールなし=読み取りアクセス)

Proj1_Aud2 (projX_aud2) ダッシュボード 4、ダッシュボード 5、ダッシュボード 6

新しいプロパティはさまざまなグループを定義するために使用されます。

  • セキュリティ ロール: ユーザーが実行できる操作 (アプリの作成、シートの追加、データのエクスポートなど) を定義します。
  • プロジェクト グループ: ユーザーがアクセスを許可されるプロジェクトとプロジェクト リソースを決定します。

新しいプロパティの実装

プロパティ グループは、プロジェクトとリソースへのアクセス権を付与するカスタム プロパティを使用して実装されます。セキュリティ ロールはユーザー ディレクトリで実装されます。

このアプローチには、以下のような多くのメリットがあります。

  • セキュリティ ポリシーを記述するのに必要なルールの数が減ります。
  • ルールを徐々に変更できます。システムは属性を通じて構成され、ルールの変更が求められるのは、セキュリティの変更が必要なときです。
  • ユーザー管理とアクセス許可のプロビジョニングがユーザー ディレクトリで管理されます。

作成する必要のあるルール

リソースのアクセスには 1 つのルールが必要です。

新規リソース アクセス ルール
設定
名前 ResourceAccess

リソース フィルター

Stream_*, DataConnection_*
条件 ((user.group=resource.@GroupAccess))
アクション Read

このルールは、リソースのカスタム プロパティのGroupAccessにユーザーのグループ名が含まれている場合、そのユーザーにリソースへのアクセス権を付与します。これを有効にするには、すべてのユーザー グループを含んだ「GroupAccess」という名前のカスタム プロパティが必要です。

The Edit custom property screen. The Name value is set to GroupAccess, and all user groups are added.

このルールはストリームとデータ接続に関連付けることができます。このルールによって、カスタム プロパティを使用して、グループのユーザーにストリームへのアクセス権を付与することが可能となります。

The edit stream screen. The Name field contains Proj1_Aud1.

この例では、proj1_aud1グループが、Proj1_Aud1ストリームへのユーザー ディレクトリ アクセスに追加されました。他のグループでもアクセス許可が必要な場合、そのグループをカスタム プロパティに追加できます。

次のルールを作成して、ストリームを管理できる必要のある人を定義します。

ストリーム管理ルール
設定
名前 TeamAdminRead
リソース フィルター Stream*,App*,ReloadTask*,SchemaEvent*,Tag*,CompositeEvent*,ExecutionResult*,CustomProperty*,DataConnection*
条件 ( (resource.resourcetype="App" and user.group = resource.stream.@AdminGroup) or (resource.resourcetype="App.Object" and user.group = resource.app.stream.@AdminGroup) or (resource.resourcetype="ReloadTask" and resource.app.stream.@AdminGroup = user.group) or (resource.resourcetype="DataConnection" and resource.@AdminGroup = user.group) or resource.resourcetype ="SchemaEvent" or resource.resourcetype ="CompositeEvent" or resource.resourcetype = "Tag" or resource.resourcetype ="ExecutionResult" )
アクション Read, Update

ルールの説明: ストリームの管理グループに属しているユーザーは、そのストリームで公開されたアプリに関連するリソースを管理できます。

これを有効にするには、プロジェクトの管理者が含まれているグループの名前を含んだカスタム プロパティAdminGroupを作成する必要があります。

The Edit stream screen. The value proj1_admin (1) has been added to the AdminGroup field.

この例のproj1_adminグループのユーザーには、このストリームのアプリに関連するリソースへの管理アクセス権限があります。

作成する必要のあるセキュリティ ロール

3 種類のセキュリティ ロールが定義されました。

  • role_admin: 管理タスクを行える必要のあるユーザー
  • role_dev: プロジェクトの開発作業を行える必要のあるユーザー
  • role_ext: アプリを拡張できる必要のあるユーザー

管理者ロールには 2 つのルールが必要です。次の例では、role_adminグループのユーザーにQMCのセクションへのアクセス権を付与します。

管理者の QMC ルール
設定
名前 TeamAdminSections
リソース フィルター QmcSection_App,QmcSection_DataConnection,QmcSection_ContentLibrary,QmcSection_App.Object,QmcSection_Task, QmcSection_ReloadTask, QmcSection_Event, QmcSection_SchemaEvent, QmcSection_CompositeEvent
条件 ((user.group="role_admin"))
アクション Read

次の例では、role_adminのユーザーに、アプリ、リロード タスク、データ接続などを作成する権限を付与します。

管理者の作成ルール
設定
名前 TeamAdminCreate
リソース フィルター App*,ReloadTask*,SchemaEvent*,CompositeEvent*,ExecutionResult*,DataConnection*
条件 ((user.group="role_admin"))
アクション Create

role_extルールは既定のルールを微調整して作成されます。role_extグループのユーザーだけが新しいシートを使ってアプリを拡張できます。柔軟性を高めるため、新しいカスタム プロパティ (Extendable) がアプリに追加されます。Extendable がオンにされたアプリはすべてのユーザーにそのアプリへのシートの追加を許可します。

Extendableルール
設定
名前 CreateAppObjectsPublishedApp
リソース フィルター QmcSection_App,QmcSection_DataConnection,QmcSection_ContentLibrary,QmcSection_App.Object,QmcSection_Task, QmcSection_ReloadTask, QmcSection_Event, QmcSection_SchemaEvent, QmcSection_CompositeEvent
条件 !resource.App.stream.Empty() and resource.App.HasPrivilege("read") and (resource.objectType = "userstate" or resource.objectType = "sheet" or resource.objectType = "story" or resource.objectType = "bookmark" or resource.objectType = "snapshot" or resource.objectType = "embeddedsnapshot" or resource.objectType = "hiddenbookmark") and !user.IsAnonymous() and (user.group="role_dev" or user.group="role_ext" or resource.app.@Extendable="Yes")
アクション Create

最後は、開発者のために、もう 1 つのルールを微調整して、role_devグループの開発者だけがアプリの作成を許可されるようにします。

開発者の作成ルール
設定
名前 CreateApp
リソース フィルター App_*
条件 !user.IsAnonymous() and user.group="role_dev"
アクション Create

概要

この設定を使い、ユーザー ディレクトリのグループを通じてQlik Senseを管理できます。また、Qlik Senseにコンテンツを追加するときに、属性の使用のみでアクセスできる必要のあるグループを定義できます。

注: このアプローチでは、ロールがグループから分離されており、ユーザーがさまざまなプロジェクトごとに異なるロールを持たないことを前提としています。ユーザーが異なるロールを持つ場合は、プロジェクトごとに個別のロールを作成する必要があります。