Mengotorisasi akses pengguna ke Azure Databricks dengan OAuth

Halaman ini menjelaskan cara mengotorisasi akses pengguna ke sumber daya Azure Databricks saat menggunakan Databricks CLI atau REST API Azure Databricks.

Azure Databricks menggunakan OAuth 2.0 sebagai protokol pilihan untuk otorisasi dan autentikasi pengguna di luar UI. Autentikasi klien terpadu mengotomatiskan pembuatan dan refresh token. Setelah pengguna masuk dan memberikan persetujuan, OAuth mengeluarkan token akses untuk CLI, SDK, atau alat lain untuk digunakan atas nama pengguna. Setiap token akses berlaku selama satu jam, setelah itu token baru diminta secara otomatis.

Di halaman ini, otorisasi mengacu pada penggunaan OAuth untuk memberikan akses ke sumber daya Azure Databricks, sementara autentikasi mengacu pada memvalidasi kredensial melalui token akses.

Untuk detail tingkat tinggi lainnya, lihat Mengotorisasi akses ke sumber daya Azure Databricks.

Cara mengotorisasi akses ke sumber daya Azure Databricks

Azure Databricks mendukung dua cara untuk mengotorisasi akun pengguna dengan OAuth:

  • Otomatis (disarankan): Gunakan autentikasi terpadu jika Anda bekerja dengan alat dan SDK yang didukung, seperti Azure Databricks Terraform SDK. Pendekatan ini menangani pembuatan token dan refresh secara otomatis.

  • Manual: Buat pemverifikasi kode dan tantangan, lalu tukarkan dengan token OAuth. Gunakan metode ini jika alat Anda tidak mendukung autentikasi terpadu. Untuk detailnya, lihat Membuat token akses OAuth U2M secara manual.

Otorisasi otomatis dengan autentikasi terpadu

Catatan

Sebelum mengonfigurasi otorisasi, tinjau izin ACL untuk jenis operasi ruang kerja yang Anda rencanakan untuk dilakukan dan konfirmasi bahwa akun Anda memiliki tingkat akses yang diperlukan. Untuk detailnya, lihat Daftar kontrol akses.

Untuk melakukan otorisasi OAuth dengan Databricks SDK dan alat yang mendukung autentikasi terpadu, integrasikan hal berikut dalam kode Anda:

Lingkungan

Untuk menggunakan variabel lingkungan untuk jenis autentikasi Azure Databricks tertentu dengan alat atau SDK, lihat Mengotorisasi akses ke sumber daya Azure Databricks atau dokumentasi alat atau SDK. Lihat juga Variabel dan bidang lingkungan untuk autentikasi terpadu dan prioritas metode Autentikasi.

Untuk operasi tingkat akun, atur variabel lingkungan berikut:

  • DATABRICKS_HOST, atur ke nilai URL konsol akun Azure Databricks Anda, https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID

Untuk operasi tingkat ruang kerja, atur variabel lingkungan berikut:

Profil

Buat atau identifikasi profil konfigurasi Azure Databricks dengan bidang berikut dalam file Anda.databrickscfg. Jika Anda membuat profil, ganti placeholder dengan nilai yang sesuai. Untuk menggunakan profil dengan alat atau SDK, lihat Mengotorisasi akses ke sumber daya Azure Databricks atau dokumentasi alat atau SDK. Lihat juga Variabel dan bidang lingkungan untuk autentikasi terpadu dan prioritas metode Autentikasi.

Untuk operasi tingkat akun, atur nilai berikut dalam file Anda . Dalam hal ini, URL konsol akun Azure Databricks adalah https://accounts.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host       = <account-console-url>
account_id = <account-id>

Untuk operasi tingkat ruang kerja, atur nilai berikut dalam file Anda. Dalam hal ini, host adalah URL per ruang kerja Azure Databricks, misalnya https://adb-1234567890123456.7.azuredatabricks.net:

[<some-unique-configuration-profile-name>]
host = <workspace-url>

antarmuka baris perintah (CLI)

Untuk Databricks CLI, jalankan databricks auth login perintah dengan opsi berikut:

