個人情報保護の手段としてのリネージ
TL;DR
ここから本編
データ分析をするにあたり、そのデータがどこから来たものなのか、監査をするにあたり、不適切なデータの利用がされていないのか、知りたい人は多いと思います。 とりわけ、上記のような動機をもってる人が所属する組織は、多数の部門に分かれ、それぞれの部門で採用している技術スタック、ミドルウェアが異なったりします。
- データの由来を知るにも担当者はそもそも誰なのか、どこの誰に聞けばわかるかがわからない。
- データ基盤を運用してるがあるデータセットの変更がどこにどう影響を与えるのかわからない。
- 個人情報開示請求をユーザから受けたけど、いったいどこにどうデータが伝わっているのかわからない。
そういった辛みを解決するための手法として、データリネージというものがあります。
メタデータとリネージ
しんゆうさんやゆずたそさんの活動により、メタデータ管理、データマネジメントの重要性( メタデータ整備 )については徐々に認知されていると思います。 しかしながら、単独のデータセットについてではなく、複数のデータセットを束ね、関連付けて整理する活動についてはいまだ言及が少ないように思えます。
データリネージは、メタデータのうちの一領域で、情報の履歴・ライフサイクルをトラッキングすることです。 トラッキングする要素は、データの入出力、処理を行うプロセス、データセット間でなにが伝わったかなどです。
個人情報保護のためのリネージ
データ分析基盤を持ち運用している組織であれば、複数のサービスそれぞれのデータセットに管理者が存在し、個人情報の漏洩や目的外利用を監督していると思います。 *1
分析基盤への流れが単純であれば、それぞれのサービス内容やデータセットの内容、また分析施策の内容を把握し、現実的なコストでリスクを抑えることができます。
しかしながら、複数のデータ分析基盤があり、かつ連携がある場合、後続の分析基盤がそれぞれのデータセットの来歴を把握するコミュニケーションコストは指数関数的に増大します。
稼働当初は分析基盤βが適切に管理していたとしましょう。
しかしある日から分析基盤αへ、サービスCと一緒に扱ってはいけない、サービスXのデータが含まれてしまったとします。
分析基盤βの管理者はそれを把握することができるでしょうか?
分析基盤βと分析基盤αの間で綿密な情報共有が行われていればαのほうからβへ連絡することで気付くことができるかもしれませんが、間に挟まるステークホルダーが増えるにつれて難しくなるでしょう。
またデータ分析者があるデータセットを施策に使いたいと思ったとき、プライバシーポリシーとして問題ないかチェックするプロセスを取る組織もあると思いますが、この5営業日かかります、となるとデータ分析のプロセスは滞り、機会費用が発生します。
このリードタイムを忌避しチェックを怠れば、よくて施策が世に出る直前でストップ・すべて台無しになるか、大体がサービスそのものが炎上し事業の継続性が損なわれます。
データガバナンスツールApache Atlas
前置きが長くなりましたが、上記のような課題を避け、データの流れを可視化するツールとして、Apache AtlasというOSSがあります。
Apache Atlasは2015年にApache Incubator入りし、2017年に昇格しました。現在のリリースバージョンは2.0で、現在3.0の開発が進められています。*2
主なコミッターはHadoopなどを開発するHortonworksのようです。
また、clouderaがソリューションとして提供しているようです。*3
IBMの研究者は、メタデータ管理のOSSとして "Apache Atlas is the lead contender as the choice of such an open source project." と言及しています。*4
概要
Apache AtlasはREST APIとWebUI、そして主にHadoop関連のプロダクトをサポートするメタデータのコレクタで構成されます。
しかし、柔軟なスキーマ定義が可能なため、Hadoopに限らず、Oracle、Bigqueryなどの表形式構造化データはもちろん、s3、gcsなどの非構造化データを含めあらゆるデータセットを扱うことができます。 *5
リネージとClassification Propagation
Apache Atlasはメタデータを DataSet と Processの2つに大きく区別します。 DataSetはあらゆるデータを含む抽象的な概念。Processは、DetaSetとDataSetをつなぐ概念と捉えられます。
下の画像は、Apache Atlasのオフィシャルサイトから拝借したもので、緑の丸、赤の丸がDataSet、青の歯車の丸がProcessを示しています。 左のデータを出発とし、一度テーブルにロードした後、さらにViewによって複数のデータセットに分割しています。
これだけでは特に面白くもないと思いますが、Apache Atlasの特徴的な機能としてClassification Propagation(分類の伝播)があります。
下図のように、一番最初のデータに、PII(個人を識別できる情報)というClassificationを付与すると、Processを介して後続のテーブルにまでそのClassificationが伝播し、最後のDataSetに対しても、そのDataSetにはPIIが含まれているという情報を付与することができます。
このClassificationは様々な値を定義することが可能で、複数のDataSetを入力とするDataSetについて、入力のDataSetそれぞれに別々のClassificationを付与した場合、出力のDataSetには両者のClassificationが付与されることとなります。
この機能によりデータ分析基盤においての個人情報の目的外利用が可視化できると期待しています。
データの収集について
Apache AtlasはREST APIを提供しており、任意の方法でデータを収集することができます。 atlas.apache.org しかしながら、データソースにアクセスしメタデータを採取する具体的な実装は提供されていません。
この部分に関しては、開発が必要です。 たとえば@k1Lowさんの開発する tblsの出力データを利用することや、他のメタデータ管理ツールで収集したデータをAPIで連携するなどが考えられます。
Apache Atlasの活用事例
Apache Atlasは、誤解を恐れずに言えば、メタデータ管理について低レイヤな基盤となる機能を提供しており、実際に組織で運用するには様々な工夫が必要と考えています。 Apache Atlasをバックエンドとして、WebUIや周辺機能を実装したOSSを提供している事例として、 lyftが開発するamundsenや、ODPiが開発するegeriaがあります。
まとめ
煩雑な文になってしまいましたが、データ整備、データガバナンスについては昨今議論が活発になってきたところです。
具体的な実装方法についても情報共有できていけたらと思います。
Appendix
- Apache Atlas – Data Governance and Metadata framework for Hadoop
- Amazon EMR で Apache Atlas を使用して、メタデータの分類、系統および発見を行う | Amazon Web Services ブログ
- "データリネージ"の把握が複雑な金融規制順守の鍵に | MarkLogic
- Amundsen — Lyft’s data discovery & metadata engine - Lyft Engineering
- Data Lineage and Metadata Management: An Innovative Approach - DATAVERSITY
*1:してますよね…??
*2:https://incubator.apache.org/projects/atlas.html
*3:https://jp.cloudera.com/products/open-source/apache-hadoop/apache-atlas.html
*4:InsightOut: The case for open metadata and governance | IBM Big Data & Analytics Hub
*5:jsonでスキーマ定義する https://github.com/apache/atlas/tree/master/addons/models