Bagikan melalui


Menyambungkan ke aplikasi API Databricks menggunakan autentikasi token

Anda dapat memanggil aplikasi Databricks yang mengekspos API HTTP (misalnya, aplikasi FastAPI atau Gradio) menggunakan autentikasi token Pembawa OAuth 2.0. Metode ini berfungsi dari lingkungan pengembangan lokal Anda, aplikasi eksternal, dan aplikasi Azure Databricks lainnya.

Nota

Metode ini hanya berlaku untuk aplikasi yang mengekspos API atau titik akhir (dapat diakses menggunakan /api/ rute). Untuk aplikasi yang hanya menyediakan antarmuka pengguna atau pemrosesan latar belakang, Anda tidak dapat tersambung menggunakan autentikasi token.

Persyaratan

Untuk menyambungkan ke aplikasi Databricks menggunakan autentikasi token, Anda harus memenuhi persyaratan berikut:

  • Aplikasi harus mengekspos setidaknya satu titik akhir API yang dapat diakses menggunakan /api/ rute.
  • Anda harus memiliki CAN USE izin di aplikasi. Lihat Mengonfigurasi izin untuk aplikasi Databricks.
  • Anda harus dapat menghasilkan token akses Azure Databricks menggunakan salah satu metode autentikasi yang didukung.

Metode autentikasi

Nota

Anda tidak dapat memanggil aplikasi Databricks secara langsung menggunakan token ID Azure Entra. Federasi token memerlukan langkah pertukaran token sisi klien, yang tidak dilakukan Azure Databricks di sisi server. Untuk menggunakan token ID Azure Entra untuk autentikasi, Anda harus terlebih dahulu menukarnya dengan token OAuth. Lihat Mengautentikasi dengan token penyedia identitas.

Pilih metode autentikasi yang cocok dengan skenario koneksi Anda:

Pengembangan lokal

Untuk menyambungkan dari lingkungan pengembangan lokal Anda, gunakan Azure Databricks CLI atau SDK dengan kredensial pengguna Anda.

  1. Masuk dengan CLI:

    databricks auth login --host https://<workspace-url> --profile my-env
    

    Azure Databricks merekomendasikan penggunaan autentikasi pengguna ke komputer (U2M) OAuth.

  2. Hasilkan token akses:

    antarmuka baris perintah (CLI)

    databricks auth token --profile my-env
    

    Phyton

    from databricks.sdk.core import Config
    config = Config(profile="my-env")
    token = config.oauth_token().access_token
    

Aplikasi eksternal

Untuk akses terprogram dari aplikasi eksternal, gunakan autentikasi prinsipal layanan dengan kredensial antar mesin (M2M). Lihat Mengotorisasi akses perwakilan layanan ke Azure Databricks dengan OAuth.

  1. Buat perwakilan layanan dan dapatkan ID dan rahasia klien. Lihat Service principals.

  2. Hasilkan token akses menggunakan Azure Databricks SDK:

    from databricks.sdk import WorkspaceClient
    import requests
    
    # Option 1: Explicit credentials
    wc = WorkspaceClient(
        host="https://<workspace-url>",
        client_id="<service-principal-client-id>",
        client_secret="<service-principal-client-secret>"
    )
    
    # Option 2: Environment variables
    # Set DATABRICKS_HOST, DATABRICKS_CLIENT_ID, DATABRICKS_CLIENT_SECRET
    wc = WorkspaceClient()
    
    # Generate Bearer token
    headers = wc.config.authenticate()
    

Dari aplikasi Databricks lainnya

Saat Anda terhubung dari satu aplikasi Databricks ke aplikasi lain, aplikasi menangani autentikasi secara otomatis menggunakan perwakilan layanan yang ditetapkan.

from databricks.sdk import WorkspaceClient
import requests

# No explicit credentials needed, uses app's service principal
wc = WorkspaceClient()
headers = wc.config.authenticate()

Tentukan cakupan OAuth untuk otorisasi pengguna

