Authentication using Databricks personal access tokens | Databricks on AWS [2022/12/6時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
Databricks REST APIの認証を受け、APIにアクセスするために、Databricksパーソナルアクセストークンあるいはパスワードを使用することができます。トークンを使用することを強くお勧めします。
重要!
認証フローにおいてトークンはパスワードを置き換えるものとなるので、パスワードのようにトークンも保護されなくてはなりません。トークンを保護するために、トークンを以下の場所に格納することをお勧めします。
- シークレットを管理し、ノートブックでシークレットユーティリティ(dbutils.secrets)を用いてトークンを取得。
- ローカルキーを格納し、実行時にトークンを取得するためにPython keyringパッケージを使用。
注意
セキュリティのベストプラクティスとして、自動化ツール、システム、スクリプト、アプリで認証を行う際、ワークスペースのユーザーではなくサービスプリンシパルに属するアクセストークンを使用することをお勧めします。サービスプリンシパルのアクセストークンを作成するには、Manage access tokens for a service principalをご覧ください。
要件
2018年1月以降に作成されたすべてのDatabricksアカウントにおいて、トークンベースの認証はデフォルトで有効化されています。トークンベースの認証が無効化されている場合、Databricksにおけるパーソナルアクセストークンの管理で説明されているタスクを実行する前に管理者は機能を有効化しなくてはなりません。
パーソナルアクセストークンの生成
Databricksパーソナルアクセストークンをご覧ください。
Token API 2.0を用いてトークンの生成、廃棄を行うこともできます。
ユーザーあたりのパーソナルアクセストークンの数は、ワークスペースごとに600個に制限されています。
パーソナルアクセストークンの廃棄
このセクションでは、Databricks UIによるパーソナルアクセストークンの廃棄方法を説明します。Token API 2.0を用いてトークンの生成、廃棄を行うこともできます。
- Databricksワークスペースのトップバーに表示されているご自身のユーザー名をクリックし、ドロップダウンからUser Settingsを選択します。
- Access Tokensタブに移動します。
- 廃棄したいトークンのxをクリックします。
- トークン廃棄のダイアログで、Revoke Tokenボタンをクリックします。
Databricks REST APIにアクセスするためにパーソナルアクセストークンを使う
.netrcファイルにパーソナルアクセストークンを格納しcurlを使用するか、Authorization: Bearerヘッダーにトークンを指定することができます。
.netrcファイルにトークンを格納しcurlで使う
machine、login、passwordプロパティを持つ.netrcファイルを作成します。
machine <databricks-instance>
login token
password <token-value>
ここでは、
-
<databricks-instance>はお使いのDatabricksデプロイメントのワークスペースURLに含まれるインスタンスIDです。例えば、ワークスペースのURLがhttps://abc-d1e2345f-a6b2.cloud.databricks.comの場合、<databricks-instance>はabc-d1e2345f-a6b2.cloud.databricks.comです。 -
tokenは文字列リテラルのtokenです。 -
<token-value>はdapi1234567890ab1cde2f3ab456c7d89efaのようなトークンの値となります。
結果として以下のようになります。
machine abc-d1e2345f-a6b2.cloud.databricks.com
login token
password dapi1234567890ab1cde2f3ab456c7d89efa
複数のマシン/トークンのエントリーがある場合、一行ごとにエントリーを記述し、同じ行にマシン/トークンごとのmachine、login、passwordプロパティを記述します。これは以下のようになります。
machine abc-d1e2345f-a6b2.cloud.databricks.com login token password dapi1234567890ab1cde2f3ab456c7d89efa
machine bcd-e2f3456a-b7c3.cloud.databricks.com login token password dapi2345678901cd2efa3b4cd567e8f90abc
machine cde-f3a4567b-c8d4.cloud.databricks.com login token password dapi3456789012de3fab4c5de678f9a01bcd
重要!
オプションとして、loginにご自身のDatabrikcsユーザー名、passwordにDatabricksのパスワードを指定することができます。しかし、APIエンドポイントの認証を受けるにはパーソナルアクセストークンを使用することをお勧めします。ユーザー名とパスワードを使用する際、以下のように資格情報を引き渡すために-uを使用しないでください。
# これは **やめてください**
curl -u <your-username>:<your-password> -X GET https://<databricks-instance>/api/2.0/clusters/list
以下のサンプルは、curlコマンドで--netrc(-nを使うこともできます)を用いて、.netrcファイルを呼び出します。.netrcファイルでマッチするmachineエントリーを特定するために指定されたワークスペースURLを使用します。
curl --netrc -X GET https://abc-d1e2345f-a6b2.cloud.databricks.com/api/2.0/clusters/list
Bearer認証にトークンを渡す
Bearer認証を用いたヘッダーにトークンを含めることができます。curlやあなたが開発する任意のクライアントでこのアプローチを活用することができます。後者に関しては、大きなファイルをDBFSにアップロードをご覧ください。
以下の例では、特定のワークスペースで使用できるすべてのクラスターを一覧するためにBearer認証を用いています。
export DATABRICKS_TOKEN=dapi1234567890ab1cde2f3ab456c7d89efa
curl -X GET --header "Authorization: Bearer $DATABRICKS_TOKEN" \
https://abc-d1e2345f-a6b2.cloud.databricks.com/api/2.0/clusters/list