カタログフェデレーションとは
カタログ・フェデレーションでは、オブジェクト・ストレージ内のフォーリンテーブルに直接アクセスします。 クエリはコンピュートを使用してのみ実行されるため Databricks コスト効率が高く、パフォーマンスが最適化されます。 カタログ フェデレーションは、カタログ サービスを持ち、外部 Hive メタストア、レガシ Databricks Hive メタストア、AWS Glue、Salesforce Data Cloud、Snowflake などのオープン テーブル形式をサポートするプラットフォームにフェデレーションするために使用されます。
一般的な使用例
ユースケースの例:
- Unity Catalog への移行パスのステップとして、コード適応なしで増分移行を有効にし、一部のワークロードは外部カタログに登録されたデータを引き続き使用し、他のワークロードは移行されます。
- Unity Catalog に登録されているデータとともに、外部カタログに一部のデータを保持する必要がある組織に、長期的なハイブリッド モデルを提供します。
カタログフェデレーションの概要
カタログフェデレーションでは、 Databricks ワークスペースから外部カタログへの接続を作成し、外部カタログを Unity Catalog クロールしてフォーリンカタログ (フェデレーションカタログとも呼ばれます) にデータを取り込み、組織が Unity Catalogで外部カタログテーブルを操作できるようにすると、一元化されたアクセス制御、リネージ、検索などが提供されます。
AWS Glue など、Databricks ワークスペースの外部にあるフェデレーション外部カタログでは、Unity Catalog を使用した読み取りが可能です。内部 Hive メタストアでは読み取りと書き込みが可能で、メタデータを変更すると Hive metastore メタデータと Unity Catalog メタデータが更新されます。
フェデレーテッド外部カタログでフォーリンテーブルを照会すると、 Unity Catalog はガバナンス層を提供し、アクセス制御チェックや監査などの機能を実行し、照会は外部カタログ・セマンティクスを使用して実行されます。 たとえば、ユーザーがフォーリンカタログに Parquet 形式で格納されているテーブルをクエリすると、次のようになります。
- Unity Catalog は、ユーザーがテーブルにアクセスできるかどうかをチェックし、クエリのリネージを推測します。
- クエリ自体は、基になる外部カタログに対して実行され、そこに格納されている最新のメタデータとパーティション情報を利用します。
許可されたパスとは何ですか?
フェデレーションによってサポートされるフォーリンカタログを作成すると、Hive metastoreテーブルが保存されているクラウドストレージへの承認されたパスを指定するように求められますHive metastore。フェデレーションを使用してアクセスするテーブル Hive metastore 、これらのパスでカバーする必要があります。 Databricks では、承認されたパスを多数のテーブルに共通するサブパスにすることをお勧めします。たとえば、 s3://bucket/table1
、 s3://bucket/table2
、 s3://bucket/table3
にテーブルがある場合は、許可されたパスとして s3://bucket/
を指定する必要があります。
承認されたパスは、フェデレーションによって支えられたフォーリンカタログにセキュリティ層を追加します Hive metastore 。 これにより、カタログ所有者は、ユーザーがフェデレーションを使用してアクセスできるデータにガードレールを適用できます。これは、 Hive metastore でメタデータを更新したり、テーブルの場所を任意に変更したりできる場合に便利です。 このシナリオでは、ユーザーは既にアクセスできるテーブルを再定義して、他の方法ではアクセスできない新しい場所を指す可能性があります。
例: セキュリティで保護されていない Hive metastore
次の例は、悪意のあるユーザーがセキュリティで保護されていないHive metastoreのパスを操作することで、Unity Catalogアクセス許可をバイパスし、フェデレーション カタログ内の機密データにアクセスする方法を示しています。
システム管理者はフェデレーションHive metastore設定し、Paul に Unity Catalogのnon_sensitive
スキーマへのアクセス権を付与します。Paul は、Unity Catalog の sensitive_table
スキーマにアクセスできません。
Unity Catalogは安全ですが、Hive metastoreは安全ではありません。ポールはHive metastoreのテーブルnon_sensitive_table
の経路をs3://abc/def
に変更する能力を持っている。フェデレーション カタログの次回の更新時に、Unity Catalog のフェデレーション テーブルのパスが更新されます。Unity Catalog には、 s3://abc/def
にアクセスするためのストレージ資格情報が既にあり、Paul には SELECT
アクセス権があるため、Paul はテーブル sensitive_table
からデータにアクセスできるようになりました。
承認されたパスを大規模に追加するには、次のツールを使用できます。
-
Unity Catalog 移行アシスタント の組み込みヘルパー関数
-
Terraform などの自動化ツール
-
次のノートブックに事前構築されたヘルパー関数: