メインコンテンツまでスキップ

Unity Catalog を使用したクラウド オブジェクト ストレージへの接続

この記事では、 Unity Catalogを使用してデータを操作するために必要なクラウド ストレージ接続の概要と、クラウド ストレージと外部クラウド サービスへのアクセスを Unity Catalog で管理する方法に関する情報について説明します。

Unity Catalog はクラウドストレージをどのように使用しますか?

Databricks では、Unity Catalog を使用して、クラウド オブジェクト ストレージに保存したすべてのデータへのアクセスを管理することをお勧めします。Unity Catalog には、クラウド オブジェクト ストレージへの安全な接続を構成するための一連のツールが用意されています。これらの接続は、次のアクションを完了するためのアクセスを提供します。

  • 生データをレイクハウスに取り込む
  • マネージドテーブル非構造化データのマネージドボリューム を Unity Catalog で管理されるクラウド ストレージで作成して読み取ります。
  • 登録するか、表形式データを含む 外部テーブル と非構造化データを含む 外部ボリューム を、クラウドプロバイダーを使用して管理されるクラウドストレージに作成します。
  • 非構造化データ (Unity Catalog ボリューム ) の読み取りと書き込み。

具体的には、Unity Catalog は主に 2 つの方法でクラウド ストレージを使用します。

  • Databricksで作成するマネージドテーブルおよびマネージドボリューム (非構造化、非表形式データ) のデフォルト (または「管理」) ストレージの場所 。これらのマネージドストレージロケーションは、メタストア、カタログ、またはスキーマ レベルで定義できます。 クラウドプロバイダーで管理ストレージの場所を作成しますが、そのライフサイクルは Unity Catalogによってフルマネージドされます。
  • 外部テーブルとボリュームが格納されるストレージの場所。これらは、Databricks からのアクセスが Unity Catalog によって管理されているが、データのライフサイクルとファイル レイアウトがクラウド プロバイダーやその他のデータ プラットフォームを使用して管理されているテーブルとボリュームです。通常、外部テーブルを使用して、既存のデータを大量に Databricks に登録するか、Databricks の外部ツールを使用してデータへの書き込みアクセスも必要とします。

詳細については、 情報 マネージドと外部テーブルとボリュームについては、「Databricksテーブル」および「Unity Catalogボリュームとは」を参照してください。

警告

非Unity Catalog ID には、マネージドテーブルまたはボリュームへのストレージレベルのアクセス権を付与 Unity Catalog しないでください。 これにより、データのセキュリティとガバナンスが損なわれます。

マネージドストレージとして使用されるAmazonS3 またはCloudflare R2バケットへの直接アクセスをユーザーまたはサービスプリンシパルに許可することは避けてください。Unity CatalogUnity Catalog によって管理されるデータにアクセスできる必要がある唯一の ID は、Unity Catalog によって使用される ID です。これを無視すると、環境に次の問題が発生します。

  • Unity Catalog で確立されたアクセス制御は、S3 または R2 バケットに直接アクセスできるユーザーによって回避される可能性があります。
  • 監査、リネージ、およびその他のUnity Catalogのモニタリング機能は、直接アクセスを捕捉しません。
  • データのライフサイクルが崩壊します。つまり、Databricks内のテーブルを変更、削除、または展開すると、ストレージに直接アクセスできるコンシューマーが機能しなくなり、Databricksの外部に書き込むとデータが破損する可能性があります。

Unity Catalog でサポートされているクラウド ストレージ オプション

Unity Catalog は、 Databricks on AWSの次のクラウド ストレージ オプションをサポートしています。

クラウドストレージオプション

説明

AWS S3 バケット

S3 は、ほとんどの Databricks ユース ケースに適しています。「 AWS S3 外部ロケーションへの接続」を参照してください。

Cloudflare R2バケット

Cloudflare R2は、主にデータエグレス料金を回避したいDelta Sharingのユースケースを対象としています。Cloudflare R2の外部ロケーションへの接続を参照してください。

DBFSルート

DBFSルートは、従来のクラウドストレージの場所です。Databricks はデータをDBFSルート ストレージに格納しないことを推奨していますが、 ワークスペース 従来の慣行のためにそうする場合があります。DBFSルート外部ロケーションへの接続(レガシ)を参照してください。

Unity Catalog はクラウドストレージへのアクセスをどのように管理しますか?

テーブルとボリュームを保持する基になるクラウド ストレージへのアクセスを管理するために、 Unity Catalog は、クラウド ストレージの場所へのパスとその場所にアクセスするために必要な資格情報を定義する 外部ロケーション と呼ばれるセキュリティ保護可能なオブジェクトを使用します。 これらの資格情報は、 ストレージ資格情報 と呼ばれる Unity Catalog のセキュリティ保護可能なオブジェクトで定義されます。Unity Catalogで外部ロケーション セキュリティ保護可能なリソースへのアクセスを許可および取り消すと、データ クラウド上のストレージ ロケーションへのアクセスを制御します。Unity Catalogでストレージ資格情報のセキュリティ保護可能なリソースへのアクセスを許可および取り消すことで、外部ロケーション オブジェクトを作成する機能を制御します。

