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

DBFSルート内のデータの外部ロケーションの作成

この記事では、DBFSルートのストレージロケーションへのアクセスを制御するために、 Unity Catalogで外部ロケーションを構成する方法について説明します。Databricks では DBFSルート ストレージにデータを格納しないことをお勧めしますが、従来のプラクティスにより、ワークスペースがアクセスする場合もあります。

外部ロケーション は、ストレージ資格情報をクラウド オブジェクト ストレージ コンテナーに関連付ける Unity Catalog セキュリティ保護可能なオブジェクトです。 外部ロケーションは、マネージドテーブルとボリュームの管理ストレージロケーションを定義し、外部テーブルと外部ボリュームを含むストレージロケーションへのアクセスを管理するために使用されます。

ワークスペース ローカルのレガシDatabricks Hive metastoreがDBFSルート にデータを格納し、レガシHive metastore をフェデレーションして、チームがUnity Catalog を使用してHive metastore テーブルを操作できるようにする場合は、外部ロケーションを作成する必要があります。Hive metastore フェデレーション: Hive metastoreに登録されたテーブルを管理するための Unity Catalog を有効にするおよびレガシーワークスペースHive metastoreの Hive metastoreフェデレーションを有効にする を参照してください。

始める前に

DBFSルートの外部ロケーションを作成するには、DBFSルートを含むS3バケットへのアクセスを許可するUnity Catalogのストレージ認証情報 にアクセスできる必要があります。そうでない場合は、外部ロケーションの作成時に、そのバケットへのアクセス権を付与するIAMロールのARNを指定できます。このプロセスについては、次の手順で説明します。 Databricksからクラウド ストレージの場所へのアクセスを許可するIAMロールの作成に関する情報については、ステップ 1: IAMロールを作成するを参照してください。

ルートを含む S3 バケットにはオブジェクト所有権が必要である DBFSバケット 所有者が強制 されている必要があります。 オブジェクトの所有権が Object Writer に設定されている場合、Unity Catalog ストレージ資格情報は S3 バケット内のデータを読み取ることができません。

注記

DBFSルートを含むS3 バケットを暗号化するために顧客管理のキーを使用する場合、同じキーを使用して新しい外部ロケーションの暗号化を有効にすることができます。以下の手順と KMS を使用した S3 の暗号化の設定を参照してください。

権限の要件 :

  • メタストアに対する CREATE STORAGE CREDENTIAL 権限と CREATE EXTERNAL LOCATION 権限が必要です。 メタストア管理者は、デフォルトによってこれらの特権を持っています。
注記

DBFSルートのストレージ場所のストレージ資格情報が既に存在する場合、外部ロケーションを作成するユーザーは の CREATE STORAGE CREDENTIALは必要ありませんが、ストレージ資格情報とメタストアの両方でCREATE EXTERNAL LOCATIONする必要があります。

  • 外部ロケーションの作成時にシステムにストレージ資格情報を作成させるには、ワークスペース管理者である必要があります。

    DBFSルートのストレージの場所へのアクセスを許可するストレージ資格情報が既に存在し、ストレージ資格情報とメタストアの両方にCREATE EXTERNAL LOCATIONがある場合は、ワークスペース管理者である必要はありません。

外部ロケーションの作成

カタログエクスプローラを使用して、 DBFSルートの外部ロケーションを作成できます。

  1. サイドバーで、「カタログアイコン カタログ 」をクリックします。

  2. 外部データ > をクリックし 外部ロケーションの作成 をクリックします。

  3. 手動 をクリックし、 次へ をクリックします。

    AWS Quickstart オプションを使用して、DBFSルートの外部ロケーションを作成することはできません。

  4. 外部ロケーション名 を入力します。

  5. URL で、 DBFSマウントからコピー をクリックし、 DBFSルートからコピー を選択します。

    URL フィールドと subpath フィールドには、 DBFSルートへのクラウド ストレージ パスが入力されます。

important

DBFSルートの外部ロケーションを作成する場合は、バケット全体へのパスではなく、DBFSルートロケーションへのサブパスを使用する必要があります。URL とサブパスには、 Hive metastore テーブルのデフォルト ストレージの場所である user/hive/warehouse が事前に入力されています。 DBFSルート内のデータに対するより詳細なアクセス制御が必要な場合は、DBFSルート内のサブパスに対して個別の外部ロケーションを作成できます。

  1. DBFSルートのクラウドストレージロケーションへのアクセスを許可するストレージ認証情報を選択するか、何も定義されていない場合は、[ +新しいストレージ認証情報を作成 ]をクリックします。

    ストレージ認証情報を作成するには、 認証タイプAWS IAMロール を選択し、S3バケットのワークスペース レベルのDBFS ルート プレフィックスへのアクセスを許可するIAMロールのARNを入力します。Databricksからクラウド ストレージの場所へのアクセスを許可するIAMロールの作成に関する情報については、ステップ 1: IAMロールを作成するを参照してください。

警告

AWS IAMロール ポリシーは、アクセスを DBFSルート サブパス (s3://<bucket>/<shard-name>/<workspace-id>/など) に限定する必要があります。サブパスを使用して DBFSルートの場所へのアクセスを制限しないと、ワークスペースの内部ストレージの場所が公開され、ワークスペースレベルのアクセス制御が損なわれたり、バケットが共有されている場合は別のワークスペースのデータが失われたりする可能性があります。

  1. (オプション)コメントを追加します。

  2. (オプション) 詳細オプション をクリックし、 フォールバック モード を有効にします。

    フォールバックモードは、レガシーワークロードの移行シナリオを対象としています。 「 外部ロケーションでフォールバックモードを有効にする」を参照してください。

  3. (オプション)S3 バケットで SSE 暗号化が必要な場合は、Unity Catalog の外部テーブルとボリュームが S3 バケット内のデータにアクセスできるように、暗号化アルゴリズムを構成できます。

    DBFSルートを含むワークスペースストレージバケットがDatabricks暗号化キー設定を使用して暗号化されている場合は、同じキーを使用して新しい外部ロケーションの暗号化を有効にできます。手順については、「 外部ロケーションでの暗号化アルゴリズムの構成」を参照してください。

  4. 作成 をクリックします。

  5. [ 権限 ]タブに移動して、外部ロケーションの使用権限を付与します。

    1. 付与 をクリックします。
    2. プリンシパル フィールドで ユーザー、グループ、またはサービスプリンシパル を選択し、付与する権限を選択します。
    3. 付与 をクリックします。
  6. (オプション)この外部ロケーションにアクセスできるワークスペースを設定します。

    デフォルトを使用すると、この Unity Catalog メタストアを使用するワークスペースのユーザーに、この場所のデータへのアクセス権を付与できます。 そのアクセスを特定のワークスペースに制限できます。 Databricks では、 DBFSルート があるワークスペースへのアクセスを制限することをお勧めします。

    外部ロケーションを 1 つ以上のワークスペースにバインドする」を参照してください。