1
0

More than 1 year has passed since last update.

Azure DatabricksでサービスプリンシパルからDatabricks REST APIを使う

Last updated at Posted at 2023-06-08

ちょっとハマったのでメモ。

サービスプリンシパルとは

APIアクセスのみが可能なアイデンティティです。ユーザーと違って、GUIへのアクセスには使用できません。自動化ツールやジョブで使用することを推奨しています。

サービスプリンシパルの作成

  1. Azure Portal > Azure Active Direcotry > アプリの登録に移動します。

  2. サービスプリンシパルの名前を入力して、サポートされているアカウントの種類では、この組織ディレクトリのみに含まれるアカウント (Default Directory のみ - シングル テナント)を選択し、登録をクリックします。
    Screenshot 2023-06-08 at 8.49.59.png

  3. 以下の値をコピーしておきます。

    • アプリケーション (クライアント) ID
    • ディレクトリ (テナント) ID
  4. サイドメニューの証明書とシークレットをクリックします。

  5. 新しいクライアントシークレットをクリックします。

  6. 説明文を入力し、有効期限を選択して追加をクリックします。
    Screenshot 2023-06-08 at 8.52.00.png

    重要!
    運用設計に基づいて、適切に有効期限を管理するようにしてください。

  7. クライアントシークレットのをコピーしておきます。これはサービスプリンシパルのパスワードに相当します。
    Screenshot 2023-06-08 at 8.52.51.png

Databricksアカウントにサービスプリンシパルを追加

  1. Databricksワークスペースの右上のユーザー名をクリックしManage Accountを選択して、Databricksアカウントコンソールにアクセスします。
    Screenshot 2023-06-08 at 8.56.50.png
  2. サイドメニューからUser managementを選択します。
  3. Service principalsタブをクリックします。
    Screenshot 2023-06-08 at 8.59.01.png
  4. Add service principalをクリックします。
  5. Nameにはわかりやすい名前、UUIDには、上でメモしたアプリケーション (クライアント) IDを入力します。Addをクリックします。
    Screenshot 2023-06-08 at 8.59.34.png

ワークスペースにサービスプリンシパルを割り当てる

  1. アカウントコンソールのサイドメニューでWorkspacesを選択します。
  2. REST APIを使用するワークスペースを選択します。
  3. Permissionsタブを選択します。
    Screenshot 2023-06-08 at 9.04.38.png
  4. Add permissionsをクリックします。
  5. User, group or service principalで上で作成したサービスプリンシパルを選択し、必要な権限をPermissionで選択します。Saveをクリックします。
    Screenshot 2023-06-08 at 9.05.25.png
    Screenshot 2023-06-08 at 9.06.42.png

サービスプリンシパルのトークンを取得する

サービスプリンシパルからREST APIを使用するためには、トークンが必要となります。

トークンの取得にもREST APIの呼び出しが必要です。curlなどを使っても良いですが、ここではPostmanを使います。

  • エンドポイント: https://login.microsoftonline.com/<テナントID>/oauth2/v2.0/token
    • テナントID: 作成したサービスプリンシパルのディレクトリ (テナント) ID
  • メソッド: POST
  • Body:
    • x-www-form-urlencoded
      • client_id: サービスプリンシパルのアプリケーション (クライアント) ID
      • grant_type: client_credentials
      • scope: 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d/.default
      • client_secret: サービスプリンシパルのクライアントシークレットの値

レスポンスのaccess_tokenの値をコピーします。このトークンには1時間の有効期限があるので注意してください。
Screenshot 2023-06-08 at 9.29.49.png

REST APIを呼び出す

これでREST APIを呼び出す準備ができました。

APIのリファレンスはこちらです。

ここでは、ワークスペースのクラスター一覧を取得します。

  • エンドポイント: https://<Databricksワークスペースのホスト名>/api/2.0/clusters/list
  • メソッド: GET
  • Authorization:
    • Type: Bearer
    • Token: 上で取得したサービスプリンシパルのトークン

動きました!
Screenshot 2023-06-08 at 9.36.34.png

Databricksクイックスタートガイド

Databricksクイックスタートガイド

Databricks無料トライアル

Databricks無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0