ナガモト の blog

Full Cycle Developerを目指すエンジニアが有用そうな技術記事や、ポエムのようなよしなしごとを投稿するブログです。

Metabaseで個人情報を保護しながらデータ分析

データ分析ってとても重要ですよね、ツールを使ってデータ・ドリブンに質の高いPDCAを回していきたいものです。

とはいえ、個人情報へのアクセスを管理・制限できなければBIツールは導入できないといった話はよく聞きます。 私が直接聞いたのは、「プライバシーマーク取得にあたり、個人情報へのアクセスを管理・制限したい。」*1というものでした。

この記事ではMetabaseというアプリで個人情報へのアクセスを管理・制限する方法を説明します。

Metabaseとは

Redashに代表されるOSSダッシュボードツールの1つです。

CLIを利用して細く設定できるRedashに対して、GUIでわかりやすく操作できることを重視しているのがMetabaseという印象です。 Redashのほうができることは多いですが、Metabaseも十分な機能を備えているので特殊なデータソースを利用するでもない限りは、どちらを使ってもいいと思います。(私はMetabaseが好きです)

詳細は公式サイトを見てください。

metabase.com

redash.io

個人情報へのアクセスを管理・制限する方法

  1. Metabase利用を会社用Googleアカウントのみに制限
  2. 特定データについてMetabaseからアクセス不可設定
  3. DBへのアクセスをユーザグループ毎に制限
  4. テーブルへのアクセスをユーザグループ毎に制限

これらはすべてMetabaseアプリから実現可能*2で、非常に簡単です。実際の画面とともに説明します。

Metabase利用を会社用Googleアカウントのみに制限

「外出先でもMetabaseを確認したいので社内LANやIPで制限をかけたくない」

こんな要望ありますよね。そんなときは特定ドメインGoogleアカウントからしかアプリのユーザ登録ができないようにしましょう。

アプリの画面は次の通りです。わかりやすすぎて説明することがありませんね。

f:id:ngmt83:20190906004723p:plain
特定ドメインに制限
便利なシングルサインオンを利用しながら不正なユーザ登録を防ぐこともできて一石二鳥なので、会社でGoogleアカウントを使っているならぜひ設定しましょう。

特定データについてMetabaseからアクセス不可設定

「データ分析には使わないし、ユーザの住所が入ってるカラムは見えないようにしたい」

よくある話ではないでしょうか。Metabaseなら簡単に設定できます。

MetabaseからアクセスしたくないカラムのあるDB、テーブルを選択し、

f:id:ngmt83:20190906005129p:plain
カラムアクセス不可設定1
カラムを取得しないように設定して完了です。
f:id:ngmt83:20190906005334p:plain
カラムアクセス不可設定2

DBへのアクセスをユーザグループ毎に制限

「カスタマーサポートへ必要に応じて個人情報を共有できるようにしたい」

これもよくある話ですね。Metabaseならグループ毎の細かい権限設定もGUIで簡単に設定できます。 ユーザグループの設定画面は次の通りです。

f:id:ngmt83:20190906085201p:plain
ユーザグループ設定画面
管理者とAll Usersはデフォルトで存在するグループです。

データ権限の設定画面は次の通りです。

f:id:ngmt83:20190906085400p:plain
データ権限設定画面
画像は次のような設定になっています。

  • 基本的に必要なユーザにのみ権限を与えるため、All UsersはSQLを書くこともデータアクセスもできない
  • 個人情報を見てはいけないグループはSQLは書けないが、データへのアクセスは部分的に許可
  • 個人情報を見ていいグループはSQLを書くこともデータアクセスも許可

テーブルへのアクセスをユーザグループ毎に制限

テーブル単位のより細かい制限を課すこともできます。テーブル毎の詳細な権限設定は次の通りです。

f:id:ngmt83:20190906085447p:plain
テーブル権限設定画面

画像では個人情報を見てはいけないグループに対して、個人情報が入るであろうPeopleテーブルのみをデータアクセス禁止に設定しています。

ちなみに、グループと呼んでいますが1ユーザに対して複数のグループを設定できるため、イメージとしてはタグが近いです。

f:id:ngmt83:20190906091305p:plain
ユーザへのグループ設定

最後に

MetabaseはDocker imageが作成されていて、すぐに手元で試すことができるのでぜひ試してみてください。 本番環境のDB(リードレプリカ推奨)と接続する際も、AWSであれば公式に用意されたElastic Beanstalkの設定から簡単に環境構築できるので、とりあえず使ってみるのにおすすめです。

ツールを上手く使い、データ出しのコストを下げて、効果的な施策をどんどん試していきましょう。

*1:誰が個人情報にアクセスできるか、組織が把握している必要がある

*2:Metabaseの管理者権限を持っているユーザのみ