Databricks Runtime 13.3 LTS 以降では、Unity Catalog の allowlist
にライブラリと init スクリプトを追加できます。 これにより、ユーザーは、標準アクセス モードで構成されたコンピューティングでこれらの成果物を利用できます。
そのディレクトリまたはファイルが存在する前に、ディレクトリまたはファイルパスを許可リストに登録できます。 「Unity Catalog ボリュームにファイルをアップロードする」を参照してください。
注
許可リストを変更するには、メタストア管理者であるか、MANAGE ALLOWLIST
特権を持っている必要があります。 「MANAGE ALLOWLIST」を参照してください。
重要
Unity カタログ対応の標準コンピューティングで JDBC ドライバーまたはカスタム Spark データ ソースとして使用されるライブラリには、 ANY FILE
アクセス許可が必要です。
一部のインストール済みライブラリでは、すべてのユーザーのデータが 1 つの共通一時ディレクトリに保存されます。 これらのライブラリは、ユーザーの分離を損なう可能性があります。
許可リストに項目を追加する方法
allowlist
または REST API を使用して、 に項目を追加できます。
Catalog Explorer で許可リストに項目を追加するためのダイアログを開くには、次の操作を行います:
- Azure Databricks ワークスペースで、[
カタログ。
-
をクリックします。メタストアの詳細とアクセス許可 UI を開きます。
- [許可された JAR/Init スクリプト] を選択します。
- 追加をクリックします。
重要
このオプションは、十分な特権を持つユーザーに対してのみ表示されます。 許可リスト UI にアクセスできない場合は、メタストア管理者に問い合わせて、許可リスト ライブラリと init スクリプトのサポートを受けてください。
許可リストに init スクリプトを追加する
許可リスト ダイアログで以下の手順を実行して、許可リストに init スクリプトを追加します。
- [種類] で、[Init Script](init スクリプト) を選択します。
- [ソースの種類] で、[ボリューム] またはオブジェクト ストレージ プロトコルを選択します。
- 許可リストに追加するソース パスを指定します。 「許可リストでパスに対するアクセス許可はどのように適用されますか?」を参照してください。
許可リストに JAR を追加する
許可リストに JAR を追加するには、許可リスト ダイアログで以下の手順を実行します。
- [種類] で、[JAR] を選択します。
- [ソースの種類] で、[ボリューム] またはオブジェクト ストレージ プロトコルを選択します。
- 許可リストに追加するソース パスを指定します。 「許可リストでパスに対するアクセス許可はどのように適用されますか?」を参照してください。
Maven 座標を許可リストに追加する
重要
Maven 座標を許可リストに追加する前に、ライブラリをインストールするコンピューティングで CAN ATTACH TO および CAN MANAGE アクセス許可が設定されている必要があります。 「コンピューティングのアクセス許可」を参照してください。
座標許可リストに Maven 座標を追加するには、許可リスト ダイアログで以下の手順を実行します。
- [種類] で、[Maven] を選択します。
- [ソースの種類] で、[座標] を選択します。
- 次の形式で座標を入力します:
groudId:artifactId:version
。- 次の形式を許可リストに掲載することで、ライブラリのすべてのバージョンを含めることができます:
groudId:artifactId
。 - 次の形式を許可リストに掲載することで、すべての成果物をグループに含めることができます:
groupId
。
- 次の形式を許可リストに掲載することで、ライブラリのすべてのバージョンを含めることができます:
「許可リストでパスに対するアクセス許可はどのように適用されますか?
許可リストを使用して、Unity Catalog ボリュームとオブジェクト ストレージに格納されている JAR または init スクリプトへのアクセス権を付与できます。 ファイルではなくディレクトリのパスを追加した場合、許可リストのアクセス許可は含まれるファイルとディレクトリに伝達されます。
プレフィックスの一致は、Unity Catalog ボリュームまたはオブジェクト ストレージに格納されているすべての成果物に使用されます。 特定のディレクトリ レベルでプレフィックスの一致を防ぐには、末尾にスラッシュ (/
) を含めます。 たとえば、/Volumes/prod-libraries/
では、プレフィックスが prod-libraries
のファイルに対してプレフィックス一致は実行されません。 代わりに、/Volumes/prod-libraries/
内のすべてのファイルとディレクトリは許可リストに追加されます。
アクセス許可を次のレベルで定義できます。
- ボリュームまたはストレージ コンテナーのベース パス。
- ベース パスから任意の深さで入れ子になったディレクトリ。
- 単一ファイル。
許可リストへのパスの追加は、init スクリプトまたは JAR のインストールのいずれかにパスを使用できることを意味します。 Azure Databricks では、指定された場所のデータにアクセスするためのアクセス許可を引き続き確認します。
使用するプリンシパルには、指定されたボリュームに対する READ VOLUME
アクセス許可が必要です。
ボリュームの読み取りを参照してください。
専用アクセス モード (以前はシングル ユーザー アクセス モード) では、割り当てられたプリンシパル (ユーザーまたはグループ) の ID が使用されます。
標準アクセス モードの場合:
- ライブラリでは、ライブラリ インストーラーの ID が使用されます。
- Init スクリプトでは、クラスター所有者の ID が使用されます。
注
分離なし共有アクセス モードはボリュームをサポートしませんが、標準アクセス モードと同じ ID 割り当てを使用します。
Databricks では、読み取り専用アクセス許可を持つ init スクリプトとライブラリに関連するすべてのオブジェクト ストレージ特権を構成することをお勧めします。 これらの場所で書き込みアクセス許可を持つユーザーは、ライブラリ ファイルまたは init スクリプト内のコードを変更する可能性があります。
Databricks では、Microsoft Entra ID サービス プリンシパルを使用して、Azure Data Lake Storage に格納されている JAR または init スクリプトへのアクセスを管理することをお勧めします。 次のリンクされたドキュメントを使用して、このセットアップを完了してください。
目的の BLOB に対する読み取りと一覧表示の権限を持つサービス プリンシパルを作成します。 「サービス プリンシパルと Microsoft Entra ID (Azure Active Directory) を使用してストレージにアクセスする」をご覧ください。
シークレットを使用して資格情報を保存します。 管理シークレットを参照してください。
次の例のように、クラスターの作成時に 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>}}
(省略可能) azcopy または Azure CLI を使用して、init スクリプトをリファクタリングします。
init スクリプト内でクラスター構成中に設定された環境変数を参照して、検証用のシークレットとして格納された資格情報を渡すことができます。
注
JAR と init スクリプトの許可リストのアクセス許可は、個別に管理されます。 両方の種類のオブジェクトを格納するために同じ場所を使用する場合は、それぞれの許可リストに場所を追加する必要があります。