クラウド型のデータガバナンス管理サービス「Immuta」を使ってみた

変わらない、変化しない、不変の、不易の、変えることのできない、変更不可能
2021.07.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大阪オフィスの玉井です。

データガバナンスのためのWebサービスである「Immuta」を触ってみました。

Immutaとは?

概要

ざっくりいうと、データのアクセスコントロールやデータガバナンスの問題を解決するサービス(SaaS)です。

昨今、データ分析基盤において、色々と便利なサービスが増えてきており、これらを導入・活用することで、データ分析業務を大幅に加速させることができるようになっています。

ただ、皮肉なことに、データ分析が組織に広がれば広がるほど、顕在化してくる問題が、データガバナンスです

データ分析を推進するため、多種多様なデータを集め、それらにアクセスできるようにする…と、ここまではいいのですが、「こういうデータはある?」「このカラムは個人情報だからハッシュ化しないと…」「あのデータって誰でもアクセスしていいんだっけ?」「海外で事業するからCCPAとか考えないと…」など、データをどう統治(ガバナンス)するか?という問題が必ず出てきます。

また、見せる見せない問題もありますが、機密データに対する管理については年々意識が高まってきており、データの管理をで失敗すると、最悪、法的な問題に繋がりかねません。データガバナンスはやってない時のリスクが非常に高い課題であるともいえます。

そういう悩みを解決するために存在するのが、今回触ってみる「Immuta」というSaaSになります。

アーキテクチャ

Architecture & Integrations | Immutaより

後述しますが、まず、DWH等の各種データをData Sourcesとして登録します。あらゆるデータを、Immutaというプラットフォーム一箇所に集約するイメージです。そして、Immutaの中で色々なデータガバナンスに関する設定(Policiesなど)を施します。

当然、ガバナンスを効かせたデータは、分析等に使いたいため、BIツール等でアクセスすることになりますが、それも接続先はImmutaになります。

ちなみに、登録できるDWH等は下記に載っています。とりあえず、Redshift、Snowflake、BigQueryはありました。

やってみた

実は、ImmutaはSnowflakeとパートナーです。Snowflakeのパートナーコネクトからサクッと利用できます。というわけで、今回はSnowflakeのデータを対象に、基本的な操作を試してみます。

Snowflakeからパートナーコネクトを介してImmutaを設定する

Snowflakeにログインして、パートナーコネクトの画面を開きます(要ACCOUNTADMINロール)。

下記のような感じで、必要なVWHとかROLEを作るで?みたいな確認画面が開きます。ポイントは、Immutaで管理したいデータがあるDBを選ぶ部分でしょうか。後から追加もできますが、予めここで指定しておくと楽です。

どうやらトライアル扱いになるそうです。

スクショがなくて恐縮ですが、メールアドレスも入力します。設定を一通り完了すると、そのメールアドレスに対して、Immutaの初期設定をするメールが来ます。

Immutaの初期設定

初期設定といっても、ウィザードに従うだけです。

ボタンを押すと、Immutaがセットアップされるので、それを待ちます。

設定が完了すると、「Immutaがセットアップできたから、Immutaアカウントでログインしてや」と言われます。このアカウントは、パートナーコネクトの設定で登録したアカウントを使用します。

ログインすると、「Snowflakeと接続するために、下記のクエリをSnowflakeで流して」と言われるので、従います。

改めて、最初に登録するData Sourcesをどうするか選びます。基本的に一番上(最初に登録したSnowflakeのDBを登録する)を選ぶことになると思います。今回は触れませんが、なんとdbt Cloudとも連携できるようです

Immuta内のジョブが実行され、SnowflakeのDB(下のデータ)がImmutaに登録されていきます。ちなみに、データ本体をコピーしてきているわけではないので、そこは注意しておきましょう(メタデータを登録して、論理的にデータがあるようにしているようです)。

基本的なPoliciesを設定してみる

Immutaの基本的な機能にPoliciesがあります。これは、データに対する細かいセキュリティ設定のようなもので、「誰」に対して「どう隠すか」というものを定義することができます。

Policiesには2種類ありますが、今回はData Policiesを設定してみます。これは、「そのデータをどう見せるか」ということを設定します。データそのものを隠すというよりは、データにアクセスできるけど、中身はわからないようにする、という感じです。

今回は、奈良県の犯罪データを使用します。犯罪が起こった住所データがあるので、そのデータをマスキングして表示するようにしたいと思います。

まずは検索で、対象のData Sourcesを見つけます。

データの詳細を確認することができます。SQLクライアント等の他の手段でアクセスする方法(Immuta越し)も確認することができます。

ちなみに、データディクショナリー機能もあります。タグ等がつけれるので、データカタログとしても使用できます。

ではさっそくPoliciesを設定してきます。

まず、「どう見せるか」を設定します。今回はマスキングしたいのでMaskを選択します。他にも色々ありますね。

次に、「Maskの方法」を選びます。これも色々ありますが、今回はハッシュ化したいと思います。

最後に、マスキングするカラムを選択します(スクショ忘れ)。

「どう見せるか」の設定を終えたら、後は「誰が見たときにそのマスキングを行うか」を設定します。そもそも今回は私しかユーザーがいないので、とりあえず「全員」にしました。当然ながら、対象ユーザーやグループを絞って設定することもできます。

Policiesの設定が完了したので、実際に確認します。Immutaに備わっているクエリエディタで確認したところ、確かにハッシュ化されています。

ちなみに本来は下記のような内容となっています。

まだやってないけど、気になる機能

Global Data Policy

今回は特定のデータに対してのPolicies(Local Data Policy)を設定しましたが、Immuta上のデータ全体に適用できるGlobal Data Policyというのもあります。Policiesを設定後、新しく登録されたデータに対しても動的に適用できるところが便利そうです。

Subscription Policies

「データをどう見せるか」ではなく、そもそも「データ自体にアクセスさせるかどうか」を設定するのが、Subscription Policiesです。全く見せないようにもできるし、承認制にすることもできるようです。

ちなみに、こちらもLocalとGlobalがある模様。

他の基本的な機能

他にも監視機能やユーザー管理など、まだまだ触れていない機能がたくさんあるので、もう少し試してみたいですね。

Sensitive Data Detection

Sensitive Data Detection and Discovered Tags - Immuta Documentation

センシティブなデータ(個人情報など)を自動で検知してタグ付けしてくれるようです。そのタグを利用したPoliciesを設定しておけば、センシティブデータを自動でコントロールすることができます。

Snowflakeとのネイティブ統合

Snowflake Access Patterns - Immuta Documentation

本来、Immutaのデータガバナンスの恩恵を受けるためには、Immutaを介して接続する必要がありましたが、Native Dynamic SnowflakeやNative Snowflake Workspacesといった機能を使うと、Immutaで設定したPoliciesが、Snowflake上で直接効かせるようにできるみたいです。

中身としては、Policiesが効いたViewが自動で作られるようで、PUBLICロールがアクセスできるようになっているため、Snowflake側でロールを駆使したデータガバナンス設定をする必要がなくなるようです。

DWHがSnowflakeじゃないと使えませんが、この機能は、別途検証したいですね。

おわりに

BIツール、データウェアハウス、データインジェクション、データ分析のための色々なサービスが出ていますが、次に気になるのはデータガバナンスでしょう。これからデータ分析基盤を構築するという人も、データガバナンスまで考えておいて損はないと思います。