整理します。
Unity Catalogとは
Unity Catalog(UC)は、DatabricksレイクハウスにおけるデータとAIに対するきめ細かいガバナンスを提供するソリューションです。
Unity Catalogは以下のキーとなる機能によって、お使いのデータに対するセキュリティとガバナンスをシンプルなものにします。
- 一度定義すれば、どこでもセキュアに: Unity Catalogは全てのワークスペース、ペルソナに対して適用されるデータアクセスポリシーを管理する唯一の場所を提供します。
- 標準準拠のセキュリティモデル: Unity Catalogのセキュリティモデルは標準的なANSI SQLをベースとしており、管理者は馴染みのある文法を用いて、既存データレイクに存在するカタログ、データベース、テーブル、ビューのレベルでアクセス権を設定することができます。
- ビルトインの監査機能: Unity Catalogは自動でユーザーレベルの監査ログを捕捉し、データへのアクセスを記録します。
このように、Unity Catalogを活用することで高いセキュリティ、ガバナンスを実現することができます。しかし、Unity Catalog以前とは考え方が色々と異なっているので、以前ある機能との違いを認識することも重要となります。
以下では、ファイル、テーブル、MLflowアーティファクト、モデルレジストリを対象に、Unity Catalogを有効化している場合とそうでない場合のアクセスコントロールをまとめます。
なお、DBFS(Databricks File System)へのアクセスとMLflowアーティファクトのアクセスに関しては違いはありません。
Unity Catalogあり | Unity Catalogなし | |
---|---|---|
ファイル(DBFS) | Databricksユーザーなら誰でもアクセス可能 | Databricksユーザーなら誰でもアクセス可能 |
ファイル(外部ストレージ) | Unity Catalogで許可された操作が可能 | 接続で使用している権限情報に従った操作が可能 |
マネージドテーブル | Unity Catalogでテーブルに許可された操作が可能 | テーブルアクセスコントロールが有効化されている場合には、設定された権限での操作が可能。有効化されていない場合には、Databricksユーザーであれば誰でも操作可能 |
外部テーブル | Unity Catalogでテーブルとテーブルで使用している外部ロケーションで許可された操作が可能 | テーブルアクセスコントロールが有効化されている場合には、テーブルで使用しているファイルに設定された権限での操作が可能。有効化されていない場合には、テーブルで使用しているファイルにアクセスできる限りDatabricksユーザーであれば誰でも操作可能 |
MLflowアーティファクト | MLflowエクスペリメントのアクセス権に準拠 | MLflowエクスペリメントのアクセス権に準拠 |
モデルレジストリ | 設定可能なアクセス権はALL PRIVILEGES とEXECUTE のみ |
ステージ遷移などの権限設定が可能 |
ファイルに対するアクセスコントロール
ファイルが以下のどちらに格納されているのかによって挙動が異なります。
- DBFS
- 外部ストレージ(S3など)
DBFS(Databricks File System)
DBFSはDatabricksで利用できるファイルシステムです。一部の例外を除いてアクセスコントロールはされていません。 このため、Unity Catalogを使っているかどうかに関係なく、Databricksのユーザーであれば誰でも読み書きできます。このため、こちらでも説明しているようにプロダクションで使用するようなデータを格納することはお勧めしません。
- Unity Catalogあり: Databricksユーザーなら誰でもアクセス可能。
- Unity Catalogなし: 同上
外部ストレージ
まず、Unity Catalogがある場合とないと場合とでは、外部ストレージへの接続方法が異なります。
- Unity Catalogあり: 外部ロケーション、ボリュームを使用。
- Unity Catalogなし: DBFSマウントやインスタンスプロファイルを使用。
Unity Catalogを使用している際には、外部ロケーションやボリュームへのアクセスコントロールが可能です。DBFSマウントの場合にはマウントで使用している権限情報に沿ってストレージにアクセスします。インスタンスプロファイルの場合も同様です。
- Unity Catalogあり: Unity Catalogで許可された操作が可能。
- Unity Catalogなし: 接続で使用している権限情報に従った操作が可能。
テーブルに対するアクセスコントロール
Unity Catalogが有効化されている場合には、Unity Catalogのメタストアにアクセスします。Unity Catalogが有効化されていない場合、テーブルにはHiveメタストア経由でアクセスします。
マネージドテーブル
マネージドテーブルは、テーブルのメタデータに加えてテーブルデータもメタストアが管理するテーブルとなります。DROP TABLE
でテーブルを削除した際にはメタデータと共にテーブルデータも削除されます。
- Unity Catalogあり: Unity Catalogでテーブルに許可された操作が可能。
- Unity Catalogなし: テーブルアクセスコントロールが有効化されている場合には、設定された権限での操作が可能。有効化されていない場合には、Databricksユーザーであれば誰でも操作可能。
外部テーブル
外部テーブルとはアンマネージドテーブルとも呼ばれ、テーブルデータの格納場所が外部ストレージとなっているテーブルを指します。DROP TABLE
でテーブルを削除した際にはメタデータは削除されますが、テーブルデータは削除されません。
- Unity Catalogあり: Unity Catalogでテーブルとテーブルで使用している外部ロケーションで許可された操作が可能。
- Unity Catalogなし: テーブルアクセスコントロールが有効化されている場合には、テーブルで使用しているファイルに設定された権限での操作が可能。有効化されていない場合には、テーブルで使用しているファイルにアクセスできる限りDatabricksユーザーであれば誰でも操作可能。
MLflowアーティファクトに対するアクセスコントロール
MLflowのアーティファクトは、Databricks上でモデルトレーニングをした際に記録される機械学習モデルやメタデータです。
アーティファクトはDBFSに格納されますが、これは特殊なDBFSであり上述したような直接のアクセスはできません。アーティファクトへのアクセスはUCありなしに関係なく、MLflowエクスペリメントのアクセス権によって制御されます。
- Unity Catalogあり: MLflowエクスペリメントのアクセス権に準拠。
- Unity Catalogなし: MLflowエクスペリメントのアクセス権に準拠。
MLflowモデルレジストリに対するアクセスコントロール
MLflowモデルレジストリは機械学習モデルのバージョンやステータスの管理を可能にします。最近Unity Catalogでもモデルレジストリの機能を提供するようになりましたが、従来のモデルレジストリとアクセス権の考え方が異なります。
-
Unity Catalogあり: 設定可能なアクセス権は
ALL PRIVILEGES
とEXECUTE
のみ。ステージ遷移の機能は現時点ではサポートされていません。 - Unity Catalogなし: ステージ遷移などの権限設定が可能。
注意
Unity Catalogを有効化していても、従来のモデルレジストリの機能を利用できます。