外部の場所を管理する
この記事では、外部の場所のリストアップ、表示、更新、アクセス許可の付与、および削除の方法について説明します。
Note
Databricks は、ボリュームを使用してファイル アクセスを管理することを推奨しています。 「Unity Catalog ボリュームとは」を参照してください。
外部の場所を記述する
アクセス許可やワークスペース アクセスなど、外部の場所のプロパティを表示するには、カタログ エクスプローラーまたは SQL コマンドを使用できます。
カタログ エクスプローラー
- サイド バーで、 [カタログ] をクリックします。
- [ 確認アクセス ] ページで、[ External data > ] ボタンをクリックして、[ External Locations タブに移動します。
- 外部の場所の名前をクリックすると、そのプロパティが表示されます。
SQL
ノートブックまたは Databricks SQL エディターで次のコマンドを実行します。 <location-name>
を外部の場所の名前で置き換えます。
DESCRIBE EXTERNAL LOCATION <location-name>;
外部の場所に対する許可を表示する
外部の場所に対する許可を表示するには、次のようなコマンドを使用します。 必要に応じて結果をフィルター処理して、指定したプリンシパルの許可のみを表示することもできます。
SHOW GRANTS [<principal>] ON EXTERNAL LOCATION <location-name>;
プレースホルダー値を次のように置き換えます。
<location-name>
: クラウド テナント内のストレージ コンテナーのパスに対する読み取りと書き込みを認可する、外部の場所の名前。<principal>
: アカウント レベルのユーザーのメール アドレス、またはアカウント レベルのグループの名前。
Note
グループまたはユーザー名にスペースまたは @
記号が含まれている場合は、その周囲にバックティックを使用します (アポストロフィではありません)。 たとえば、
チーム
。
外部の場所に対するアクセス許可を付与する
このセクションでは、ノートブックまたは SQL クエリでカタログ エクスプローラーと SQL コマンドを使用して、外部の場所に対するアクセス許可を付与および取り消す方法について説明します。 代わりに Databricks CLI または Terraform を使用する方法については、「Databricks Terraform キュメント」と「Databricks CLI とは?」を参照してください。
外部の場所に対しては、以下のアクセス許可を付与できます。
CREATE EXTERNAL TABLE
CREATE EXTERNAL VOLUME
CREATE MANAGED STORAGE
必要なアクセス許可: メタストアと、外部の場所で参照されるストレージ資格情報の両方に対する CREATE EXTERNAL LOCATION
特権。 メタストア管理者は、既定でメタストアに対する CREATE EXTERNAL LOCATION
が付与されています。
外部の場所を使用するためのアクセス許可を付与するには:
カタログ エクスプローラー
- サイド バーで、 [カタログ] をクリックします。
- [ 確認アクセス ] ページで、[ External data > ] ボタンをクリックして、[ External Locations タブに移動します。
- 外部の場所の名前をクリックすると、そのプロパティが開きます。
- [アクセス許可] をクリックします。
- ユーザーまたはグループにアクセス許可を付与するには、各 ID を選択し、[許可] をクリックします。
- ユーザーまたはグループからアクセス許可を取り消すには、それぞれの 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 アクセス許可にも関係なく、ユーザーがそれらの外部の場所のファイルに書き込みを行うのを防ぎます。
- ユーザーがそれらの外部の場所にマネージド テーブルまたはボリュームを作成できないようにします。
- システムが外部の場所を作成時に適切に検証できるようにします。
外部の場所は作成時に読み取り専用としてマークできます。
また、カタログ エクスプローラーを使用して、外部の場所の作成後に読み取り専用状態を変更することもできます。
- サイド バーで、 [カタログ] をクリックします。
- [ 確認アクセス ] ページで、[ External data > ] ボタンをクリックして、[ External Locations タブに移動します。
- 外部の場所を選択し、[接続のテスト] ボタンの横にある [アクション] メニューをクリックし、[編集] を選択します。
- [編集] ダイアログで、[詳細オプション] をクリックし、[Limit to read-only use] (読み取り専用使用に制限) オプションを選択します。
- [更新] をクリックします。
外部の場所を変更する
外部の場所の所有者は名前を変更したり、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>;