[Azure Databricks] データガバナンスのベストプラクティス（翻訳）

# はじめに

https://learn.microsoft.com/ja-jp/azure/databricks/lakehouse-architecture/data-governance/best-practices

Azure Databricksのドキュメント（Microsoft Learn）で、データガバナンスのベストプラクティスについてかかれている章がまだ日本語訳されていなかったため、DeepLで翻訳しました。

# データガバナンスのベストプラクティス

この記事では、データガバナンスのベストプラクティスを、以下のセクションに記載されているアーキテクチャーの原則によって整理して説明する。

# 1. データ管理の一元化

## すべてのデータ資産のメタデータを一元管理する

ベストプラクティスとして、1つのUnity Catalogで1つのアカウントでレイクハウスを実行します。Unity Catalogのオブジェクトの最上位コンテナはメタストアです。これは、データ資産（テーブルやビューなど）と、それらへのアクセスを制御する権限を格納します。クラウド・リージョンごとに単一のメタストアを使用し、レイテンシの問題を回避するためにリージョン間でメタストアにアクセスしないでください。

メタストアは3レベルの名前空間を提供します：

- カタログ
- スキーマ
- テーブル/ビュー

Databricksでは、組織の情報アーキテクチャ全体で分離を行うためにカタログを使用することを推奨しています。多くの場合、これはカタログがソフトウェア開発環境のスコープ、チーム、またはビジネスユニットに対応することを意味します。

## データリネージを追跡してデータを可視化する

データ・リネージは、データ・リーダーが組織内のデータの可視性と理解を深めるのに役立つ強力なツールである。データ・リネージは、ソースからインサイトまでのデータの変換と改良を説明します。リネージには、データセットのソース、データセットの作成に使用された他のデータセット、誰がいつ作成したか、どのような変換が行われたか、他のデータセットがどのようなデータセットを使用しているか、その他多くのイベントや属性など、データのライフサイクルにおける関連するすべてのメタデータとイベントのキャプチャが含まれます。データ・リネージは、多くのデータ関連のユースケースに利用できる｡

- **コンプライアンスと監査準備:**
    -  データ・リネージは、組織がテーブルやフィールドのソースを追跡するのに役立つ。これは、一般データ保護規則（GDPR）、カリフォルニア州消費者プライバシー法（CCPA）、医療保険の相互運用性と説明責任に関する法律（HIPAA）、バーゼル銀行監督委員会（BCBS）239、サーベンス・オクスリー法（SOX）など、多くのコンプライアンス規制の要件を満たすために重要である。
-  **影響分析／変更管理：**
    -  データは、ソースから最終的なビジネス対応テーブルまで、何度も変換されます。データの変更が下流のユーザーに与える潜在的な影響を理解することは、リスク管理の観点から重要になります。この影響は、Unity Catalogによって収集されたデータリネージを使用して簡単に判断できます。
-  **データの品質保証：** 
    -  データセットがどこから来て、どのような変換が適用されたかを理解することで、データサイエンティストやアナリストのコンテキストが大幅に改善され、より正確な洞察を得ることができる。
- **デバッグと診断：**
    -  予期せぬ結果が発生した場合、データ・リネージは、データ・チームがエラーの発生源まで遡って根本原因を分析するのに役立ちます。これにより、デバッグ時間が大幅に短縮されます。Unity Catalogは、Azure Databricks上で実行されたクエリ全体のランタイムデータリネージをキャプチャします。リネージはすべての言語でサポートされ、カラムレベルまでキャプチャされます。リネージデータには、クエリに関連するノートブック、ワークフロー、ダッシュボードが含まれます。リネージは Data Explorer でほぼリアルタイムに可視化でき、Databricks Data Lineage REST API で取得できます。

## データエクスプローラによるデータと関連情報の発見

簡単なデータディスカバリーにより、データサイエンティスト、データアナリスト、データエンジニアは、関連するデータを素早く発見して参照し、価値創造までの時間を短縮することができます。Databricks Data Explorerは、データ、スキーマ（データベース）、テーブル、権限、データ所有者、外部ロケーション、および資格情報を探索および管理するためのUIを提供します。さらに、Data Explorer の Insights タブを使用すると、Unity Catalog に登録されている任意のテーブルについて、最近最も頻繁に行われたクエリとユーザを表示できます。

# 2. データセキュリティの統一

