Udostępnij przez


Połącz się z aplikacją API Databricks przy użyciu uwierzytelniania za pomocą tokenu

Możesz wywołać aplikację Databricks, która udostępnia interfejs API HTTP (na przykład aplikację FastAPI lub Gradio) przy użyciu uwierzytelniania z użyciem tokenu typu Bearer OAuth 2.0. Ta metoda działa z lokalnego środowiska deweloperskiego, aplikacji zewnętrznych i innych aplikacji usługi Azure Databricks.

Uwaga / Notatka

Metoda ta dotyczy tylko aplikacji, które udostępniają interfejsy API lub punkty końcowe (dostępne przy użyciu /api/ ścieżek). W przypadku aplikacji, które zapewniają tylko interfejs użytkownika lub przetwarzanie w tle, nie można nawiązać połączenia przy użyciu uwierzytelniania tokenu.

Requirements

Aby nawiązać połączenie z aplikacją usługi Databricks przy użyciu uwierzytelniania tokenu, musisz spełnić następujące wymagania:

  • Aplikacja musi udostępniać co najmniej jeden punkt końcowy interfejsu API dostępny przy użyciu /api/ ścieżek.
  • Musisz mieć CAN USE uprawnienia do aplikacji. Zobacz Konfigurowanie uprawnień dla aplikacji usługi Databricks.
  • Musisz mieć możliwość wygenerowania tokenu dostępu usługi Azure Databricks przy użyciu jednej z obsługiwanych metod uwierzytelniania.

Metody uwierzytelniania

Uwaga / Notatka

Nie można wywołać aplikacji Databricks bezpośrednio przy użyciu tokenu Azure Entra ID. Federacja tokenów wymaga kroku wymiany tokenów po stronie klienta, którego usługa Azure Databricks nie wykonuje po stronie serwera. Aby użyć tokenów identyfikatora entra platformy Azure do uwierzytelniania, należy najpierw wymienić je na tokeny OAuth. Zobacz Uwierzytelnianie przy użyciu tokenu dostawcy tożsamości.

Wybierz metodę uwierzytelniania zgodną ze scenariuszem połączenia:

Rozwój lokalny

Aby nawiązać połączenie ze swojego lokalnego środowiska deweloperskiego, użyj interfejsu wiersza polecenia usługi Azure Databricks lub zestawów SDK z poświadczeniami użytkownika.

  1. Zaloguj się za pomocą interfejsu wiersza polecenia:

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

    Usługa Azure Databricks zaleca korzystanie z uwierzytelniania użytkownika do komputera (U2M) OAuth.

  2. Generowanie tokenu dostępu:

    CLI

    databricks auth token --profile my-env
    

    Python

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

Aplikacje zewnętrzne

W przypadku dostępu programowego z aplikacji zewnętrznych użyj uwierzytelniania jednostki usługi z poświadczeniami maszyny do maszyny (M2M). Zobacz Autoryzowanie dostępu jednostki usługi do usługi Azure Databricks przy użyciu protokołu OAuth.

  1. Utwórz jednostkę usługi i uzyskaj identyfikator klienta oraz tajny klucz. Zobacz Zasady usługi.

  2. Wygeneruj token dostępu przy użyciu zestawu SDK usługi Azure Databricks:

    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()
    

Z pozostałych aplikacji Databricks

Po połączeniu jednej aplikacji Databricks z inną, aplikacja automatycznie obsługuje uwierzytelnianie przy użyciu przypisanej jednostki usługi.

from databricks.sdk import WorkspaceClient
import requests

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

Określanie zakresów protokołu OAuth na potrzeby autoryzacji użytkownika

Jeśli używasz CLI usługi Azure Databricks lub SDK z ujednoliconym uwierzytelnianiem, jak pokazano w poprzedniej sekcji, narzędzia automatycznie żądają podstawowego zakresu all-apis. Jeśli jednak aplikacja używa autoryzacji użytkownika, musisz ręcznie zażądać tokenu dostępu z dodatkowymi zakresami przy użyciu niestandardowego przepływu OAuth.

Upewnij się, że token dostępu zawiera zakresy skonfigurowane w sekcji Edytuj autoryzację>użytkownika. Jeśli token nie ma wymaganych zakresów, żądania mogą zakończyć się niepowodzeniem z błędami 401 lub 403.

Na przykład następujące żądanie jawnie żąda tokenu dostępu z zakresami sql, file.filesi 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"

Aby uzyskać pełne instrukcje, zobacz Ręczne generowanie tokenów dostępu OAuth U2M.

Wysyłanie żądań do aplikacji

Podczas wywoływania punktów końcowych interfejsu API aplikacji dołącz token Bearer w nagłówku Autoryzacji i zastąp <your-endpoint> rzeczywistą ścieżką API swojej aplikacji.

CURL

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

Język Python z żądaniami

import requests

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

Język Python z zestawem 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
)

Zagadnienia dotyczące zabezpieczeń

Podczas nawiązywania połączenia z aplikacjami ze środowiska lokalnego postępuj zgodnie z następującymi najlepszymi rozwiązaniami w zakresie zabezpieczeń:

  • Nigdy nie koduj tokenów dostępu na stałe w kodzie źródłowym. Użyj zmiennych środowiskowych lub bezpiecznych magazynów poświadczeń.
  • Odśwież tokeny regularnie, aby zminimalizować zagrożenia bezpieczeństwa, jeśli zostaną naruszone.
  • Unikaj rejestrowania tokenów dostępu lub poufnych danych w dziennikach aplikacji.

Rozwiązywanie problemów

Jeśli wystąpią problemy podczas nawiązywania połączenia z aplikacją z komputera lokalnego, wypróbuj te rozwiązania.

Błędy uwierzytelniania (błędy 401)

Sprawdź następujące:

  • Token jest prawidłowy (uruchom databricks auth token --profile my-env)
  • Twój profil jest poprawnie skonfigurowany za pomocą polecenia databricks auth login
  • Token nie wygasł
  • Token zawiera wymagane zakresy protokołu OAuth. Narzędzia interfejsu wiersza polecenia i zestawu SDK udostępniają tylko podstawowe zakresy, takie jak all-apis, które mogą nie być wystarczające do autoryzacji użytkownika.

Odmowa uprawnień (błędy 403)

Sprawdź następujące:

  • CAN USE Masz uprawnienia do aplikacji
  • Token zawiera wymagane zakresy protokołu OAuth. Niewystarczające zakresy mogą powodować błędy 403 nawet z prawidłowymi uprawnieniami.

Nie znaleziono aplikacji (błędy 404)

Sprawdź następujące:

  • Identyfikator i adres URL obszaru roboczego są poprawne
  • Aplikacja jest wdrażana i uruchomiona
  • Ścieżka punktu końcowego istnieje w aplikacji

Problemy z łącznością sieciową

Sprawdź następujące:

  • Sieć zezwala na wychodzące połączenia HTTPS
  • Domena *.databricksapps.com jest dostępna z sieci

Ponadto sprawdź, czy organizacja używa serwera proxy wymagającego konfiguracji.

Dodatkowe zasoby

Aby uzyskać więcej informacji, zobacz następujące zasoby: