Databricks Runtime 13.3 LTS 以降では、Unity Catalog の allowlist にライブラリと init スクリプトを追加できます。 これにより、ユーザーは、標準アクセス モードで構成されたコンピューティングでこれらの成果物を利用できます。
そのディレクトリまたはファイルが存在する前に、ディレクトリまたはファイルパスを許可リストに登録できます。 「Unity Catalog ボリュームにファイルをアップロードする」を参照してください。
注
許可リストを変更するには、メタストア管理者であるか、MANAGE ALLOWLIST 特権を持っている必要があります。 「許可リストの管理」を参照してください。
重要
Unity カタログ対応の標準コンピューティングで JDBC ドライバーまたはカスタム Spark データ ソースとして使用されるライブラリには、 ANY FILE アクセス許可が必要です。
一部のインストール済みライブラリでは、すべてのユーザーのデータが 1 つの共通一時ディレクトリに保存されます。 これらのライブラリは、ユーザーの分離を損なう可能性があります。
許可リストに項目を追加する方法
Catalog Explorer または REST API を使用して、allowlist に項目を追加できます。
Catalog Explorer で許可リストに項目を追加するためのダイアログを開くには、次の操作を行います。
- Azure Databricks ワークスペースで、[
カタログ。
- 歯車アイコンの
をクリックします。
- メタストア名をクリックして、メタストアの詳細とアクセス許可の UI を開きます。
- [許可された JAR/Init スクリプト] を選択します。
- 追加をクリックします。
重要
このオプションは、適切な特権を持つユーザーに対してのみ表示されます。 許可リスト UI にアクセスできない場合は、メタストア管理者に問い合わせて、許可リスト ライブラリと init スクリプトのサポートを受けてください。
許可リストに init スクリプトを追加する
許可リスト ダイアログで以下の手順を実行して、許可リストに init スクリプトを追加します。
- [種類] で、[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 スクリプトの許可リストのアクセス許可は、個別に管理されます。 両方の種類のオブジェクトを格納するために同じ場所を使用する場合は、それぞれの許可リストに場所を追加する必要があります。