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

この記事では、Unity Catalog を使用してデータを操作するために必要なクラウド ストレージ接続構成の概要を説明します。

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

  • 生データをレイクハウスに取り込む

  • セキュリティで保護されたクラウド ストレージでマネージドテーブルを作成して読み取る

  • 表形式のデータを含む外部テーブルを作成または登録する

  • 非構造化データの読み取りと書き込みを行う

警告

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

Unity Catalogマネージドストレージとして使用される Amazon S3またはCloudflare R2 バケットへの直接アクセスをユーザーに許可しないでください。 Unity Catalog によって管理されるデータにアクセスできるアイデンティティは、Unity Catalogが使用するアイデンティティのみです。 これを無視すると、環境に次の問題が発生します。

  • Unity Catalog で確立されたアクセス制御は、S3 または R2 バケットに直接アクセスできるユーザーによって回避される可能性があります。

  • 監査、リネージ、その他の Unity Catalog モニタリング機能では、直接アクセスはキャプチャされません。

  • データのライフサイクルが崩壊します。 つまり、Databricks内のテーブルを変更、削除、または展開すると、ストレージに直接アクセスできるコンシューマーが機能しなくなり、Databricksの外部に書き込むとデータが破損する可能性があります。

注:

ワークスペースが 2023 年 11 月 8 日より前に作成された場合、 Unity Catalogが有効になっていない可能性があります。 アカウント管理者は、ワークスペースの Unity Catalog を有効にする必要があります。 Unity Catalogのワークスペースを有効にする」を参照してください。

Unity CatalogはオブジェクトストレージをどのようにDatabricksに接続するか

Databricks on AWS は、 Unity Catalogに登録されたデータ資産のクラウド ストレージの場所として、AWS S3 と Cloudflare R2 バケット (パブリック プレビュー) の両方をサポートします。 R2 は主に、クラウドやリージョン間でのDelta Sharingなど、データ送信料金を回避したいユースケースを対象としています。 詳細については、「 Cloudflare R2 レプリカを使用するか、ストレージを R2 に移行する」を参照してください。

テーブルとボリュームを保持する基盤となるクラウド ストレージへのアクセスを管理するために、Unity Catalog は次のオブジェクト タイプを使用します。

  • ストレージ認証情報 はクラウド テナントに保存されているデータにアクセスするための認証および認可メカニズムを表します。S3 バケットの場合は IAM ロール、Cloudflare R2 バケットの場合は R2 API トークンを使用します。各ストレージ認証情報は、どのユーザーとグループが認証情報にアクセスできるかを制御するUnity Catalogアクセス制御ポリシーの対象となります。 ユーザーが Unity Catalogのストレージ認証情報にアクセスできない場合、リクエストは失敗し、Unity Catalogはユーザーに代わってクラウドテナントに対する認証を試行しません。 ストレージ資格情報を作成する権限は、外部ロケーションを定義する必要があるユーザーにのみ付与する必要があります。 「AWS S3 に接続するためのストレージ認証情報を作成する」および「Cloudflare R2 に接続するためのストレージ認証情報を作成する」を参照してください。

  • 外部ロケーションは、クラウドストレージパスと、クラウドストレージパスへのアクセスを許可するストレージ資格情報を組み合わせたオブジェクトです。 各ストレージの場所は、どのユーザーとグループが認証情報にアクセスできるかを制御するUnity Catalogのアクセス制御ポリシーの対象となります。 ユーザーが Unity Catalog内のストレージの場所にアクセスできない場合、リクエストは失敗し、Unity Catalog はユーザーに代わってクラウドテナントに対する認証を試行しません。 外部ロケーションを作成および使用する権限は、外部テーブル、外部ボリューム、または管理されたストレージの場所を作成する必要があるユーザーにのみ付与する必要があります。 「外部ロケーションを作成してクラウド ストレージを Databricks に接続する」を参照してください。

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

    外部ロケーションがマネージドテーブルおよびマネージドボリュームの保存に使用される場合、そのロケーションはマネージドストレージロケーションと呼ばれます。 マネージドストレージロケーションは、メタストア、カタログ、またはスキーマレベルで存在できます。 Databricks では、マネージドストレージロケーションをカタログレベルで構成することをお勧めします。 よりきめ細かな分離が必要な場合は、スキーマレベルで管理されたストレージの場所を指定できます。 Unity Catalog が有効になっているワークスペースには、デフォルトではメタストアレベルのストレージは自動的に存在しませんが、カタログレベルのストレージが定義されていない場合は、メタストアレベルでマネージドストレージロケーションを指定して、デフォルトのロケーションを提供できます。 Unity Catalog に対して手動で有効になっているワークスペースは、デフォルトでメタストア レベルの管理されたストレージの場所を受け取ります。 「Unity Catalog でマネージドストレージロケーションを指定する」および「Unity Catalogのベストプラクティス」を参照してください。

ボリュームは、ほとんどの Databricks ユーザーがクラウド オブジェクト ストレージ内の非表形式データを直接操作するために使用するセキュリティ保護可能なオブジェクトです。 Unity Catalogボリュームとは何ですか?」を参照してください。

注:

Unity Catalog は、クラウド ストレージ URI を使用した外部テーブルと外部ボリュームへのパスベースのアクセスをサポートしていますが、Databricks では、ユーザーがテーブル名を使用してすべての Unity Catalog テーブルの読み取りと書き込みを行い、 /Volumesパスを使用してボリューム内のデータにアクセスすることを推奨します。

次のステップ

管理者として Unity Catalog を使い始めたばかりの場合は、「 Unity Catalog の設定と管理」を参照してください。

新規ユーザーであり、ワークスペースがすでに Unity Catalog に対して有効になっている場合は、 「チュートリアル: 最初のテーブルを作成して権限を付与する」を参照してください。