Kemudian ikuti instruksi di browser web Anda untuk masuk ke akun atau ruang kerja Azure Databricks Anda.

Untuk detail selengkapnya, lihat otorisasi OAuth dengan Databricks CLI.

Visual Studio Code

Untuk ekstensi Databricks untuk Visual Studio Code, ikuti langkah-langkah dalam Menyiapkan otorisasi untuk ekstensi Databricks untuk Visual Studio Code.

Sambungkan

Autentikasi OAuth U2M didukung di Databricks Connect untuk Python dimulai dengan Databricks Runtime 13.1 dan untuk Scala yang dimulai dengan Databricks Runtime 13.3 LTS.

Untuk Databricks Connect, Anda dapat:

  • Gunakan profil konfigurasi: Atur nilai tingkat ruang kerja dalam file Anda .databrickscfg seperti yang dijelaskan pada tab Profil . Atur cluster_id juga ke URL instans ruang kerja Anda.
  • Gunakan variabel lingkungan: Atur nilai yang sama seperti yang ditunjukkan pada tab Lingkungan . Atur DATABRICKS_CLUSTER_ID juga ke URL instans ruang kerja Anda.

Nilai dalam .databrickscfg memiliki prioritas lebih tinggi daripada variabel lingkungan.

Untuk menginisialisasi Databricks Connect dengan pengaturan ini, lihat Konfigurasi komputasi untuk Databricks Connect.

Terraform

Sebelum menerapkan konfigurasi Terraform, Anda harus menjalankan salah databricks auth login satu perintah pada tab CLI tergantung pada apakah konfigurasi Anda menggunakan ruang kerja atau operasi akun. Perintah ini menghasilkan dan menyimpan token OAuth yang diperlukan di .databricks/token-cache.json folder utama pengguna Anda.

Operasi tingkat akun

Untuk autentikasi default:

provider "databricks" {
  alias = "account"
}

Untuk konfigurasi langsung:

provider "databricks" {
  alias      = "account"
  host       = <retrieve-account-console-url>
  account_id = <retrieve-account-id>
}

Ganti placeholder retrieve- dengan implementasi Anda sendiri untuk mendapatkan nilai dari konsol atau beberapa penyimpanan konfigurasi lainnya, seperti HashiCorp Vault. Lihat juga Penyedia Vault. Dalam contoh ini, Anda dapat mengatur account_id ke URL konsol akun Azure Databricks.

Operasi tingkat ruang kerja

Untuk autentikasi default:

  provider "databricks" {
  alias = "workspace"
}

Untuk konfigurasi langsung:

provider "databricks" {
  alias = "workspace"
  host  = <retrieve-workspace-url>
}

Phyton

Sebelum menjalankan kode, Anda harus menjalankan databricks auth login perintah pada tab CLI dengan opsi operasi ruang kerja atau akun. Perintah ini menghasilkan dan menyimpan token OAuth yang diperlukan di .databricks/token-cache.json folder utama pengguna Anda.

Operasi pada tingkat akun

Untuk autentikasi bawaan:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

Untuk konfigurasi langsung:

from databricks.sdk import AccountClient

a = AccountClient(
  host       = retrieveAccountConsoleUrl(),
  account_id = retrieveAccountId()
)
# ...

Ganti retrieve placeholder dengan implementasi Anda sendiri untuk mengambil nilai dari console atau penyimpanan konfigurasi lainnya, seperti Azure KeyVault.

Operasi tingkat ruang kerja

Untuk autentikasi baku:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

Untuk konfigurasi langsung:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient(host = retrieve_workspace_url())
# ...

Untuk informasi selengkapnya tentang mengautentikasi dengan alat dan SDK Azure Databricks yang menggunakan Python dan yang menerapkan autentikasi terpadu Databricks, lihat:

Java

Sebelum menjalankan kode, Anda harus menjalankan databricks auth login perintah pada tab CLI dengan opsi operasi ruang kerja atau akun. Perintah ini menghasilkan dan menyimpan token OAuth yang diperlukan di .databricks/token-cache.json folder utama pengguna Anda.

Operasi tingkat akun

