外部の場所を管理する

この記事では、外部の場所のリストアップ、表示、更新、アクセス許可の付与、および削除の方法について説明します。

Note

Databricks は、ボリュームを使用してファイル アクセスを管理することを推奨しています。 「ボリュームの作成と操作」を参照してください。

外部の場所を記述する

外部の場所のプロパティを表示するには、カタログ エクスプローラーまたは SQL コマンドを使用します。

カタログ エクスプローラー

  1. サイドバーで カタログ アイコンカタログ をクリックします。
  2. 画面の下部にある [外部データ] > [外部の場所] をクリックします。
  3. 外部の場所の名前をクリックすると、そのプロパティが表示されます。

Sql

ノートブックまたは Databricks SQL エディターで次のコマンドを実行します。 <credential-name> を資格情報の名前で置き換えます。

DESCRIBE EXTERNAL LOCATION <location-name>;

外部の場所に対する許可を表示する

外部の場所に対する許可を表示するには、次のようなコマンドを使用します。 必要に応じて結果をフィルター処理して、指定したプリンシパルの許可のみを表示することもできます。

SHOW GRANTS [<principal>] ON EXTERNAL LOCATION <location-name>;

プレースホルダー値を次のように置き換えます。

  • <location-name>: クラウド テナント内のストレージ コンテナーのパスに対する読み取りと書き込みを認可する、外部の場所の名前。
  • <principal>: アカウント レベルのユーザーのメール アドレス、またはアカウント レベルのグループの名前。

Note

グループ名にスペースが含まれている場合は、(アポストロフィではなく) バックティックを使用して囲みます。

外部の場所に対するアクセス許可を付与する

このセクションでは、ノートブックまたは Databricks SQL クエリでカタログ エクスプローラーと SQL コマンドを使用して、外部の場所に対するアクセス許可を付与および取り消す方法について説明します。 代わりに Databricks CLI または Terraform を使用する方法については、「Databricks Terraform キュメント」と「Databricks CLI とは?」を参照してください。

外部の場所に対しては、以下のアクセス許可を付与できます。

  • CREATE EXTERNAL TABLE
  • CREATE EXTERNAL VOLUME
  • CREATE MANAGED STORAGE

必要なアクセス許可: メタストアと、外部の場所で参照されるストレージ資格情報の両方に対する CREATE EXTERNAL LOCATION 特権。 メタストア管理者は、既定でメタストアに対する CREATE EXTERNAL LOCATION が付与されています。

外部の場所を使用するためのアクセス許可を付与するには:

カタログ エクスプローラー

  1. サイドバーで カタログ アイコンカタログ をクリックします。
  2. 画面の下部にある [外部データ] > [外部の場所] をクリックします。
  3. 外部の場所の名前をクリックすると、そのプロパティが開きます。
  4. [アクセス許可] をクリックします。
  5. ユーザーまたはグループにアクセス許可を付与するには、各 ID を選択し、[許可] をクリックします。
  6. ユーザーまたはグループからアクセス許可を取り消すには、それぞれの ID を選択して、[取り消し] をクリックします。

Sql

ノートブックまたは SQL クエリ エディターで次のコマンドを実行します。 次の例では、外部の場所を参照する外部テーブルを作成する権限を付与します。

GRANT CREATE EXTERNAL TABLE ON EXTERNAL LOCATION <location-name> TO <principal>;

プレースホルダー値を次のように置き換えます。

  • <location-name>: クラウド テナント内のストレージ コンテナーのパスに対する読み取りと書き込みを認可する、外部の場所の名前。
  • <principal>: アカウント レベルのユーザーのメール アドレス、またはアカウント レベルのグループの名前。

Note

グループ名にスペースが含まれている場合は、(アポストロフィではなく) バックティックを使用して囲みます。

外部の場所の所有者を変更する

外部の場所の作成者は、その初期所有者です。 所有者を別のアカウント レベルのユーザーまたはグループに変更するには、ノートブックまたは Databricks SQL エディターで次のコマンドを実行するか、カタログ エクスプローラーを使用します。 プレースホルダー値を次のように置き換えます。

  • <location-name>: 資格情報の名前。
  • <principal>: アカウント レベルのユーザーのメール アドレス、またはアカウント レベルのグループの名前。
ALTER EXTERNAL LOCATION <location-name> OWNER TO <principal>

外部の場所を読み取り専用としてマークする

ユーザーに外部の場所への読み取り専用アクセス権を持たせたい場合は、カタログ エクスプローラーを使用して外部の場所を読み取り専用としてマークできます。

外部の場所を読み取り専用にする:

  • ストレージ資格情報の基になる Azure マネージド ID によって付与される書き込みアクセス許可に関係なく、あるいはその外部の場所に付与された Unity Catalog アクセス許可にも関係なく、ユーザーがそれらの外部の場所のファイルに書き込みを行うのを防ぎます。
  • ユーザーがそれらの外部の場所にテーブルまたはボリュームを (外部とマネージドでのいずれでも) 作成できないようにします。
  • システムが外部の場所を作成時に適切に検証できるようにします。

外部の場所は作成時に読み取り専用としてマークできます。

また、カタログ エクスプローラーを使用して、外部の場所の作成後に読み取り専用状態を変更することもできます。

  1. サイドバーで カタログ アイコンカタログ をクリックします。
  2. 画面の下部にある [外部データ] > [外部の場所] をクリックします。
  3. 外部の場所を選び、オブジェクト行上の ケバブ メニュー ケバブ メニュー (3 点メニューとも呼ばれます) をクリックして [編集] を選びます。
  4. 編集ダイアログで、[読み取り専用] オプションを選択します。

外部の場所を変更する

外部の場所の所有者は名前を変更したり、URI を変更したり、外部の場所のストレージの資格情報を変更したりできます。

外部の場所の名前を変更するには、次の操作を行います。

ノートブックまたは Databricks SQL エディターで次のコマンドを実行します。 プレースホルダー値を次のように置き換えます。

  • <location-name>: 場所の名前。
  • <new-location-name>: 場所の新しい名前。
ALTER EXTERNAL LOCATION <location-name> RENAME TO <new-location-name>;

クラウド テナントで外部の場所が指す URI を変更するには、次の操作を行います。

ノートブックまたは Databricks SQL エディターで次のコマンドを実行します。 プレースホルダー値を次のように置き換えます。

  • <location-name>: 外部の場所の名前。
  • <url>: 場所でアクセスを認可するクラウド テナント内の新しいストレージ URL。
ALTER EXTERNAL LOCATION location_name SET URL '<url>' [FORCE];

外部テーブルが外部の場所に依存している場合でも、FORCE オプションによって URL が変更されます。

外部の場所で使用するストレージ資格情報を変更するには、次の操作を行います。

ノートブックまたは Databricks SQL エディターで次のコマンドを実行します。 プレースホルダー値を次のように置き換えます。

  • <location-name>: 外部の場所の名前。
  • <credential-name>: クラウド テナント内の場所の URL へのアクセスを付与するストレージの資格情報の名前。
ALTER EXTERNAL LOCATION <location-name> SET STORAGE CREDENTIAL <credential-name>;

外部の場所を削除する

外部の場所を削除 (ドロップ) するには、その所有者である必要があります。 外部の場所を削除するには、次の操作を行います。

ノートブックまたは Databricks SQL エディターで次のコマンドを実行します。 角かっこ内の項目は省略可能です。 <location-name> を外部の場所の名前で置き換えます。

DROP EXTERNAL LOCATION [IF EXISTS] <location-name>;