Unity カタログでは、同じメタストアにアタッチされているすべてのワークスペースから、すべてのカタログに既定でアクセスできます。 ワークスペース カタログ バインドを使用すると、この既定値をオーバーライドして、カタログを 1 つ以上の特定のワークスペースに制限できます。 カタログに対する明示的な特権付与を持つユーザーの場合でも、非バインド ワークスペースからのアクセスは拒否されます。
ワークスペース カタログ バインドを使用する理由
組織とコンプライアンスの要件では、多くの場合、特定のデータは、指定された環境でのみアクセス可能な状態を維持する必要があることを指定します。 次のことも必要になる場合があります。
- 開発環境またはテスト環境から運用データを分離します。
- 特定のデータ ドメインが結合されないようにします。
- 機密データを特定のワークスペースでのみ処理できることを確認します。
Azure Databricksでは、ワークスペースはプライマリ データ処理環境であり、カタログはプライマリ データ ドメインです。 ワークスペース カタログ バインドは、これら 2 つの概念を結び付け、 MANAGE 特権を持つカタログ所有者とユーザーが、どのワークスペースがどのカタログにアクセスできるかを定義できるようにします。
ワークスペース カタログ バインドのしくみ
カタログを特定のワークスペースにバインドすると、割り当てたワークスペースのみがカタログにアクセスできます。 割り当てられた一覧に含まれていないワークスペースは、ユーザーがカタログにアクセスしようとするとエラーを受け取り、その結果、ユーザーが持つ個々の特権が上書きされます。
この図では、prod_catalog が 2 つの運用ワークスペースにバインドされています。 ユーザーがSELECTのテーブルに対してprod_catalog許可を保持している場合でも、Dev ワークスペースからそのテーブルにアクセスすることはできません。
読み取り専用アクセス
カタログをワークスペースにバインドする場合は、必要に応じて、そのワークスペースを読み取り専用アクセスに制限できます。 そのワークスペースからカタログへのすべての書き込み操作はブロックされます。
既定のワークスペース・カタログの挙動
既定の開いている動作の例外は、すべての新しいワークスペースに対して自動的に作成される既定のワークスペース カタログ です。 このワークスペース カタログは、既定で独自のワークスペースにのみバインドされます。 このカタログのバインドを解除するか、他のワークスペースへのアクセスを拡張する場合は、ワークスペース管理者グループがワークスペースローカルであり、ワークスペース間で使用できないため、必要なアクセス許可を手動で付与する必要があります。
プラットフォーム全体の適用
ワークスペース カタログ バインドは、プラットフォーム全体で一貫して適用されます。
- 情報スキーマ クエリは、現在のワークスペースでアクセスできるカタログのみを返します。
- データ系列とカタログ エクスプローラーには、現在のワークスペースに割り当てられているカタログのみが表示されます。
ワークスペースにバインドできる要素
ワークスペース バインドは、カタログ以外にも適用されます。 バインドすることもできます。
- 外部の場所: 特定のクラウド ストレージ パスにアクセスできるワークスペースを制限します。 「(省略可能) 外部の場所を特定のワークスペースに割り当てる」を参照してください。
- ストレージ資格情報: 特定のクラウド資格情報を使用できるワークスペースを制限します。 「(省略可能) ストレージの資格情報を特定のワークスペースにバインドする」を参照してください。
- サービス資格情報: 特定のクラウド サービス資格情報を使用できるワークスペースを制限します。 (省略可能) 特定のワークスペースにサービス資格情報を割り当てるを参照してください。
カタログを 1 つ以上のワークスペースにバインドする
特定のワークスペースにカタログを割り当てるには、カタログ エクスプローラーまたは Databricks CLI を使用できます。
アクセス許可が必要な: メタストア管理者、カタログ所有者、またはカタログの MANAGE と USE CATALOG。
Note
カタログが現在のワークスペースに割り当てられているかどうかに関係なく、メタストア管理者はメタストア内のすべてのカタログを表示でき、カタログ所有者はメタストアで所有しているすべてのカタログを表示できます。 ワークスペースに割り当てられていないカタログは淡色表示され、子オブジェクトは表示またはクエリ可能ではありません。
カタログ エクスプローラー
メタストアにリンクされているワークスペースにログインします。
[
カタログ。
[カタログ] ウィンドウで、左側のカタログ名をクリックします。
メインのカタログ エクスプローラー ペインには、既定で [カタログ] 一覧が表示されます。 そこでカタログを選択することもできます。
[ワークスペース] タブ で、[All workspaces have access] (すべてのワークスペースにアクセス権がある) チェック ボックスをオフにします。
カタログが既に 1 つ以上のワークスペースにバインドされている場合、このチェック ボックスは既にオフになっています。
[Assign to workspaces] (ワークスペースに割り当てる) をクリックし、割り当てるワークスペースを入力または検索します。
(省略可能) ワークスペース アクセスを読み取り専用に制限します。
[アクセス レベルの管理] メニューで [読み取り専用にアクセスを変更する] を選択します。
この選択はいつでも、カタログを編集し、[読み取りと書き込みにアクセスを変更する] を選択することで元に戻すことができます。
アクセスを取り消すには、[ワークスペース] タブに移動し、ワークスペースを選択して [失効] をクリックします。
CLI
Databricks CLI コマンド グループは 2 つあり、カタログをワークスペースに割り当てるには 2 つの手順が必要です。
次の例では、<profile-name> を Azure Databricks 認証構成プロファイルの名前に置き換えてください。 これには、個人用アクセス トークンを生成したワークスペースのワークスペース インスタンス名とワークスペース ID に加えて、個人用アクセス トークンの値が含まれている必要があります。
「個人用アクセス トークン認証 (レガシ)」を参照してください。
catalogsコマンド グループのupdateコマンドを使用して、カタログのisolation modeをISOLATEDに設定します。databricks catalogs update <my-catalog> \ --isolation-mode ISOLATED \ --profile <profile-name>既定の
isolation-modeはOPENで、メタストアにアタッチされているすべてのワークスペースに適用されます。workspace-bindingsコマンド グループのupdate-bindingsコマンドを使用して、ワークスペースをカタログに割り当てます。databricks workspace-bindings update-bindings catalog <my-catalog> \ --json '{ "add": [{"workspace_id": <workspace-id>, "binding_type": <binding-type>}...], "remove": [{"workspace_id": <workspace-id>, "binding_type": "<binding-type>}...] }' --profile <profile-name>"add"プロパティと"remove"プロパティを使用し、ワークスペース バインドを追加するか、削除します。<binding-type>は、"BINDING_TYPE_READ_WRITE"(既定値) または"BINDING_TYPE_READ_ONLY"のどちらかにできます。
カタログのすべてのワークスペース割り当てを一覧表示するには、 workspace-bindings コマンド グループの get-bindings コマンドを使用します。
databricks workspace-bindings get-bindings catalog <my-catalog> \
--profile <profile-name>
ワークスペースからカタログをバインド解除する
カタログ エクスプローラーまたは workspace-bindings CLI コマンド グループを使用してカタログへのワークスペース アクセスを取り消す手順は、「カタログを 1 つ以上のワークスペースにバインドする」に含まれています。
Important
ワークスペースが Unity カタログに対して自動的に有効になっていて、既定のワークスペース カタログがある場合、ワークスペース管理者はそのカタログを所有し、 ワークスペース内のそのカタログに対するすべてのアクセス許可を持ちます。 そのカタログをバインド解除するか、他のカタログにバインドする場合は、ワークスペース管理者グループはワークスペースローカル グループであるため、ワークスペース管理者グループのメンバーに個別のユーザーとして、またはアカウントレベルのグループを使って、必要なアクセス許可を手動で付与する必要があります。 アカウント グループとワークスペースローカル グループの詳細については、「 グループ ソース」を参照してください。