Azureデータレイクストレージに接続する
Azureデータレイク ストレージ ( ADLS ) に接続できるのは、 Azureにデプロイされた SAP Databricksアカウントのみです。
ADLS ストレージがファイアウォールで保護されている場合は、Databricks アカウント チームに問い合わせて、それらのファイアウォールで Databricks を許可リストに登録する方法のサポートを受けてください。
この記事では、 Azureデータレイク ストレージ ( ADLS ) に接続するためのストレージ資格情報と外部ロケーションを作成する方法について説明します。
ストレージ認証情報 には、クラウド ストレージへのアクセスを提供する長期的なクラウド認証情報が含まれています。外部ストレージへのアクセスを制御するために Unity Catalog で 外部ロケーション を作成するときに、クラウド ストレージ パスとともにストレージ資格情報を参照します。
要件
- SAP Databricks では、ワークスペースに接続された Unity Catalog メタストアに対する
CREATE STORAGE CREDENTIAL権限が必要です。アカウント管理者とメタストア管理者は、デフォルトでこの権限を持ちます。 - Azure テナントの場合:
- Azureデータレイク Storage ストレージ コンテナーにアクセスできる必要があります。 送信料金を回避するには、データにアクセスするワークスペースと同じリージョンに配置する必要があります。ストレージ アカウントには階層型名前空間が必要です。
- Azure リソース グループの共同作成者または所有者。
- ストレージ アカウントの所有者、またはユーザー アクセス管理者 Azure RBAC ロールを持つユーザー。
Azureデータレイク ストレージにアクセスするストレージ資格情報を作成する
サービス プリンシパルを使用して、ストレージ アカウントへのアクセスを承認します。 まず、サービスプリンシパルを作成し、次にストレージ アカウントにアクセス許可を割り当て、最後にストレージ資格情報を作成します。
サービスプリンシパルを作成する
Microsoft Entra ID アプリケーションを登録し、適切なアクセス許可を割り当てると、 Azureデータレイク ストレージまたは Blob Storage リソースにアクセスできるサービス プリンシパルが作成されます。
Microsoft Entra ID アプリケーションを登録するには、Microsoft Entra ID のApplication AdministratorロールまたはApplication.ReadWrite.All権限が必要です。
- Azure ポータルで、 Microsoft Entra ID サービスに移動します。
- [管理] で、 アプリの登録 をクリックします。
- +新規登録を クリックします。アプリケーションの名前を入力し、 「登録する」 をクリックします。
- 証明書とシークレット をクリックします。
- 「 + 新しいクライアントのシークレット 」をクリックします。
- シークレットの説明を追加し、 「追加」 をクリックします。
- 新しいシークレットの値をコピーして保存します。
- アプリケーション登録の概要で、 アプリケーション (クライアント) ID と ディレクトリ (テナント) ID を コピーして保存します。
ストレージアカウントに権限を割り当てる
ストレージ アカウントに Microsoft Entra ID アプリケーションを割り当てることで、ストレージ リソースへのアクセスを制御します。ストレージ アカウントにロールを割り当てるには、ストレージ アカウントに対する所有者またはユーザー アクセス管理者の Azure RBAC ロールが必要です。
- Azure ポータルで、 ストレージ アカウント サービスに移動します。
- このアプリケーション登録で使用する Azure ストレージ アカウントを選択します。
- アクセス制御(IAM) をクリックします。
- + 追加 をクリックし、ドロップダウン メニューから ロールの割り当てを追加 を選択します。
- 選択 フィールドを Microsoft Entra ID アプリケーション名に設定し、 ロール を ストレージ BLOB データ共同作成者 に設定します。
- 保存 をクリックします。
(オプション)ファイルイベント権限を割り当てる
ファイル イベント アクセスを有効にするには、ストレージ アカウントおよび Azure データレイク ストレージ アカウントが含まれるAzureリソース グループに対する所有者またはAzureアクセス管理者のAzure RBAC ロールが必要です。
-
ストレージ アカウントに必要なロールを割り当てます。
-
Azure ポータルで、 ストレージ アカウント サービスに移動します。
-
Azure ストレージ アカウントを選択します。
-
[アクセス制御 (IAM)] に移動し、 [+ 追加] をクリックして、 [ロールの割り当ての追加] を選択します。
-
次の追加の役割をサービスプリンシパルに割り当てます。
- ストレージ BLOB データ コントリビューター : データの読み取りと書き込みに必要です。
- ストレージ キュー データ コントリビューター : ファイル イベント通知をサブスクライブするために必要です。
- ストレージ アカウント コントリビューター : SAP Databricks でファイル イベントを自動的に構成する場合に必要です。このロールを付与しない場合は、 Azure ストレージ キューを手動で作成し、イベント サブスクリプションを自分で構成する必要があります。手動構成はセルフサービス プロセスであり、Databricks ではこれらのリソースの設定に対するサポートは提供されません。
-
-
ストレージ アカウントを含むリソース グループに必要なロールを割り当てます
-
Azureデータレイク ストレージ アカウントを含むAzureリソース グループに移動します。
-
[アクセス制御 (IAM)] に移動し、 [+ 追加] をクリックして、 [ロールの割り当ての追加] を選択します。
-
EventGrid EventSubscription Contributor ロールを選択し、 [次へ] をクリックします。
-
[アクセス権の割り当て] で、 [サービスプリンシパル] を選択します。
-
[+Select Members] をクリックし、サービスプリンパルシを選択して、 [Review and Assign] をクリックします。
- EventGrid EventSubscription Contributor : SAP Databricks でファイル イベントを自動的に構成する場合に必須です。このロールを付与しない場合は、イベント サブスクリプションを手動で構成する必要があります。手動構成はセルフサービス プロセスであり、Databricks ではこれらのリソースの設定に対するサポートは提供されません。
-
あるいは、 ストレージ キュー データ共同作成者 ロールにサービスプリンシパルのみを付与し、リソース グループにはロールを付与しないことで、アクセスを制限することもできます。 この場合、SAP Databricks はユーザーに代わってファイル イベントを構成することはできません。
ストレージ資格情報を作成する
サービスプリンシパルを使用してストレージ資格情報を作成するには、SAP Databricksアカウント管理者である必要があります。 サービスプリンシパル ストレージ資格情報を作成するアカウント管理者は、所有権を別のユーザーまたはグループに委任して、その資格情報に対するアクセス許可を管理できます。
カタログ エクスプローラーを使用してサービスプリンシパル ストレージ資格情報を追加することはできません。 代わりに、 Storage Credentials APIを使用してください。例えば:
curl -X POST -n \
https://<databricks-instance>/api/2.1/unity-catalog/storage-credentials \
-d '{
"name": "<storage-credential-name>",
"read_only": true,
"azure_service_principal": {
"directory_id": "<directory-id>",
"application_id": "<application-id>",
"client_secret": "<client-secret>"
},
"skip_validation": "false"
}'
Terraform を使用してストレージ資格情報を作成することもできます。databricks_storage_credentialを参照してください。
外部ロケーションを作成する
外部ロケーションは、外部ストレージへのアクセスを制御するために使用されます。
-
メタストアに接続されているワークスペースにログインします。
-
サイドバーでクリック
カタログ 。
-
[外部データ >] ボタンをクリックし、 [外部ロケーション] タブに移動して、 [ロケーションの作成] を クリックします。
-
外部ロケーション名 を入力します。
-
ストレージの種類 を選択します: Azureデータレイク ストレージ または R2
-
[URL] で、外部ロケーションへのパスを入力または選択します。
-
外部ロケーションへのアクセスを許可するストレージ資格情報を選択します。
-
(オプション)ユーザーに外部ロケーションへの読み取り専用アクセス権を付与する場合は、[ 詳細オプション ] をクリックして[ 読み取り専用 ]を選択します。
-
(オプション) 外部ロケーションがHive metastoreフェデレーション カタログを対象としている場合は、 [詳細オプション] をクリックして、 フォールバック モード を有効にします。
-
(オプション) 外部ロケーションで変更通知を購読する機能を有効にするには、 [詳細オプション] をクリックし、 [ファイル イベントを有効にする] を選択します。
-
作成 をクリックします。
-
(オプション) 外部ロケーションを特定のワークスペースにバインドします。
もちろん、特権ユーザーはメタストアに接続されたワークスペースの外部ロケーションを使用できます。 特定のワークスペースからのみアクセスを許可したい場合は、 「ワークスペース」 タブに移動してワークスペースを割り当てます。 「外部ロケーションを 1 つ以上のワークスペースにバインドする」を参照してください。
-
「許可」 タブに移動して、外部ロケーションを使用する許可を与えます。
誰でも外部ロケーションを使用するには、次の権限を付与する必要があります。
- 外部ロケーションを使用して、メタストア、カタログ、またはスキーマにマネージドストレージロケーションを追加するには、
CREATE MANAGED LOCATION特権を付与します。 - 外部テーブルまたはボリュームを作成するには、
CREATE EXTERNAL TABLEまたはCREATE EXTERNAL VOLUMEを付与します。
- 外部ロケーションを使用して、メタストア、カタログ、またはスキーマにマネージドストレージロケーションを追加するには、
外部ロケーションを 1 つ以上のワークスペースにバインドする
特定のワークスペースに外部ロケーションを割り当てるには、カタログ エクスプローラーを使用できます。
必要な権限 : メタストア管理者、外部ロケーションの所有者、または外部ロケーションのMANAGE 。
メタストアの管理者は、カタログエクスプローラ を使用してメタストア内のすべての外部ロケーションを表示でき、外部ロケーションの所有者は、外部ロケーションが現在のワークスペースに割り当てられているかどうかに関係なく、メタストア内で所有するすべての外部ロケーションを表示できます。 ワークスペースに割り当てられていない外部ロケーションはグレー表示されます。
-
メタストアにリンクされているワークスペースにログインします。
-
サイドバーでクリック
カタログ 。
-
[外部データ >] ボタンをクリックして、 [外部ロケーション] タブに移動します。
-
外部ロケーションを選択し、 「ワークスペース」 タブに移動します。
-
[ ワークスペース ] タブで、[ すべてのワークスペースがアクセス可能] チェックボックスをオフにします。
外部ロケーションがすでに 1 つ以上のワークスペースにバインドされている場合、このチェックボックスはすでにオフになっています。
-
[ ワークスペースに割り当てる ] をクリックし、割り当てるワークスペースを入力または検索します。
アクセス権を取り消すには、[ ワークスペース ] タブに移動し、ワークスペースを選択して、[ 取り消し ] をクリックします。すべてのワークスペースからのアクセスを許可するには、[ すべてのワークスペースがアクセス可能 ] チェックボックスをオンにします。