Untuk autentikasi default:

import com.databricks.sdk.AccountClient;
// ...
AccountClient a = new AccountClient();
// ...

Untuk konfigurasi langsung:

import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveAccountConsoleUrl())
  .setAccountId(retrieveAccountId());
AccountClient a = new AccountClient(cfg);
// ...

retrieve Ganti tempat penampung dengan implementasi Anda sendiri untuk mengambil nilai dari konsol atau beberapa penyimpanan konfigurasi lainnya, seperti Azure KeyVault.

Operasi tingkat ruang kerja

Untuk autentikasi default:

import com.databricks.sdk.WorkspaceClient;
// ...
WorkspaceClient w = new WorkspaceClient();
// ...

Untuk konfigurasi langsung:

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.core.DatabricksConfig;
// ...
DatabricksConfig cfg = new DatabricksConfig()
  .setHost(retrieveWorkspaceUrl())
WorkspaceClient w = new WorkspaceClient(cfg);
// ...

Untuk informasi selengkapnya tentang mengotorisasi dan mengautentikasi dengan alat dan SDK Azure Databricks yang menggunakan Java dan yang menerapkan autentikasi terpadu Databricks, lihat:

Mulai

Sebelum menjalankan kode, Anda harus menjalankan databricks auth login perintah pada tab CLI dengan opsi operasi ruang kerja atau akun. Perintah ini menghasilkan dan menyimpan token OAuth yang diperlukan di .databricks/token-cache.json folder utama pengguna Anda.

Operasi tingkat akun

Untuk autentikasi default:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient())
// ...

Untuk konfigurasi langsung:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
a := databricks.Must(databricks.NewAccountClient(&databricks.Config{
  Host:      retrieveAccountConsoleUrl(),
  AccountId: retrieveAccountId(),
}))
// ...

Ganti retrieve dengan implementasi Anda sendiri untuk mengambil nilai dari konsol atau penyimpanan konfigurasi lainnya, seperti Azure KeyVault.

Operasi tingkat ruang kerja

Untuk autentikasi bawaan:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient())
// ...

Untuk konfigurasi langsung:

import (
  "github.com/databricks/databricks-sdk-go"
)
// ...
w := databricks.Must(databricks.NewWorkspaceClient(&databricks.Config{
  Host: retrieveWorkspaceUrl(),
}))
// ...

Untuk informasi selengkapnya tentang mengautentikasi dengan alat databricks dan SDK yang menggunakan Go dan yang mengimplementasikan autentikasi terpadu klien Databricks, lihat Mengautentikasi Databricks SDK for Go dengan akun atau ruang kerja Azure Databricks Anda.

Membuat token akses OAuth U2M secara manual

Bagian ini untuk pengguna yang bekerja dengan alat atau layanan pihak ketiga yang tidak mendukung standar autentikasi terpadu Databricks . Jika Anda perlu membuat, merefresh, atau menggunakan token OAuth Azure Databricks secara manual untuk autentikasi OAuth U2M, ikuti langkah-langkah di bagian ini.

Langkah 1: Hasilkan pemverifikasi kode dan tantangan

Untuk menghasilkan token akses OAuth U2M secara manual, mulailah dengan membuat pemverifikasi kode dan tantangan kode yang cocok. Anda akan menggunakan tantangan di Langkah 2 untuk mendapatkan kode otorisasi, dan pemverifikasi di Langkah 3 untuk menukar kode tersebut dengan token akses.

Catatan

Ikuti standar OAuth PKCE:

  • Pemverifikasi kode adalah string acak kriptografis (43–128 karakter) menggunakan karakter A–Z, , a–z, 0–9-._~.
  • Tantangan kode adalah hash SHA256 yang dikodekan URL Base64 dari pemverifikasi.

Untuk informasi selengkapnya, lihat Permintaan Otorisasi.

Skrip Python berikut menghasilkan pemverifikasi dan tantangan. Meskipun Anda dapat menggunakannya beberapa kali, Azure Databricks merekomendasikan untuk menghasilkan pasangan baru setiap kali Anda membuat token akses secara manual.

