現在、QuickSightを使用して社内の管理指標を表示するダッシュボードを作成しています。
社内のダッシュボードツールを作成する際、支店や部署ごとに閲覧できるデータやコンテンツを制限する必要が生じます。
QuickSightの閲覧権限について参考記事を探してみると、管理者(Admin)、作成者(Author)、閲覧者(Reader)などのユーザー権限しか見当たりません。
しかし、私が求めているのは閲覧者(Reader)のユーザーでも、支店や部署によってデータを制限することです。例えば、支店ユーザーは自分の支店のデータしか確認できず、本社ユーザーは全支店のデータを確認できるようにしたいのです。
今回は、この閲覧者ユーザーに応じたデータ・コンテンツの制御について、行レベルのセキュリティ(row-level security)を利用して実装しましたので、その方法を紹介します。
行レベルセキュリティとユーザーグループ
今回のデータ制御の概要は次の通りです。
登録しているデータセットに対して、編集から「行レベルのセキュリティ」を付与します。
この際、セキュリティのフィルターにはQuickSightのユーザー単位の制御を利用します。
ただし、支店や部署ごとにユーザーグループを作成するのは数が多くなり、部署異動に対応しなければならないなど、管理が非常に煩雑になります。
そこで、ユーザーグループはダッシュボード閲覧者のユーザーグループ一つだけを作成し、あとはフィルターを掛ける支店列を追加することで問題を解決しました。
ユーザーグループの作成
ユーザーとユーザーグループによる設定を行うので、まずは不足しているユーザーグループを作成していきます。
今回はダッシュボードの作成管理者である「admin」と閲覧者である「viewer」を作成しました。
アクセス権限設定したデータセットの作成
最初に、ユーザーやユーザーグループごとにどういったアクセス権限を設定するのかを定義したデータセットの作成が必要になります。
ユーザー名やユーザーグループ名など(ARNでも可)とフィルターを掛けたいカラムと値を設定したcsvデータ(データセット)を作成することでフィルターがかけれるようです。
今回の場合はグループ名とユーザー名で支店絞り込みをかけたいので、例としては以下のようになるでしょうか。ルールの設定にはいくつものやり方があるようなので、公式ドキュメント(こちら)確認して見てください。
GroupName,UserName,branch_name
viewer,tokyo-taro,tokyo
viewer,oska-taro,osaka
viewer,fukuoka-taro,fukuoka
viewer,multi-taro,"tokyo,osaka"
admin,,
フィルターを掛けるカラムに空文字を設定することで、すべての行が取得できるようになるようです。
本社所属や私のような管理者にはすべて表示、東京支店・大阪支店のユーザーは自支店のみ、さらに複数支店を閲覧ができるように実装しています。
実際には、このユーザー権限設定を作成するために、社内の配属データを利用して自動的に作成できるようにしています。
ユーザーグループ・ユーザー制御データセット作成
アクセス権限を制御するために作成したCSVファイルはS3に保存してから、Quicksightのデータセットに追加します。
Quicksightには、ローカルから直接アップロードも可能です。今回は他のデータセットに合わせてS3経由としています。
データの型には注意
アップロードした後のデータセットは一度データの型を確認してください。 フィルターする値に数値が用いられる場合、QuickSight上のデータセットでデータの型が数値(整数)が自動的に選択されているかもしれません。
データの型を文字列に変更しないと以降のルール追加の際にエラーが生じることがありましたので注意が必要です。
データセットの編集
ユーザー・ユーザーグループ単位でデータ制御するデータセットを追加したので、次に既存のデータセットに行レベルのセキュリティを設定していきます。
データセットをクリックし、概要のタブから行レベルのセキュリティを設定することかができます。
セキュリティの設定はユーザー・ユーザーグループによる設定のほかにタグベースのルール設定も可能なようです。
今回はユーザー・ユーザーグループによる設定を行うので、ユーザーベースのルールから右側の展開マークをクリックしてルール設定していきます。
ルール適用するデータセットを選択するので、今回作成したデータセットを選択して、データセットに適用をクリックします。
おわりに
この方法により、支店ユーザーは他の支店のデータを見ることができないようにする要望に応えることができました。
データの民主化と言われてる時代ですが、どこまでデータを見せるかは実際にデータを利用する部門聞いていくしかないですね。
ダッシュボード化しなくとも情報自体は探すことはできる状態なのですが、データを見られる側としてはやはり、他の支店のデータは閲覧する必要のないユーザーには、部署ごとに権限を制限したいと考えるでしょう。
ひとまずは、これで要望を満たしつつ、こちらのユーザー閲覧権限管理も最小限に抑えることが実現できました。
コメント