ストレージ資格情報の概要

ストレージ資格情報 は、クラウド テナントに保存されているデータにアクセスするための認証および承認メカニズムを表します。たとえば、ストレージ資格情報は、S3バケットの場合はIAMロール、Cloudflare R2バケットの場合はR2APIトークンに関連付けられます。

Unity Catalogで付与される権限は、資格情報を使用して外部ロケーションを定義できるユーザーとグループを制御します。ストレージ資格情報を作成および使用する権限は、外部ロケーションオブジェクトを作成する必要があるユーザーにのみ付与する必要があります。

外部ロケーションの概要

外部ロケーション は、クラウドストレージパスと、指定されたパスへのアクセスを許可するストレージ資格情報を組み合わせます。複数の外部ロケーションで同じストレージ資格情報を使用できます。外部ロケーションは、サポートされている クラウドストレージオプションのいずれかのストレージパスを参照できます。

外部ロケーションは、 外部テーブル外部ボリューム などの外部データ資産と、 マネージドテーブル管理対象ボリューム などの管理対象データ資産の両方にUnity Catalogに使用されます。詳細については、 Unity Catalogの外部データ資産と管理対象データ資産の違いについては、「 Databricks テーブル」および「Unity Catalogボリュームとは」を参照してください。

Unity Catalogで付与される権限は、外部ロケーションによって定義されたクラウドストレージパスにアクセスできるユーザーとグループを制御します。外部ロケーションを作成および使用する権限は、外部テーブル、外部ボリューム、または管理対象ストレージの場所を作成する必要があるユーザーにのみ付与する必要があります。

外部ロケーションの使用に関するベスト プラクティスについては、「 外部ロケーション」を参照してください。

外部テーブルとボリュームを作成する際の外部ロケーションの使用

Unity Catalog に登録されている外部テーブルと外部ボリュームは、基本的に、Databricks の外部で管理するクラウド ストレージ内のデータへのポインターです。Unity Catalogで外部テーブルまたは外部ボリュームを作成する場合は、適切な権限が付与されている外部ロケーションオブジェクトに含まれるクラウドストレージパスを参照する必要があります。詳細については、 Unity Catalogの外部データ資産と管理対象データ資産の違いについては、「 Databricks テーブル」および「Unity Catalogボリュームとは」を参照してください。権限については、「 外部ロケーションに対する権限の付与」を参照してください。

管理ストレージの作成時に外部ロケーションを使用する

マネージドテーブル と managed volumes are フルマネージド by Unity Catalog. これらは、メタストア、カタログ、またはスキーマ レベルで定義できる 管理されたストレージの場所に Default によって格納されます。 管理されたストレージの場所をメタストア、カタログ、またはスキーマに割り当てる場合は、外部ロケーション オブジェクトを参照する必要があり、それを使用するための適切な特権が必要です。 「Unity Catalog でのマネージド ストレージの場所の指定」と「Unity Catalog のベスト プラクティス」を参照してください。

クラウドストレージ内のデータへのパスベースのアクセス

Unity Catalog は、クラウド ストレージ URI を使用した外部テーブルと外部ボリュームへのパスベースのアクセスをサポートしていますが、Databricks では、ユーザーがテーブル名を使用してすべての Unity Catalog テーブルを読み書きし、 /Volumes パスを使用してボリューム内のデータにアクセスすることをお勧めします。 ボリューム は、ほとんどの Databricks ユーザーがクラウド オブジェクト ストレージ内の非表形式データを直接操作するために使用する必要があるセキュリティ保護可能なオブジェクトです。Unity Catalogボリュームとはを参照してください

警告

Databricks 以外のクライアントを使用して、または Databricks 内からのパスベースのアクセスを使用して外部テーブルのメタデータを更新した場合、そのメタデータは Unity Catalog と状態を自動的に同期しません。Databricks では、このようなメタデータの更新はお勧めしませんが、更新する場合は、Unity Catalog のスキーマを最新の状態にするために MSCK REPAIR TABLE <table-name> SYNC METADATA を実行する必要があります。REPAIR TABLEを参照してください。

Unity Catalog でクラウドストレージへのアクセスを管理するためのワークフロー

Unity Catalog を使用してクラウドストレージへのアクセスを管理するには、次の操作を行います。

  1. クラウドストレージパスへのアクセス権を持つ、 IAMロールなどの長期的なクラウド認証情報を含むストレージ認証情報オブジェクトを作成します。
  2. ストレージ・パスとストレージ資格証明オブジェクトを参照する外部ロケーション・オブジェクトを作成します。
  3. 外部テーブル、外部ボリューム、またはデフォルト管理ストレージの場所を作成するときは、外部ロケーションに含まれるパスを参照します。 これは、外部ロケーションまたはサブパスで定義された正確なパスにすることができます。

次のステップ