目次
1. はじめに
皆さんこんにちは。
本書では、サービスプリンシパルを利用したジョブ実行方法について説明していきます。
通常、ジョブ作成時には、ジョブ作成者のユーザIDを利用しDatabricksのジョブが実行されます。
ただし、下記の制限があります。
・ジョブを作成・実行できるのは、該当の権限をもったユーザーのみです。
・ジョブ作成者のみがジョブにアクセスできます。
・ジョブ作成者がワークスペースから削除された場合、ジョブが動かなくなります。
サービス プリンシパルには、Azure Databricks マネージド サービス プリンシパルまたは Microsoft Entra ID マネージド サービス プリンシパルを指定できます。
今回のブログはMicrosoft Entra ID マネージド サービス プリンシパルを使用して、ジョブを実施します。
2. Microsoft Entra ID アプリケーションを作成
① Azure Portalのサイドバーから「Microsoft Entra ID」をクリックします。

②「アプリの登録」をクリックし、「新規登録」をクリックします。

③ アプリケーション名を入力し、「登録」ボタンをクリックします。例:「dtbricks-sp-app」

④ 以下の手順で使用するため、クライアント IDを保存しておいてください。
3. ワークスペースにサービスプリンシパルを追加
① こちらの手順でワークスペースにアクセスします。
② ワークスペースからワークスペース名をクリックして、「アカウントを管理」を選択します。アカウント管理画面が表示されます。

③ アカウント管理画面でサイドバーから「ユーザー管理」をクリックして、「サービスプリンシパル」タブをクリックします。「Service Principalsを追加」をクリックします。

④ 「Microsoft Entra IDで管理」を選択し、「新しいサービスプリンシパルの表示名」項目でサービスプリンシパル名を入力します。例:「dtbricks-sp-app」
⑤ 「Microsoft EntraアプリケーションID」項目でClientIDを入力します。「Service Principalを追加」ボタンをクリックします。
※ ClientIDは以上の手順で格納したアプリケーションIDです。

⑥ サイドバーから「ワークスペース」をクリックし、対象のワークスペース名を選択します。

⑦ 「権限」タブをクリックし、「権限を追加」ボタンをクリックします。

⑧ 最初のドロップダウンでサービスプリンシパル名を選択し、2番目のドロップダウンで「User」を選択します。「保存」ボタンをクリックします。

4. ジョブを実行
4.1 サービスプリンシパルに権限を付与
ジョブを実行できるように、サービスプリンシパルにクラスタの作成権限を付与する必要があります。
① こちらの手順でワークスペースにアクセスします。
② ワークスペースからユーザーアカウントをクリックし、「設定」を選択します。管理者の設定画面が表示されます。

③ 「IDとアクセス」タブでサービスプリンシパルの「管理」を選択します。

④ 作成したサービスプリンシパルを選択します。

⑤ 「無制限のクラスター作成を許可」チェックボックスを有効にし、「更新」ボタンをクリックします。

⑥ 「権限」タブで「アクセス権を付与」をクリックします。
⑦ログインしているユーザーに「Service Principal: User」権限を付与します。「保存」をクリックします。
4.2 ノートブックを作成
① サイドバーから「新規」をクリックし、「ノートブック」を選択します。

② 以下のPythonコマンドをノートブックに入力します。
|
1 2 3 4 |
df = spark.sql( "SELECT * FROM samples.nyctaxi.trips" ) display(df) |

③ サービスプリンシパルにノートブックの読込権限を付与する必要があります。サイドバーから「ワークスペース」をクリックし、作成したノートブックにマウスを移動します。
④
アイコンをクリックし、「共有(権限)」を選択します。

⑤ 最初のドロップダウンでサービスプリンシパル名を選択し、2番目のドロップダウンで「閲覧可能」権限を選択します。「追加」ボタンをクリックします。

⑥ 権限付与が完了しました。

4.3 ジョブを実行
① サイドバーから「ジョブとパイプライン」をクリックし、「作成」→「ジョブ」をクリックします。

②「ノートブック」をクリックします。

③ 「タスク名」項目でタスク名を入力し、「種類」項目で「ノートブック」を選択します。例:「MyTask」
④ 「ソース」項目で「ワークスペース」を選択します。「パス」項目で作成したノートブックを選択します。

⑤「コンピュート」の項目で、ジョブクラスターを設定します。「タスクを追加」ボタンをクリックします。

⑥ 権限のタブで「権限を編集」をクリックします。

⑦「Can Manage Run」権限を作成したサービスプリンシパルに付与します。

⑧「Save」をクリックします。

⑨ 実行者を変更するために、実行者の項目で
アイコンをクリックします。

⑩ サービスプリンシパルに追加します。「Save」ボタンをクリックします。

⑪ サービスプリンシパルを確認し、「今すぐ実行」をクリックします。

⑫ 表示されているダイアログで「実行結果を表示」をクリックします。

⑩ 結果が画像のように表示されます。ジョブはサービスプリンシパルによって実行されます。

5. まとめ
Azure Databricksのサービスプリンシパルを利用したジョブ実行方法について説明しました。
今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。
双日テックイノベーションでは、Azure Databricksの環境構築パッケージを用意しています。
Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!
Azure Databricks連載記事のまとめはこちら
お問い合わせはこちら
この記事を読んだ方へのオススメコンテンツはこちら
この記事を書いた人
- quanna