Saat Anda menggunakan Azure Databricks CLI atau SDK dengan autentikasi terpadu, seperti yang ditunjukkan bagian sebelumnya, alat secara otomatis meminta cakupan dasar all-apis . Namun, jika aplikasi Anda menggunakan otorisasi pengguna, Anda harus meminta token akses secara manual dengan cakupan tambahan menggunakan alur OAuth kustom.

Pastikan token akses Anda menyertakan cakupan yang dikonfigurasi dalam Edit>otorisasi Pengguna. Jika token tidak memiliki cakupan yang diperlukan, permintaan dapat gagal dengan kesalahan 401 atau 403.

Misalnya, permintaan berikut secara eksplisit meminta token akses dengan cakupan sql, file.files, dan dashboards.genie.

curl --request POST \
https://<databricks-instance>/oidc/v1/token \
--data "client_id=databricks-cli" \
--data "grant_type=authorization_code" \
--data "redirect_uri=<redirect-url>" \
--data "code_verifier=<code-verifier>" \
--data "code=<authorization-code>" \
--data "scope=sql+file.files+dashboards.genie"

Untuk petunjuk lengkap, lihat Membuat token akses OAuth U2M secara manual.

Mengirim permintaan ke aplikasi

Saat Anda memanggil titik akhir API aplikasi, sertakan token Pembawa di header Otorisasi dan ganti <your-endpoint> dengan jalur API aktual aplikasi Anda:

CURL

curl "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>" \
     -H "Authorization: Bearer <YOUR_TOKEN>"

Python dengan permintaan

import requests

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers={"Authorization": f"Bearer {token}"}
)

Python dengan SDK

from databricks.sdk import WorkspaceClient
import requests

wc = WorkspaceClient()
headers = wc.config.authenticate()

response = requests.get(
    "https://<app-name>-<id>.<region>.databricksapps.com/api/<your-endpoint>",
    headers=headers
)

Pertimbangan keamanan

Saat Anda terhubung ke aplikasi dari lingkungan lokal Anda, ikuti praktik terbaik keamanan berikut:

  • Jangan pernah menyematkan token akses secara langsung dalam kode sumber Anda. Gunakan variabel lingkungan atau penyimpanan kredensial yang aman.
  • Perbarui token secara teratur untuk meminimalkan risiko keamanan jika dikompromikan.
  • Hindari pencatatan token akses atau data sensitif di log aplikasi Anda.

Troubleshooting

Jika Anda mengalami masalah saat menyambungkan ke aplikasi dari komputer lokal, coba solusi ini.

Kegagalan autentikasi (kesalahan 401)

Verifikasi hal berikut:

  • Token Anda berlaku (jalankan databricks auth token --profile my-env)
  • Profil Anda dikonfigurasi dengan benar dengan databricks auth login
  • Token belum kedaluwarsa
  • Token Anda mencakup cakupan OAuth yang diperlukan. Alat CLI dan SDK hanya menyediakan cakupan dasar seperti all-apis, yang mungkin tidak cukup untuk otorisasi pengguna.

Izin ditolak (kesalahan 403)

Verifikasi hal berikut:

  • Anda memiliki izin CAN USE pada aplikasi
  • Token Anda mencakup cakupan OAuth yang diperlukan. Cakupan yang tidak mencukupi dapat menyebabkan 403 kesalahan bahkan dengan izin yang valid.

Aplikasi tidak ditemukan (kesalahan 404)

Verifikasi hal berikut:

  • ID dan URL ruang kerja sudah benar
  • Aplikasi ini disebarkan dan berjalan
  • Jalur titik akhir ada di aplikasi

Masalah konektivitas jaringan

Verifikasi hal berikut:

  • Jaringan Anda mengizinkan koneksi HTTPS keluar
  • Domain *.databricksapps.com dapat diakses dari jaringan Anda

Selain itu, periksa apakah organisasi Anda menggunakan proksi yang memerlukan konfigurasi.

Sumber daya tambahan

Untuk informasi selengkapnya, lihat sumber daya berikut ini: