この記事では、Unity カタログでストレージ資格情報を作成して Azure Data Lake Storage に接続する方法について説明します。
ストレージ資格情報には、クラウド ストレージへのアクセスを提供する長期的なクラウド資格情報が含まれています。 Unity カタログで 外部の場所 を作成して外部ストレージへのアクセスを管理する場合は、ストレージ資格情報とクラウド ストレージ パスを参照します。
ストレージ資格情報と外部の場所の詳細については、「 Unity カタログを使用してクラウド オブジェクト ストレージに接続する」を参照してください。
Unity カタログでサポートされるその他のクラウド ストレージ オプションについては、Unity カタログ でサポートされているクラウド ストレージ オプションに関する情報を参照してください。
注
Unity カタログを使用してクラウド ストレージではなく外部サービスへのアクセスを管理する場合は、「 サービス資格情報の作成」を参照してください。
Azure Data Lake Storage にアクセスするストレージ資格情報を作成する
ストレージ コンテナーへのアクセスを承認する ID としては、Azure マネージド ID またはサービス プリンシパルを使用できます。 マネージド ID を強くお勧めします。 それを使う、ネットワーク ルールによって保護されたストレージ アカウントに Unity Catalog がアクセスできるという利点があり (サービス プリンシパルでは不可能)、シークレットの管理とローテーションを行う必要がなくなります。 サービス プリンシパルを使用する場合は、「サービス プリンシパルを使って Unity Catalog のマネージド ストレージを作成する (レガシ)」を参照してください。
要件
Azure Databricks で:
- Unity Catalog に対して有効になっている Azure Databricks ワークスペース。
- ワークスペースにアタッチされている Unity Catalog メタストアの
CREATE STORAGE CREDENTIAL
権限。 アカウント管理者とメタストア管理者には、既定でこの特権があります。
Azure テナントで:
Azure Data Lake Storage ストレージ コンテナー。 エグレス料金を回避するには、データにアクセスするワークスペースと同じリージョンに存在する必要があります。
Azure Data Lake Storage ストレージ アカウントには階層型名前空間が必要です。
Azure リソース グループの共同作成者または所有者。
ストレージ アカウントの所有者またはユーザー アクセス管理者 Azure RBAC ロールを持つユーザー。
ストレージ資格情報を作成する
Azure portal で、「Unity Catalog のマネージド ID の構成」の手順を使用して、Azure Databricks アクセス コネクタを作成し、アクセスしたいストレージ コンテナーに対するアクセス許可をそれに割り当てます。
Azure Databricks アクセス コネクタはファースト パーティーの Azure リソースであり、マネージド ID を Azure Databricks アカウントに接続できます。 Azure のアクセス コネクタ リソースにストレージ資格情報を追加するには、Contributor ロール以上が必要です。
アクセス コネクタのリソース ID を書き留めます。
Unity Catalog が有効な Azure Databricks ワークスペースに、
CREATE STORAGE CREDENTIAL
特権を持つユーザーとしてログインします。メタストア管理者ロールとアカウント管理者ロールの両方にこの特権が含まれています。
[
カタログ。
[ Quick アクセス ] ページで、[ External data > ] ボタンをクリックし、[ Credentials タブに移動して、資格情報の作成 選択します。
Storage 資格情報を選択します。
[資格情報の種類] として [Azure Managed Identity] (Azure マネージド ID) を選びます。
資格情報の名前を入力し、アクセス コネクタのリソース ID を次の形式で入力します。
/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
(省略可能) ユーザー割り当てマネージド ID を使用してアクセス コネクタを作成した場合は、マネージド ID のリソース ID を [User-assigned managed identity ID] (ユーザー割り当てマネージド ID の ID) フィールドに次に形式で入力します。
/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>
(省略可能) ユーザーにこのストレージ資格情報を使用する外部の場所への読み取り専用アクセス権を持たせたい場合は、[読み取り専用] を選択します。 詳細については、「ストレージ資格情報を読み取り専用 としてマークする」を参照してください。
Create をクリックしてください。
(省略可能) ストレージの資格情報を特定のワークスペースにバインドする。
既定では、特権ユーザーであれば誰でも、メタストアに接続されている任意のワークスペースでストレージ資格情報を使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、[ワークスペース] タブに移動してワークスペースを割り当てます。 「(省略可能) ストレージの資格情報を特定のワークスペースにバインドする」を参照してください。
このストレージ資格情報を参照する外部の場所を作成します。
(省略可能) ストレージの資格情報を特定のワークスペースにバインドする
既定では、ストレージの資格情報は、メタストア内のすべてのワークスペースからアクセスできます。 つまり、ユーザーがそのストレージの資格情報で特権 (CREATE EXTERNAL LOCATION
など) を付与されている場合、メタストアに接続されたどのワークスペースからでもその特権を行使できるということです。 ワークスペースを使用してユーザーのデータ アクセスを分離する場合、特定のワークスペースからのみストレージの資格情報へのアクセスを許可することができます。 この機能はワークスペースのバインディングまたはストレージの資格情報の分離として知られています。
特定のワークスペースにストレージの資格情報をバインドする一般的なユース ケースは、クラウド管理者が運用クラウドのアカウント資格情報を使用してストレージの資格情報を構成し、Azure Databricks ユーザーがこの資格情報を使用して運用ワークスペース内にのみ外部の場所を作成できるようにするシナリオです。
ワークスペース バインディングの詳細については、「(省略可能) 特定のワークスペースに外部の場所を割り当てる」および「特定のワークスペースにカタログ アクセスを制限する」を参照してください。
注
ワークスペース バインディングは、ストレージ資格情報に対する特権が行使される時点で参照されます。 たとえば、ユーザーがストレージの資格情報を使用して外部の場所を作成する場合、ストレージの資格情報のワークスペース バインディングは、外部の場所が作成される場合にのみチェックされます。 外部の場所が作成されると、それはストレージの資格情報で構成されたワークスペース バインディングとは独立して機能します。
ストレージの資格情報を 1 つ以上のワークスペースにバインドする
特定のワークスペースにストレージの資格情報を割り当てるには、カタログ エクスプローラーまたは Databricks CLI を使用できます。
必要なアクセス許可: メタストア管理者、ストレージ資格情報所有者、またはストレージ資格情報の MANAGE
。
注
ストレージの資格情報が現在のワークスペースに割り当てられているかどうかに関係なく、メタストア管理者はカタログ エクスプローラーを使用してメタストア内のすべてのストレージの資格情報を表示できます。また、ストレージの資格情報所有者は、メタストア内で自分が所有しているすべてのストレージの資格情報を表示できます。 ワークスペースに割り当てられていないストレージの資格情報は、灰色で表示されます。
カタログ エクスプローラー
メタストアにリンクされているワークスペースにログインします。
サイドバーで、[データ] アイコンをクリック
カタログ。
[ Quick アクセス ] ページで、[ External data > ] ボタンをクリックし、[ Credentials ] タブに移動します。
ストレージの資格情報を選択し、[ワークスペース] タブに移動します。
[ワークスペース] タブ で、[All workspaces have access] (すべてのワークスペースにアクセス権がある) チェック ボックスをオフにします。
ストレージの資格情報が既に 1 つ以上のワークスペースにバインドされている場合、このチェック ボックスは既にオフになっています。
[Assign to workspaces] (ワークスペースに割り当てる) をクリックし、割り当てるワークスペースを入力または検索します。
アクセスを取り消すには、[ワークスペース] タブに移動し、ワークスペースを選択して [失効] をクリックします。 すべてのワークスペースからのアクセスを許可するには、[All workspaces have access] (すべてのワークスペースにアクセス権がある) チェック ボックスをオンにします。
コマンドラインインターフェース(CLI)
ストレージ資格情報をワークスペースに割り当てるには、2 つの Databricks CLI コマンド グループと 2 つの手順が必要です。
次の例では、<profile-name>
を Azure Databricks 認証構成プロファイルの名前に置き換えてください。 これには、個人用アクセス トークンを生成したワークスペースのワークスペース インスタンス名とワークスペース ID に加えて、個人用アクセス トークンの値が含まれている必要があります。 「Azure Databricks 個人用アクセス トークン認証」をご覧ください。
storage-credentials
コマンド グループのupdate
コマンドを使用して、ストレージ資格情報のisolation mode
をISOLATED
に設定します。databricks storage-credentials update <my-storage-credential> \ --isolation-mode ISOLATED \ --profile <profile-name>
既定の
isolation-mode
は、メタストアにアタッチされているすべてのワークスペースでOPEN
です。workspace-bindings
コマンド グループのupdate-bindings
コマンドを使用して、ワークスペースをストレージ資格情報に割り当てます。databricks workspace-bindings update-bindings storage-credential <my-storage-credential> \ --json '{ "add": [{"workspace_id": <workspace-id>}...], "remove": [{"workspace_id": <workspace-id>}...] }' --profile <profile-name>
"add"
プロパティと"remove"
プロパティを使用し、ワークスペース バインドを追加するか、削除します。注
読み取り専用バインディング (
BINDING_TYPE_READ_ONLY
) は、ストレージ資格情報では使用できません。 したがって、ストレージ資格情報のバインディングにbinding_type
を設定する理由はありません。
ストレージ資格情報のすべてのワークスペース割り当てを一覧表示するには、 workspace-bindings
コマンド グループの get-bindings
コマンドを使用します。
databricks workspace-bindings get-bindings storage-credential <my-storage-credential> \
--profile <profile-name>
ワークスペースからストレージの資格情報のバインドを解除する
カタログ エクスプローラーまたは workspace-bindings
CLI コマンド グループを使用してストレージ資格情報へのワークスペース アクセスを取り消す手順については、「ストレージの資格情報を 1 つ以上のワークスペースにバインドする」で説明しています。
次のステップ
ストレージ資格情報を使用するためのアクセス許可を他のユーザーに表示、更新、削除、および付与します。 「ストレージの資格情報を管理する」を参照してください。
ストレージ資格情報を使用して外部の場所を定義します。 「クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する」を参照してください。