import hashlib, base64, secrets, string

# Allowed characters for the code verifier, per PKCE spec
allowed_chars = string.ascii_letters + string.digits + "-._~"

# Generate a secure code verifier (43–128 characters)
code_verifier = ''.join(secrets.choice(allowed_chars) for _ in range(64))

# Create the SHA256 hash of the code verifier
sha256_hash = hashlib.sha256(code_verifier.encode()).digest()

# Base64-url-encode the hash and strip any trailing '=' padding
code_challenge = base64.urlsafe_b64encode(sha256_hash).decode().rstrip("=")

# Output values
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

Langkah 2: Buat kode otorisasi

Untuk mendapatkan token akses OAuth Azure Databricks, Anda harus terlebih dahulu membuat kode otorisasi OAuth. Kode ini kedaluwarsa segera setelah digunakan. Anda dapat membuat kode di tingkat akun atau ruang kerja:

  • Tingkat akun: Gunakan untuk memanggil REST API tingkat akun dan tingkat ruang kerja di semua ruang kerja yang dapat diakses pengguna Anda.
  • Tingkat ruang kerja: Gunakan untuk memanggil REST API dalam satu ruang kerja.

Catatan

Contoh-contoh ini digunakan databricks-cli sebagai ID klien. Jika Anda tidak menggunakan alat Azure Databricks bawaan seperti CLI atau SDK, Anda harus mengaktifkan aplikasi OAuth kustom dan menggunakannya client_id dalam permintaan Anda. Lihat Mengaktifkan atau menonaktifkan aplikasi OAuth mitra itu.