## アクセス制御の一元化

Databricks Lakehouse Platformは、データアクセス制御のためのメソッド、つまりどのグループまたは個人がどのデータにアクセスできるかを記述するメカニズムを提供します。これは、各個人がアクセスできるすべてのレコードの定義に至るまで、非常に詳細かつ具体的なポリシーを記述するものです。あるいは、すべての財務ユーザーはすべての財務データを見ることができるなど、非常に表現豊かで広範なものにすることもできます。

Unity Catalogは、ファイル、テーブル、ビューのアクセス制御を一元化します。Unity Catalogのセキュアな各オブジェクトにはオーナーがいます。オブジェクトのオーナーは、オブジェクトに対するすべての権限と、セキュアなオブジェクトに対する権限を他のプリンシパルに付与する権限を持ちます。Unity Catalogでは、権限を管理し、SQL DDLステートメントを使用してアクセス制御を構成することができます。

Unity Catalog では、動的ビューを使用してきめ細かなアクセス制御を行うため、クエリを実行する権限を持つユーザーやグループに行や列へのアクセスを制限できます。動的ビューの作成」を参照してください。

詳細については、[「セキュリティ、コンプライアンス、プライバシー - 最小特権を使用した ID およびアクセスの管理」](https://qiita.com/akihiro_suto/items/7fe6918af0cdd0c79fdd) を参照してください。

## 監査ロギングの設定

Databricks は、Databricks ユーザが実行したアクティビティの監査ログへのアクセスを提供し、企業が詳細な Databricks の使用パターンを監視できるようにします。ログには 2 種類あります： ワークスペースレベルのイベントを含むワークスペースレベルの監査ログと、 アカウントレベルのイベントを含むアカウントレベルの監査ログです。

## Unity Catalogイベントの監査

Unity Catalogは、メタストアに対して実行されたアクションの監査ログを取得します。これにより管理者は、特定のデータセットに誰がアクセスし、どのようなアクションを実行したかについて、詳細な情報にアクセスできます。

## データ共有イベントの監査

Delta Sharingによる安全な共有のために、Azure Databricksは以下を含むDelta Sharingイベントを監視する監査ログを提供します：

- 誰かが共有または受信者を作成、変更、更新、または削除したとき。
- 受信者がアクティベーションリンクにアクセスし、クレデンシャルをダウンロードしたとき。
- 受信者が共有または共有テーブルのデータにアクセスしたとき。
- 受信者のクレデンシャルがローテーションされたとき、または有効期限が切れたとき。

# 3. データ品質の管理

Databricks Lakehouse Platformは、品質管理、テスト、モニタリング、および実施を組み込んだ堅牢なデータ品質管理を提供し、ダウンストリームのBI、アナリティクス、および機械学習ワークロードで正確かつ有用なデータが利用できるようにします。

「信頼性 - データ品質の管理」を参照してください。

# 4. データを安全かつリアルタイムに共有

## パートナーとのデータ共有には、オープンなDelta Sharingプロトコルを使用

Delta Sharingは、レイクハウスからあらゆるコンピューティングプラットフォームにライブデータを安全に共有するためのオープンソリューションを提供します。受信者は、Databricksプラットフォーム上、同じクラウド上、またはどのクラウド上である必要もありません。Delta Sharingは、Unity Catalogとネイティブに統合されているため、企業は企業全体で共有データを一元的に管理および監査し、セキュリティおよびコンプライアンス要件を満たしながら、自信を持ってデータ資産を共有することができます。

データプロバイダーは、クラウドストレージに存在するライブデータを、他のシステムに複製または移動することなく共有することができます。このアプローチにより、データプロバイダーはクラウド、地域、データプラットフォームをまたいで各データコンシューマーにデータを何度も複製する必要がないため、データ共有の運用コストを削減できます。

## Databricks ユーザー間での Databricks 間デルタ共有の使用

Unity Catalogメタストアにアクセスできないユーザーとデータを共有したい場合は、受信者がUnity Catalogを有効化したDatabricksワークスペースにアクセスできる限り、Databricks間デルタ共有を使用できます。Databricks間共有では、クラウド・リージョンやクラウド・プロバイダを超えて、他のDatabricksアカウントのユーザーとデータを共有することができます。自分のDatabricksアカウント内の異なるUnity Catalogメタストア間でデータを安全に共有するのに最適な方法です。