共有コンピューティングの許可リスト ライブラリと init スクリプト

Databricks Runtime 13.3 LTS 以降では、Unity Catalog の allowlist にライブラリと init スクリプトを追加できます。 これにより、ユーザーは、共有アクセス モードで構成されたコンピューティングでこれらの成果物を利用できます。

そのディレクトリまたはファイルが存在する前に、ディレクトリまたはファイルパスを許可リストに登録できます。 「Unity Catalog ボリュームにファイルをアップロードする」を参照してください。

Note

許可リストを変更するには、メタストア管理者であるか、MANAGE ALLOWLIST 特権を持っている必要があります。 「MANAGE ALLOWLIST」を参照してください。

重要

Unity Catalog 対応の共有コンピューティングで JDBC ドライバーまたはカスタム Spark データ ソースとして使用されるライブラリには、ANY FILE アクセス許可が必要です。

一部のインストール済みライブラリでは、すべてのユーザーのデータが 1 つの共通一時ディレクトリに保存されます。 これらのライブラリは、ユーザーの分離を損なう可能性があります。

許可リストに項目を追加する方法

Catalog Explorer または REST API を使用して、allowlist に項目を追加できます。

Catalog Explorer で許可リストに項目を追加するためのダイアログを開くには、次の操作を行います:

  1. Azure Databricks ワークスペースで、カタログ アイコンカタログ をクリックします。
  2. [歯車アイコン] をクリックして、メタストアの詳細とアクセス許可 UI を開きます。
  3. [許可された JAR/Init スクリプト] を選択します。
  4. 追加をクリックします。

重要

このオプションは、十分な特権を持つユーザーに対してのみ表示されます。 許可リスト UI にアクセスできない場合は、メタストア管理者に問い合わせて、許可リスト ライブラリと init スクリプトのサポートを受けてください。

許可リストに init スクリプトを追加する

許可リスト ダイアログで以下の手順を実行して、許可リストに init スクリプトを追加します。

  1. [種類] で、[Init Script](init スクリプト) を選択します。
  2. [ソースの種類] で、[ボリューム] またはオブジェクト ストレージ プロトコルを選択します。
  3. 許可リストに追加するソース パスを指定します。 「許可リストでパスに対するアクセス許可はどのように適用されますか?」を参照してください。

許可リストに JAR を追加する

許可リストに JAR を追加するには、許可リスト ダイアログで以下の手順を実行します。

  1. [種類] で、[JAR] を選択します。
  2. [ソースの種類] で、[ボリューム] またはオブジェクト ストレージ プロトコルを選択します。
  3. 許可リストに追加するソース パスを指定します。 「許可リストでパスに対するアクセス許可はどのように適用されますか?」を参照してください。

Maven 座標を許可リストに追加する

座標許可リストに Maven 座標を追加するには、許可リスト ダイアログで以下の手順を実行します。

  1. [種類] で、[Maven] を選択します。
  2. [ソースの種類] で、[座標] を選択します。
  3. 次の形式で座標を入力します: groudId:artifactId:version
    • 次の形式を許可リストに掲載することで、ライブラリのすべてのバージョンを含めることができます: groudId:artifactId
    • 次の形式を許可リストに掲載することで、すべての成果物をグループに含めることができます: groupId

許可リストでパスに対するアクセス許可はどのように適用されますか?

許可リストを使用して、Unity Catalog ボリュームとオブジェクト ストレージに格納されている JAR または init スクリプトへのアクセス権を付与できます。 ファイルではなくディレクトリのパスを追加した場合、許可リストのアクセス許可は含まれるファイルとディレクトリに伝達されます。

プレフィックスの一致は、Unity Catalog ボリュームまたはオブジェクト ストレージに格納されているすべての成果物に使用されます。 特定のディレクトリ レベルでプレフィックスの一致を防ぐには、末尾にスラッシュ (/) を含めます。 (例: /Volumes/prod-libraries/)。

アクセス許可を次のレベルで定義できます。

  1. ボリュームまたはストレージ コンテナーのベース パス。
  2. ベース パスから任意の深さで入れ子になったディレクトリ。
  3. 単一ファイル。

許可リストへのパスの追加は、init スクリプトまたは JAR のインストールのいずれかにパスを使用できることを意味します。 Azure Databricks では、指定された場所のデータにアクセスするためのアクセス許可を引き続き確認します。

使用するプリンシパルには、指定されたボリュームに対する READ VOLUME アクセス許可が必要です。 「SELECT」を参照してください。

シングル ユーザー アクセス モードでは、割り当てられたプリンシパル (ユーザーまたはサービス プリンシパル) の ID が使用されます。

共有アクセス モードの場合:

  • ライブラリでは、ライブラリ インストーラーの ID が使用されます。
  • Init スクリプトでは、クラスター所有者の ID が使用されます。

Note

分離なし共有アクセス モードではボリュームがサポートされませんが、共有アクセス モードと同じ ID 割り当てが使用されます。

Databricks では、読み取り専用アクセス許可を持つ init スクリプトとライブラリに関連するすべてのオブジェクト ストレージ特権を構成することをお勧めします。 これらの場所で書き込みアクセス許可を持つユーザーは、ライブラリ ファイルまたは init スクリプト内のコードを変更する可能性があります。

Databricks は、Microsoft Entra ID サービス プリンシパルを使用して、Azure Data Lake Storage Gen2 に保存されている JAR または init スクリプトへのアクセスを管理することをお勧めしています。 次のリンクされたドキュメントを使用して、このセットアップを完了してください。

  1. 目的の BLOB に対する読み取りと一覧表示の権限を持つサービス プリンシパルを作成します。 「Microsoft Entra ID (旧称 Azure Active Directory) でサービス プリンシパルを使ってストレージにアクセスする」を参照してください。

  2. シークレットを使用して資格情報を保存します。 「シークレット」を参照してください。

  3. 次の例のように、クラスターの作成時に Spark 構成と環境変数のプロパティを設定します。

    Spark 構成:

    spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth
    spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id>
    spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope>/<service-credential-key>}}
    spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<tenant-id>/oauth2/token
    

    環境変数:

    SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
    
  4. (省略可能) azcopy または Azure CLI を使用して、init スクリプトをリファクタリングします。

    init スクリプト内でクラスター構成中に設定された環境変数を参照して、検証用のシークレットとして格納された資格情報を渡すことができます。

Note

JAR と init スクリプトの許可リストのアクセス許可は、個別に管理されます。 両方の種類のオブジェクトを格納するために同じ場所を使用する場合は、それぞれの許可リストに場所を追加する必要があります。