Membuat kode otorisasi tingkat akun

  1. Temukan ID akun Anda

  2. Di browser Anda, navigasikan ke URL dengan pengganti berikut:

    • <account-id>: ID akun Azure Databricks Anda
    • <redirect-url>: URI pengalihan lokal (misalnya, http://localhost:8020)
    • <state>: String teks biasa apa pun untuk memvalidasi respons
    • <code-challenge>: Tantangan kode dari Langkah 1
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  3. Masuk saat diminta untuk mengakses akun Azure Databricks Anda.

  4. Setelah Anda masuk, browser menavigasi ke URL pengalihan Anda. Jika tidak ada yang aktif pada host dan port tersebut (misalnya, http://localhost:8020), halaman menunjukkan kesalahan koneksi, hal ini memang diharapkan. Salin kode otorisasi dari bilah alamat. Ini adalah substring setelah code= dan sebelum berikutnya & dalam string kueri.

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Verifikasi bahwa state nilai cocok dengan apa yang awalnya Anda berikan. Jika tidak, buang kode.

  5. Lanjutkan untuk Membuat token akses tingkat akun.

Membuat kode otorisasi tingkat ruang kerja

  1. Di browser Anda, navigasikan ke URL dengan pengganti berikut:

    • <databricks-instance>: Nama <databricks-instance> Azure Databricks Anda instans ruang kerja, misalnya adb-1234567890123456.7.azuredatabricks.net
    • <redirect-url>: Pengalihan lokal (misalnya, http://localhost:8020)
    • <state>: Nilai teks biasa apa pun untuk validasi respons
    • <code-challenge>: String tantangan dari Langkah 1
    https://<databricks-instance>/oidc/v1/authorize
    ?client_id=databricks-cli
    &redirect_uri=<redirect-url>
    &response_type=code
    &state=<state>
    &code_challenge=<code-challenge>
    &code_challenge_method=S256
    &scope=all-apis+offline_access
    
  2. Masuk saat diminta untuk mengakses akun Azure Databricks Anda.

  3. Setelah Anda masuk, browser menavigasi ke URL pengalihan Anda. Jika tidak ada yang mendengarkan host dan port tersebut (misalnya, http://localhost:8020), halaman menunjukkan kesalahan koneksi, yang diharapkan. Salin kode otorisasi dari bilah alamat. Ini adalah substring setelah code= dan sebelum berikutnya & dalam string kueri.

    http://localhost:8020/?code=dcod...7fe6&state=<state>
    

    Verifikasi bahwa state nilai cocok dengan apa yang awalnya Anda berikan. Jika tidak, buang kode.

  4. Lanjutkan dengan membuat token akses tingkat ruang kerja.

Langkah 3: Menukar kode otorisasi dengan token akses

Untuk menukar kode otorisasi dengan token akses OAuth Azure Databricks, pilih tingkat yang sesuai:

  • Tingkat akun: Gunakan untuk memanggil REST API tingkat akun dan tingkat ruang kerja di semua ruang kerja yang dapat diakses pengguna Anda.
  • Tingkat ruang kerja: Gunakan untuk memanggil REST API dalam satu ruang kerja.

Membuat token akses tingkat akun

  1. Gunakan curl untuk menukar kode otorisasi tingkat akun dengan token akses OAuth.

    Ganti yang berikut ini dalam permintaan:

    • <account-id>: ID akun Azure Databricks Anda
    • <redirect-url>: URL pengalihan dari langkah sebelumnya
    • <code-verifier>: Pemverifikasi yang Anda buat sebelumnya
    • <authorization-code>: Kode otorisasi dari langkah sebelumnya
    curl --request POST \
    https://accounts.azuredatabricks.net/oidc/accounts/<account-id>/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. Salin nilai access_token dari respons. Contohnya:

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    Token ini hanya berlaku selama satu jam.

  3. Lanjutkan ke Langkah 4: Panggil REST API Azure Databricks.

Membuat token akses tingkat ruang kerja

  1. Gunakan curl untuk menukar kode otorisasi tingkat ruang kerja dengan token akses OAuth.

    Ganti yang berikut ini dalam permintaan:

    • <databricks-instance>: Sesuaikan <databricks-instance> Anda dengan nama instans ruang kerja Azure Databricks, contohnya adb-1234567890123456.7.azuredatabricks.net
    • <redirect-url>: URL pengalihan dari langkah sebelumnya
    • <code-verifier>: Pemverifikasi yang Anda buat sebelumnya
    • <authorization-code>: Kode otorisasi tingkat ruang kerja
    curl --request POST \
    https://<databricks-instance>/oidc/v1/token \
    --data "client_id=databricks-cli" \
    --data "grant_type=authorization_code" \
    --data "scope=all-apis offline_access" \
    --data "redirect_uri=<redirect-url>" \
    --data "code_verifier=<code-verifier>" \
    --data "code=<authorization-code>"
    
  2. Salin nilai access_token dari respons. Contohnya:

    {
      "access_token": "eyJr...Dkag",
      "refresh_token": "doau...f26e",
      "scope": "all-apis offline_access",
      "token_type": "Bearer",
      "expires_in": 3600
    }
    

    Token ini hanya berlaku selama satu jam.

Langkah 4: Memanggil REST API Azure Databricks

Gunakan token akses untuk memanggil REST API tingkat akun atau tingkat ruang kerja, tergantung pada cakupannya. Untuk memanggil API tingkat akun, pengguna Azure Databricks Anda harus menjadi admin akun.

Contoh permintaan REST API tingkat akun

Contoh ini menggunakan curl bersama dengan Bearer autentikasi untuk mendapatkan daftar semua ruang kerja yang terkait dengan akun.

  • Ganti <oauth-access-token> dengan token akses OAuth tingkat akun.
  • Ganti <account-id> dengan ID akun Anda.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://accounts.azuredatabricks.net/api/2.0/accounts/<account-id>/workspaces"

Contoh permintaan REST API tingkat ruang kerja

Contoh ini menggunakan curl bersama dengan Bearer autentikasi untuk mencantumkan semua kluster yang tersedia di ruang kerja yang ditentukan.

  • Ganti <oauth-access-token> dengan token akses OAuth tingkat akun atau tingkat ruang kerja.
  • Ganti <databricks-instance> dengan nama instans ruang kerja Azure Databricks, misalnya adb-1234567890123456.7.azuredatabricks.net.
export OAUTH_TOKEN=<oauth-access-token>

curl --request GET --header "Authorization: Bearer $OAUTH_TOKEN" \
"https://<databricks-instance>/api/2.0/clusters/list"