外部ロケーションを管理する

この記事では、 外部ロケーションの一覧表示、表示、更新、アクセス許可の付与、および削除する方法について説明します。

注:

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

外部ロケーションの説明

外部ロケーションのプロパティを表示するには、「カタログエクスプローラ」(Catalog Explorer) または SQL コマンドを使用します。

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

  2. 画面の下部で、 [外部データ] > [外部位置]をクリックします。

  3. 外部ロケーションの名前をクリックすると、そのプロパティが表示されます。

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

DESCRIBE EXTERNAL LOCATION <location-name>;

外部ロケーションの助成金を表示する

外部ロケーションに許可を表示するには、次のようなコマンドを使用します。 オプションで、結果をフィルタリングして、指定したプリンシパルの許可のみを表示できます。

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

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

  • <location-name>: クラウドテナント内の GCS バケットからの読み取りと書き込みを許可する外部ロケーションの名前。

  • <principal>:アカウントレベルのユーザーのメールアドレスまたはアカウントレベルのグループの名前。

注:

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

外部ロケーションに対するアクセス許可の付与

このセクションでは、カタログエクスプローラーとノートブックのSQLコマンド、またはDatabricks 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>: クラウドテナント内の GCS バケットからの読み取りと書き込みを許可する外部ロケーションの名前。

  • <principal>:アカウントレベルのユーザーのメールアドレスまたはアカウントレベルのグループの名前。

注:

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

外部ロケーション の所有者を変更する

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

  • <location-name>:資格情報の名前。

  • <principal>:アカウントレベルのユーザーのメールアドレスまたはアカウントレベルのグループの名前。

ALTER EXTERNAL LOCATION <location-name> OWNER TO <principal>

外部ロケーションを読み取り専用にする

ユーザーに外部ロケーションへの読み取り専用アクセスを許可する場合は、「カタログエクスプローラ」(Catalog Explorer) を使用して外部ロケーションを読み取り専用としてマークできます。

外部ロケーションを読み取り専用にする:

  • ストレージ資格情報の基になるサービス アカウントによって付与された書き込みアクセス許可や、その外部ロケーションに付与された Unity Catalog アクセス許可に関係なく、ユーザーがこれらの外部ロケーション内のファイルに書き込めないようにします。

  • ユーザーがこれらの外部ロケーションにテーブルまたはボリューム (外部またはマネージド) を作成できないようにします。

  • システムが作成時に外部ロケーションを適切に検証できるようにします。

外部ロケーションは、作成時に読み取り専用としてマークできます。

「カタログエクスプローラ」(Catalog Explorer) を使用して、外部ロケーションの作成後に読み取り専用ステータスを変更することもできます。

  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>;