Metabaseで個人情報を保護しながらデータ分析
データ分析ってとても重要ですよね、ツールを使ってデータ・ドリブンに質の高いPDCAを回していきたいものです。
とはいえ、個人情報へのアクセスを管理・制限できなければBIツールは導入できないといった話はよく聞きます。 私が直接聞いたのは、「プライバシーマーク取得にあたり、個人情報へのアクセスを管理・制限したい。」*1というものでした。
この記事ではMetabaseというアプリで個人情報へのアクセスを管理・制限する方法を説明します。
Metabaseとは
Redashに代表されるOSSダッシュボードツールの1つです。
CLIを利用して細く設定できるRedashに対して、GUIでわかりやすく操作できることを重視しているのがMetabaseという印象です。 Redashのほうができることは多いですが、Metabaseも十分な機能を備えているので特殊なデータソースを利用するでもない限りは、どちらを使ってもいいと思います。(私はMetabaseが好きです)
詳細は公式サイトを見てください。
個人情報へのアクセスを管理・制限する方法
- Metabase利用を会社用Googleアカウントのみに制限
- 特定データについてMetabaseからアクセス不可設定
- DBへのアクセスをユーザグループ毎に制限
- テーブルへのアクセスをユーザグループ毎に制限
これらはすべてMetabaseアプリから実現可能*2で、非常に簡単です。実際の画面とともに説明します。
Metabase利用を会社用Googleアカウントのみに制限
「外出先でもMetabaseを確認したいので社内LANやIPで制限をかけたくない」
こんな要望ありますよね。そんなときは特定ドメインのGoogleアカウントからしかアプリのユーザ登録ができないようにしましょう。
アプリの画面は次の通りです。わかりやすすぎて説明することがありませんね。 便利なシングルサインオンを利用しながら不正なユーザ登録を防ぐこともできて一石二鳥なので、会社でGoogleアカウントを使っているならぜひ設定しましょう。
特定データについてMetabaseからアクセス不可設定
「データ分析には使わないし、ユーザの住所が入ってるカラムは見えないようにしたい」
よくある話ではないでしょうか。Metabaseなら簡単に設定できます。
MetabaseからアクセスしたくないカラムのあるDB、テーブルを選択し、 カラムを取得しないように設定して完了です。
DBへのアクセスをユーザグループ毎に制限
「カスタマーサポートへ必要に応じて個人情報を共有できるようにしたい」
これもよくある話ですね。Metabaseならグループ毎の細かい権限設定もGUIで簡単に設定できます。 ユーザグループの設定画面は次の通りです。 管理者とAll Usersはデフォルトで存在するグループです。
データ権限の設定画面は次の通りです。 画像は次のような設定になっています。
- 基本的に必要なユーザにのみ権限を与えるため、All UsersはSQLを書くこともデータアクセスもできない
- 個人情報を見てはいけないグループはSQLは書けないが、データへのアクセスは部分的に許可
- 個人情報を見ていいグループはSQLを書くこともデータアクセスも許可
テーブルへのアクセスをユーザグループ毎に制限
テーブル単位のより細かい制限を課すこともできます。テーブル毎の詳細な権限設定は次の通りです。
画像では個人情報を見てはいけないグループに対して、個人情報が入るであろうPeopleテーブルのみをデータアクセス禁止に設定しています。
ちなみに、グループと呼んでいますが1ユーザに対して複数のグループを設定できるため、イメージとしてはタグが近いです。
最後に
MetabaseはDocker imageが作成されていて、すぐに手元で試すことができるのでぜひ試してみてください。 本番環境のDB(リードレプリカ推奨)と接続する際も、AWSであれば公式に用意されたElastic Beanstalkの設定から簡単に環境構築できるので、とりあえず使ってみるのにおすすめです。
ツールを上手く使い、データ出しのコストを下げて、効果的な施策をどんどん試していきましょう。