次の方法で共有


Azure Data Lake Storage Gen2 に接続するためのストレージ資格情報を作成する

この記事では、Unity Catalog で Azure Data Lake Storage Gen2 に接続するためのストレージ資格情報を作成する方法について説明します。

テーブルとボリュームを保持する基になるクラウド ストレージへのアクセスを管理するために、Unity Catalog では次のオブジェクトの種類が使用されます。

  • ストレージの資格情報は、クラウド ストレージへのアクセスを提供する長期的なクラウドの資格情報をカプセル化します。
  • 外部の場所には、ストレージ資格情報とクラウド ストレージ パスへの参照が含まれます。

詳しくは、「Unity Catalog を使用してクラウド オブジェクト ストレージに接続する」をご覧ください。

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 Active Directory) サービス プリンシパルの両方に当てはまります。

Azure テナントで:

  • アクセスしたいデータが含まれるワークスペースと同じリージョンにある Azure Data Lake Storage Gen2 ストレージ コンテナー。

    Azure Data Lake Storage Gen2 ストレージ アカウントには階層型名前空間が必要です。

  • Azure リソース グループの共同作成者または所有者。

  • ストレージ アカウントの所有者またはユーザー アクセス管理者 Azure RBAC ロールを持つユーザー。

マネージド ID を使用してストレージ資格情報を作成する

ストレージ コンテナーへのアクセスを承認する ID としては、Azure マネージド ID またはサービス プリンシパルを使用できます。 マネージド ID を強くお勧めします。 それを使う、ネットワーク ルールによって保護されたストレージ アカウントに Unity Catalog がアクセスできるという利点があり (サービス プリンシパルでは不可能)、シークレットの管理とローテーションを行う必要がなくなります。 サービス プリンシパルを使用する場合は、「サービス プリンシパルを使って Unity Catalog のマネージド ストレージを作成する (レガシ)」を参照してください。

  1. Azure portal で、「Unity Catalog のマネージド ID の構成」の手順を使用して、Azure Databricks アクセス コネクタを作成し、アクセスしたいストレージ コンテナーに対するアクセス許可をそれに割り当てます。

    Azure Databricks アクセス コネクタはファースト パーティーの Azure リソースであり、マネージド ID を Azure Databricks アカウントに接続できます。 ストレージ資格情報を追加するには、Azure のアクセス コネクタ リソースに対する共同作成者以上のロールを持っている必要があります。

    アクセス コネクタのリソース ID を書き留めておきます。

  2. Unity Catalog が有効な Azure Databricks ワークスペースに、CREATE STORAGE CREDENTIAL 特権を持つユーザーとしてログインします。

    メタストア管理者ロールとアカウント管理者ロールの両方にこの特権が含まれています。 (Microsoft Entra ID サービス プリンシパルとネイティブ Azure Databricks サービス プリンシパルのいずれであっても) サービス プリンシパルとしてログインしている場合、マネージド ID を使用するストレージ資格情報を作成するには、アカウント管理者ロールが必要です。

  3. カタログ アイコンカタログ をクリックします。

  4. [+ 追加] ボタンをクリックし、メニューから [ストレージ資格情報の追加] を選びます。

    CREATE STORAGE CREDENTIAL 特権がない場合、このオプションは表示されません。

  5. [資格情報の種類] として [Azure Managed Identity] (Azure マネージド ID) を選びます。

  6. 資格情報の名前を入力し、アクセス コネクタのリソース ID を次の形式で入力します。

    /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  7. (省略可能) ユーザー割り当てマネージド ID を使用してアクセス コネクタを作成した場合は、マネージド ID のリソース ID を [User-assigned managed identity ID] (ユーザー割り当てマネージド ID の ID) フィールドに次に形式で入力します。

    /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>
    
  8. (省略可能) ユーザーにこのストレージ資格情報を使用する外部の場所への読み取り専用アクセス権を持たせたい場合は、[読み取り専用] を選択します。 詳細については、「ストレージ資格情報を読み取り専用 としてマークする」を参照してください。

  9. [保存] をクリックします。

  10. (省略可能) ストレージの資格情報を特定のワークスペースにバインドする。

    既定では、特権ユーザーであれば誰でも、メタストアに接続されている任意のワークスペースでストレージ資格情報を使用できます。 特定のワークスペースからのアクセスのみを許可する場合は、[ワークスペース] タブに移動してワークスペースを割り当てます。 「(省略可能) ストレージの資格情報を特定のワークスペースにバインドする」を参照してください。

  11. このストレージ資格情報を参照する外部の場所を作成します。

(省略可能) ストレージの資格情報を特定のワークスペースにバインドする

重要

この機能はパブリック プレビュー段階にあります。

既定では、ストレージの資格情報は、メタストア内のすべてのワークスペースからアクセスできます。 つまり、ユーザーがそのストレージの資格情報で特権 (CREATE EXTERNAL LOCATION など) を付与されている場合、メタストアに接続されたどのワークスペースからでもその特権を行使できるということです。 ワークスペースを使用してユーザーのデータ アクセスを分離する場合、特定のワークスペースからのみストレージの資格情報へのアクセスを許可することができます。 この機能はワークスペースのバインディングまたはストレージの資格情報の分離として知られています。

