Azure Data Lake Storage Gen2 に接続するためのストレージ資格情報を作成する
この記事では、Unity Catalog で Azure Data Lake Storage Gen2 に接続するためのストレージ資格情報を作成する方法について説明します。
テーブルとボリュームを保持する基になるクラウド ストレージへのアクセスを管理するために、Unity Catalog では次のオブジェクトの種類が使用されます。
- ストレージの資格情報は、クラウド ストレージへのアクセスを提供する長期的なクラウドの資格情報をカプセル化します。
- 外部の場所には、ストレージ資格情報とクラウド ストレージ パスへの参照が含まれます。
詳細については、「 Unity カタログを使用したクラウド ストレージへのアクセスの管理を参照してください。
Note
Unity カタログを使用してクラウド ストレージではなく外部サービスへのアクセスを管理する場合は、「 サービス資格情報を使用した外部クラウド サービスへのアクセスの管理」を参照してください。
Unity Catalog では、Azure Databricks に関して、Azure Data Lake Storage Gen2 コンテナーと Cloudflare R2 バケットの 2 つのクラウド ストレージ オプションがサポートされています。 Cloudflare R2 は、主に、データ エグレス料金を回避したい Delta Sharing のユース ケースのためのものです。 Azure Data Lake Storage Gen2 は、他のほとんどのユース ケースに適しています。 この記事では、Azure Data Lake Storage Gen2 コンテナー用のストレージ資格情報の作成に焦点を当てます。 Cloudflare R2 については、「Cloudflare R2 に接続するためのストレージ資格情報を作成する」をご覧ください。
Azure Data Lake Storage Gen2 コンテナーにアクセスするためのストレージ資格情報を作成するには、Azure マネージド ID を参照する Azure Databricks アクセス コネクタを作成し、それにストレージ コンテナーに対するアクセス許可を割り当てます。 その後、ストレージ資格情報の定義でそのアクセス コネクタを参照します。
要件
Azure Databricks で:
Unity Catalog に対して有効になっている Azure Databricks ワークスペース。
ワークスペースにアタッチされている Unity Catalog メタストアの
CREATE STORAGE CREDENTIAL
権限。 アカウント管理者とメタストア管理者には、既定でこの特権があります。Note
マネージド ID を使用するストレージ資格情報を作成するには、サービス プリンシパルがアカウント管理者ロールを持っている必要があります。
CREATE STORAGE CREDENTIAL
をサービス プリンシパルに委任することはできません。 これは、Azure Databricks のサービス プリンシパルと Microsoft Entra ID のサービス プリンシパルの両方に当てはまります。
Azure テナントで:
Azure Data Lake Storage Gen2 ストレージ コンテナー。 エグレス料金を回避するには、データにアクセスするワークスペースと同じリージョンに存在する必要があります。
Azure Data Lake Storage Gen2 ストレージ アカウントには階層型名前空間が必要です。
Azure リソース グループの共同作成者または所有者。
ストレージ アカウントの所有者またはユーザー アクセス管理者 Azure RBAC ロールを持つユーザー。
マネージド ID を使用してストレージ資格情報を作成する
ストレージ コンテナーへのアクセスを承認する ID としては、Azure マネージド ID またはサービス プリンシパルを使用できます。 マネージド ID を強くお勧めします。 それを使う、ネットワーク ルールによって保護されたストレージ アカウントに Unity Catalog がアクセスできるという利点があり (サービス プリンシパルでは不可能)、シークレットの管理とローテーションを行う必要がなくなります。 サービス プリンシパルを使用する場合は、「サービス プリンシパルを使って Unity Catalog のマネージド ストレージを作成する (レガシ)」を参照してください。
Azure portal で、「Unity Catalog のマネージド ID の構成」の手順を使用して、Azure Databricks アクセス コネクタを作成し、アクセスしたいストレージ コンテナーに対するアクセス許可をそれに割り当てます。
Azure Databricks アクセス コネクタはファースト パーティーの Azure リソースであり、マネージド ID を Azure Databricks アカウントに接続できます。 ストレージ資格情報を追加するには、Azure のアクセス コネクタ リソースに対する共同作成者以上のロールを持っている必要があります。
アクセス コネクタのリソース ID を書き留めておきます。
Unity Catalog が有効な Azure Databricks ワークスペースに、
CREATE STORAGE CREDENTIAL
特権を持つユーザーとしてログインします。メタストア管理者ロールとアカウント管理者ロールの両方にこの特権が含まれています。 (Microsoft Entra ID サービス プリンシパルとネイティブ Azure Databricks サービス プリンシパルのいずれであっても) サービス プリンシパルとしてログインしている場合、マネージド ID を使用するストレージ資格情報を作成するには、アカウント管理者ロールが必要です。
[カタログ] をクリックします。
[ 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 ユーザーがこの資格情報を使用して運用ワークスペース内にのみ外部の場所を作成できるようにするシナリオです。
ワークスペース バインディングの詳細については、「(省略可能) 特定のワークスペースに外部の場所を割り当てる」および「特定のワークスペースにカタログ アクセスを制限する」を参照してください。
Note
ワークスペース バインディングは、ストレージ資格情報に対する特権が行使される時点で参照されます。 たとえば、ユーザーがストレージの資格情報を使用して外部の場所を作成する場合、ストレージの資格情報のワークスペース バインディングは、外部の場所が作成される場合にのみチェックされます。 外部の場所が作成されると、それはストレージの資格情報で構成されたワークスペース バインディングとは独立して機能します。
ストレージの資格情報を 1 つ以上のワークスペースにバインドする
特定のワークスペースにストレージの資格情報を割り当てるには、カタログ エクスプローラーまたは Databricks CLI を使用できます。
必要なアクセス許可: メタストア管理者またはストレージの資格情報所有者。
Note
ストレージの資格情報が現在のワークスペースに割り当てられているかどうかに関係なく、メタストア管理者はカタログ エクスプローラーを使用してメタストア内のすべてのストレージの資格情報を表示できます。また、ストレージの資格情報所有者は、メタストア内で自分が所有しているすべてのストレージの資格情報を表示できます。 ワークスペースに割り当てられていないストレージの資格情報は、灰色で表示されます。
カタログ エクスプローラー
メタストアにリンクされているワークスペースにログインします。
サイド バーで、 [カタログ] をクリックします。
[ 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"
プロパティを使用し、ワークスペース バインドを追加するか、削除します。Note
読み取り専用バインディング (
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 に接続するための外部の場所を作成する」を参照してください。