「各拠点の管理者は自分の拠点の数値だけを見られ、経営層はすべてを見られる。」これはよくある要件であり、最初の反応はたいてい「では有償版が必要だ」となります。必ずしもそうではありません。Metabaseオープンソースでもデータアーキテクチャによって解決でき、本記事ではその方法(そしてOSSでは本当に足りなくなるのはいつか)を示します。
課題:多数の管理者、1つのダッシュボード、混ぜてはいけないデータ
マルチ拠点の業務では、同じダッシュボードが人によって異なる実態を表示する必要があります。クリチバ拠点の管理者がダッシュボードを開いてサンパウロの数値を目にしてしまえば、それは信頼の問題であり、時には契約上の問題にもなります。
OSSでのアプローチ:フィルターではなくデータで分ける
オープンソースでは、堅牢な分離はMetabaseの手前、データウェアハウスで行います。各拠点は独立した接続となり、自分のデータだけを持つ専用スキーマ(または専用データベース)になります。Metabaseはそれぞれを別個のデータソースとして接続します。
- 拠点ごとに1つのスキーマを設け、ロード時にその拠点の切り出しでデータを投入します。
- スキーマごとにMetabaseの接続(Database)を1つ設けます。
- ダッシュボードは接続ごとにミラーリングするか、すべてを見られる人だけのために統合版を1つ用意します。
グループとコレクション別権限
接続を分離したうえで、Metabaseはグループとコレクション別権限によって人とデータを結び付けます。「拠点クリチバ」グループはクリチバの接続とコレクションだけにアクセスし、「経営層」グループは統合版にアクセスします。これはシンプルで監査可能、かつOSSにネイティブなアクセス管理です。
OSSでは足りないとき:データサンドボックス
限界については正直になりましょう。ログイン中のユーザーに応じて行を自動的にフィルタリングする単一の質問(クエリ)が必要で、ダッシュボードを複製したり接続を分けたりせずに実現したい場合、それはデータサンドボックスであり、Metabase Pro/Enterpriseにのみ存在します。同一のダッシュボードを持つ数十の拠点であれば、サンドボックスはコストに見合います。ロード時にデータをすでに分離できるひと握りの拠点であれば、OSSで余裕をもって解決できます。
ガバナンス チェックリスト
- 機密データはMetabaseの手前で分離されていますか(拠点別のスキーマ/接続)?
- 各グループは自分の接続と自分のコレクションだけにアクセスできますか?
- 経営層向けの、アクセスが制限された統合グループがありますか?
- 誰かの役割が変わったとき、権限は見直されていますか?
よくある質問
Metabaseオープンソースで行レベルセキュリティは実現できますか?
ネイティブにはできません。ログイン中のユーザーに応じた行ごとの自動フィルター(データサンドボックス)はMetabase Pro/Enterpriseの機能です。オープンソースでは、データをスキーマ/接続で分離し、グループとコレクションをそれぞれに結び付けることで、実質的に同じ効果が得られます。拠点の数が管理可能な範囲であれば非常にうまく機能します。
Metabaseはどれくらいの数の接続に耐えられますか?
ほとんどの業務が必要とするよりもはるかに多くに耐えられます。ボトルネックが接続数であることはめったになく、むしろその背後にあるデータベースです。だからこそ、適切にインデックスされた単一のウェアハウス内でスキーマによって分離するほうが、数十の個別データベースよりも運用がシンプルになりがちです。