特定のワークスペースにストレージの資格情報をバインドする一般的なユース ケースは、クラウド管理者が運用クラウドのアカウント資格情報を使用してストレージの資格情報を構成し、Azure Databricks ユーザーがこの資格情報を使用して運用ワークスペース内にのみ外部の場所を作成できるようにするシナリオです。

ワークスペース バインディングの詳細については、「(省略可能) ストレージの資格情報を特定のワークスペースにバインドする」および「ワークスペースとカタログのバインドの例」を参照してください。

Note

ワークスペース バインディングは、ストレージ資格情報に対する特権が行使される時点で参照されます。 たとえば、ユーザーがストレージの資格情報を使用して外部の場所を作成する場合、ストレージの資格情報のワークスペース バインディングは、外部の場所が作成される場合にのみチェックされます。 外部の場所が作成されると、それはストレージの資格情報で構成されたワークスペース バインディングとは独立して機能します。

ストレージの資格情報を 1 つ以上のワークスペースにバインドする

特定のワークスペースにストレージの資格情報を割り当てる場合、カタログ エクスプローラーまたは Unity Catalog REST API を使用できます。

必要なアクセス許可: メタストア管理者またはストレージの資格情報所有者。

Note

ストレージの資格情報が現在のワークスペースに割り当てられているかどうかに関係なく、メタストア管理者はカタログ エクスプローラーを使用してメタストア内のすべてのストレージの資格情報を表示できます。また、ストレージの資格情報所有者は、メタストア内で自分が所有しているすべてのストレージの資格情報を表示できます。 ワークスペースに割り当てられていないストレージの資格情報は、灰色で表示されます。

カタログ エクスプローラー

  1. メタストアにリンクされているワークスペースにログインします。

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

  3. 画面の下部にある [外部データ] > [ストレージの資格情報] をクリックします。

  4. ストレージの資格情報を選択し、[ワークスペース] タブに移動します。

  5. [ワークスペース] タブ で、[All workspaces have access] (すべてのワークスペースにアクセス権がある) チェック ボックスをオフにします。

    ストレージの資格情報が既に 1 つ以上のワークスペースにバインドされている場合、このチェック ボックスは既にオフになっています。

  6. [Assign to workspaces] (ワークスペースに割り当てる) をクリックし、割り当てるワークスペースを入力または検索します。

アクセスを取り消すには、[ワークスペース] タブに移動し、ワークスペースを選択して [失効] をクリックします。 すべてのワークスペースからのアクセスを許可するには、[All workspaces have access] (すべてのワークスペースにアクセス権がある) チェック ボックスをオンにします。

Api

ストレージの資格情報をワークスペースに割り当てるには、2 つの API と 2 つの手順が必要です。 次の例では、<workspace-url> をワークスペース インスタンス名に置き換えます。 ワークスペース インスタンス名とワークスペース ID を取得する方法については、「ワークスペース オブジェクトの識別子を取得する」を参照してください。 アクセス トークンの取得の詳細については、「Azure Databricks 自動化の認証 - 概要」に関するページを参照してください。

  1. catalogs API を使用して、ストレージの資格情報の isolation modeISOLATED に設定します。

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/storage-credentials/<my-storage-credential> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
     "isolation_mode": "ISOLATED"
     }'
    

    既定の isolation mode は、メタストアにアタッチされているすべてのワークスペースで OPEN です。

  2. update bindings API を使用して、ワークスペースをカタログに割り当てます。

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/bindings/storage-credentials/<my-storage-credential> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "add": [{"workspace_id": <workspace-id>,...],
      "remove": [{"workspace_id": <workspace-id>,...]
    }'
    

    "add" プロパティと "remove" プロパティを使用し、ワークスペース バインドを追加するか、削除します。

    ..注:: 読み取り専用バインディング (BINDING_TYPE_READ_ONLY) は、ストレージの資格情報では使用できません。 したがって、ストレージの資格情報バインディングにバインドの種類を設定する理由はありません。

ストレージの資格情報のすべてのワークスペース割り当てを一覧表示するには、list bindings API を使用します。

   curl -L -X GET 'https://<workspace-url>/api/2.1/unity-catalog/bindings/storage-credentials/<my-storage-credential> \
   -H 'Authorization: Bearer <my-token> \

ワークスペースからストレージの資格情報のバインドを解除する

カタログ エクスプローラーまたは bindings API を使用してストレージの資格情報へのワークスペース アクセスを取り消す手順は、「ストレージの資格情報を 1 つ以上のワークスペースにバインドする」に含まれています。

次のステップ

ストレージ資格情報を使用するためのアクセス許可を表示、更新、削除、他のユーザーに付与できます。 「ストレージの資格情報を管理する」を参照してください。

ストレージ資格情報を使用して外部の場所を定義できます。 「クラウド ストレージを Azure Databricks に接続するための外部の場所を作成する」を参照してください。