Udostępnij za pośrednictwem


Uwierzytelnianie dostępu do usługi Azure Databricks przy użyciu konta użytkownika przy użyciu protokołu OAuth (OAuth U2M)

Usługa Azure Databricks używa uwierzytelniania użytkownika do maszyny (U2M) OAuth, aby umożliwić interfejsowi wiersza polecenia i interfejsowi API dostęp do kont i zasobów obszaru roboczego usługi Azure Databricks w imieniu użytkownika. Gdy użytkownik początkowo zaloguje się i wyrazi zgodę na żądanie uwierzytelniania OAuth, token OAuth zostanie przekazany uczestniczącym narzędziu lub zestawowi SDK w celu przeprowadzenia uwierzytelniania opartego na tokenach w imieniu użytkownika od tego czasu. Token OAuth ma okres istnienia co godzinę, po którym narzędzie lub zestaw SDK podejmie automatyczną próbę uzyskania nowego tokenu, który jest również ważny przez jedną godzinę.

Usługa Azure Databricks obsługuje dwa sposoby uwierzytelniania dostępu dla konta użytkownika za pomocą protokołu OAuth:

  • Głównie automatycznie, korzystając z ujednoliconej obsługi uwierzytelniania klienta usługi Databricks. Użyj tego uproszczonego podejścia, jeśli używasz określonych zestawów SDK usługi Azure Databricks (takich jak zestaw SDK narzędzia Terraform usługi Databricks) i narzędzi. Obsługiwane narzędzia i zestawy SDK są wymienione w ujednoliconym uwierzytelnianiu klienta usługi Databricks.
  • Ręcznie, generując bezpośrednio parę weryfikatorów kodu OAuth/wyzwanie i kod autoryzacji, a następnie używając ich do utworzenia początkowego tokenu OAuth, który zostanie przekazany w konfiguracji. Użyj tej metody, jeśli nie używasz interfejsu API obsługiwanego przez ujednolicone uwierzytelnianie klienta usługi Databricks. Aby uzyskać więcej informacji, zobacz: Ręcznie generate i użyj tokenów dostępu do uwierzytelniania OAuth typu użytkownik-do-maszyny (U2M).

Uwierzytelnianie U2M za pomocą ujednoliconego uwierzytelniania klienta usługi Databricks

Uwaga

Przed rozpoczęciem konfigurowania uwierzytelniania przejrzyj uprawnienia listy ACL dla określonej kategorii operacji w obiektach obszaru roboczego i ustal, czy konto ma wymagany poziom dostępu. Aby uzyskać więcej informacji, zobacz Listy kontroli dostępu.

Aby przeprowadzić uwierzytelnianie OAuth U2M za pomocą zestawów SDK usługi Azure Databricks i narzędzi obsługujących ujednolicone uwierzytelnianie klienta, należy zintegrować następujące elementy w kodzie:

Środowisko

Aby użyć zmiennych środowiskowych dla określonego typu uwierzytelniania usługi Azure Databricks za pomocą narzędzia lub zestawu SDK, zobacz Uwierzytelnianie dostępu do zasobów usługi Azure Databricks lub dokumentacji narzędzia lub zestawu SDK. Zobacz również Zmienne środowiskowe i pola dla ujednoliconego uwierzytelniania klienta oraz domyślne metody ujednoliconego uwierzytelniania klienta.

W przypadku operacji na poziomie konta użyj następujących zmiennych środowiskowych, set:

  • DATABRICKS_HOST, set do wartości adresu URL konsoli konta Azure Databricks https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID

W przypadku operacji na poziomie obszaru roboczego set są następujące zmienne środowiskowe:

  • DATABRICKS_HOST, set do wartości adresu URL dla poszczególnych obszarów roboczych usługi Azure Databricks , na przykład https://adb-1234567890123456.7.azuredatabricks.net.

Profil

Utwórz lub zidentyfikuj profil konfiguracji usługi Azure Databricks z następującymi polami w .databrickscfg pliku. Jeśli utworzysz profil, zastąp symbole zastępcze odpowiednimi values. Aby użyć profilu za pomocą narzędzia lub zestawu SDK, zobacz Uwierzytelnianie dostępu do zasobów usługi Azure Databricks lub dokumentacji narzędzia lub zestawu SDK. Zobacz również Zmienne środowiskowe i pola dla ujednoliconego uwierzytelniania klienta oraz domyślne metody ujednoliconego uwierzytelniania klienta.

W przypadku operacji na poziomie konta set następujące values w pliku .databrickscfg. W takim przypadku adres URL konsoli konta usługi Azure Databricks to https://accounts.azuredatabricks.net:

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

W przypadku operacji na poziomie obszaru roboczegoset następujące values w pliku .databrickscfg. W takim przypadku hostem jest adres URL usługi Azure Databricks dla obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net:

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

CLI

W przypadku interfejsu wiersza polecenia usługi Databricks uruchom databricks auth login polecenie z następującymi opcjami:

Po uruchomieniu tego polecenia postępuj zgodnie z instrukcjami w przeglądarce internetowej, aby zalogować się do konta lub obszaru roboczego usługi Azure Databricks.

Aby uzyskać więcej informacji, zobacz Uwierzytelnianie OAuth U2M za pomocą interfejsu wiersza polecenia usługi Databricks.

Połącz

Uwaga

Uwierzytelnianie OAuth U2M jest obsługiwane w następujących wersjach programu Databricks Connect:

  • W przypadku języka Python usługa Databricks Connect dla środowiska Databricks Runtime 13.1 lub nowszego.
  • W przypadku języka Scala usługa Databricks Connect dla środowiska Databricks Runtime 13.3 LTS lub nowszego.

W przypadku usługi Databricks Connect można wykonać jedną z następujących czynności:

  • Set values w pliku .databrickscfg dla usługi Azure Databricks operacji na poziomie obszaru roboczego zgodnie z sekcją "Profil" tego artykułu. Ustaw zmienną środowiskową setcluster_id w profilu na adres URL przypisany do obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net.
  • Set zmiennych środowiskowych dla usługi Azure Databricks operacji na poziomie obszaru roboczego zgodnie z opisem w sekcji "Środowisko" tego artykułu. Ponadto set zmienną środowiskową DATABRICKS_CLUSTER_IDadresu URL obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net.

Values w pliku .databrickscfg zawsze mają pierwszeństwo przed zmiennymi środowiskowymi.

Aby zainicjować klienta usługi Databricks Connect przy użyciu tych zmiennych środowiskowych lub values w pliku .databrickscfg, zobacz Konfiguracja obliczeń dla usługi Databricks Connect.

VS Code

W przypadku rozszerzenia usługi Databricks dla programu Visual Studio Code wykonaj następujące czynności:

  1. W okienku Konfiguracja kliknij pozycję Konfiguruj usługę Databricks.
  2. W palecie poleceń w polu Host usługi Databricks wprowadź adres URL obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net, a następnie naciśnij Enter.
  3. Select OAuth (użytkownik na komputer).
  4. Wykonaj instrukcje na ekranie w przeglądarce internetowej, aby zakończyć uwierzytelnianie przy użyciu konta usługi Azure Databricks i zezwalać na dostęp do wszystkich interfejsów API.

Aby uzyskać więcej informacji, zobacz Uwierzytelnianie OAuth U2M za pomocą interfejsu wiersza polecenia usługi Databricks.

Terraform

Uwaga

Uwierzytelnianie OAuth U2M nie jest jeszcze obsługiwane.

Python

W przypadku operacji na poziomie konta i na poziomie obszaru roboczego należy użyć interfejsu wiersza polecenia usługi Databricks, aby uruchomić następujące polecenie przed uruchomieniem kodu w języku Python. To polecenie instruuje interfejs wiersza polecenia usługi Databricks, aby generate i buforować niezbędny token OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na komputerze:

Konfigurowanie operacji na poziomie konta usługi Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Zastąp symbole zastępcze w następujący sposób:

  • Zastąp <account-console-url> ciąg wartością https://accounts.azuredatabricks.net. (Nie róbtego do wartości URL obszaru roboczego Azure Databricks ).
  • Zastąp <account-id> ciąg wartością konta usługi Azure Databricks. Zobacz Lokalizowanie identyfikatora konta.

Uwaga

Jeśli masz już istniejący profil konfiguracji w usłudze Azure Databricks z wypełnionymi polami host i account_idset, możesz zastąpić --host <account-console-url> --account-id <account-id>--profile <profile-name>.

Po uruchomieniu auth login polecenia zostanie wyświetlony monit o zapisanie adresu URL logowania konta i identyfikatora konta jako profilu konfiguracji usługi Azure Databricks. Po wyświetleniu monitu wprowadź nazwę nowego lub istniejącego profilu w .databrickscfg pliku. Każdy istniejący profil o tej samej nazwie w .databrickscfg pliku zostanie zastąpiony.

Jeśli zostanie wyświetlony monit, ukończ instrukcje wyświetlane na ekranie przeglądarki, aby ukończyć logowanie. Następnie użyj kodu w języku Python podobnego do jednego z następujących fragmentów kodu:

W przypadku uwierzytelniania domyślnego:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

W przypadku konfiguracji bezpośredniej (zastąp symbole zastępcze retrieve własną implementacją, aby uzyskać values z konsoli lub z innego źródła konfiguracji, takiego jak Azure KeyVault). W takim przypadku adres URL konsoli konta usługi Azure Databricks to https://accounts.azuredatabricks.net:

from databricks.sdk import AccountClient

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

Konfigurowanie operacji na poziomie obszaru roboczego usługi Databricks

databricks auth login --host <worskpace-url>

Zastąp symbol zastępczy <workspace-url> docelowym adresem URL usługi Azure Databricks dla każdego obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net.

Uwaga

Jeśli masz istniejący profil konfiguracji usługi Azure Databricks, w którym pole host jest już set, możesz zastąpić --host <workspace-url> przez --profile <profile-name>.

Po uruchomieniu auth login polecenia zostanie wyświetlony monit o zapisanie adresu URL obszaru roboczego jako profilu konfiguracji usługi Azure Databricks. Po wyświetleniu monitu wprowadź nazwę nowego lub istniejącego profilu w .databrickscfg pliku. Każdy istniejący profil o tej samej nazwie w .databrickscfg pliku zostanie zastąpiony.

Jeśli zostanie wyświetlony monit, ukończ instrukcje wyświetlane na ekranie przeglądarki, aby ukończyć logowanie. Następnie użyj kodu w języku Python podobnego do jednego z następujących fragmentów kodu:

W przypadku uwierzytelniania domyślnego:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

W przypadku konfiguracji bezpośredniej (zastąp symbole retrieve własnym rozwiązaniem, aby pobrać values z konsoli lub innego magazynu konfiguracji, takiego jak Azure KeyVault). W takim przypadku hostem jest adres URL usługi Azure Databricks dla obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net:

from databricks.sdk import WorkspaceClient

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

Aby uzyskać więcej informacji na temat uwierzytelniania za pomocą narzędzi i zestawów SDK usługi Databricks korzystających z języka Python i implementujących ujednolicone uwierzytelnianie klienta usługi Databricks, zobacz:

Java

W przypadku operacji na poziomie konta i na poziomie obszaru roboczego należy użyć interfejsu wiersza polecenia usługi Databricks, aby uruchomić następujące polecenie przed uruchomieniem kodu Java. To polecenie nakazuje interfejsowi wiersza polecenia usługi Databricks generate i zbuforowanie niezbędnego tokenu OAuth w ścieżce .databricks/token-cache.json, w folderze głównym użytkownika na Twoim komputerze.

Konfigurowanie operacji na poziomie konta usługi Databricks

databricks auth login --host <account-console-url> --account-id <account-id>

Zastąp symbole zastępcze w następujący sposób:

  • Zastąp <account-console-url> ciąg wartością https://accounts.azuredatabricks.net. (Nie tego do wartości adresu URL obszaru roboczego usługi Azure Databricks ).
  • Zastąp <account-id> ciąg wartością konta usługi Azure Databricks. Zobacz Lokalizowanie identyfikatora konta.

Uwaga

Jeśli masz istniejący profil konfiguracji usługi Azure Databricks z polami host i account_idset, możesz zastąpić --host <account-console-url> --account-id <account-id>--profile <profile-name>.

Po uruchomieniu auth login polecenia zostanie wyświetlony monit o zapisanie adresu URL logowania konta i identyfikatora konta jako profilu konfiguracji usługi Azure Databricks. Po wyświetleniu monitu wprowadź nazwę nowego lub istniejącego profilu w .databrickscfg pliku. Każdy istniejący profil o tej samej nazwie w .databrickscfg pliku zostanie zastąpiony.

Jeśli zostanie wyświetlony monit, ukończ instrukcje wyświetlane na ekranie przeglądarki, aby ukończyć logowanie. Następnie użyj kodu Java podobnego do jednego z następujących fragmentów kodu:

W przypadku uwierzytelniania domyślnego:

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

W przypadku bezpośredniej konfiguracji (zastąp symbole zastępcze retrieve własną implementacją, aby pobrać values z konsoli lub innego źródła konfiguracji, takiego jak Azure KeyVault). W takim przypadku adres URL konsoli konta usługi Azure Databricks to https://accounts.azuredatabricks.net:

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

Konfigurowanie operacji na poziomie obszaru roboczego usługi Databricks

W przypadku operacji na poziomie obszaru roboczego należy najpierw użyć interfejsu wiersza polecenia usługi Databricks do uruchomienia następującego polecenia przed uruchomieniem kodu Java. To polecenie nakazuje interfejsowi wiersza polecenia Databricks, aby generate i buforować niezbędny token OAuth w ścieżce .databricks/token-cache.json w folderze domowym użytkownika na komputerze.

databricks auth login --host <worskpace-url>

Zastąp symbol zastępczy <workspace-url> docelowym adresem URL usługi Azure Databricks dla każdego obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net.

Uwaga

Jeśli masz istniejący profil konfiguracji usługi Azure Databricks z polem host już set, możesz zastąpić --host <workspace-url>--profile <profile-name>.

Po uruchomieniu auth login polecenia zostanie wyświetlony monit o zapisanie adresu URL obszaru roboczego jako profilu konfiguracji usługi Azure Databricks. Po wyświetleniu monitu wprowadź nazwę nowego lub istniejącego profilu w .databrickscfg pliku. Każdy istniejący profil o tej samej nazwie w .databrickscfg pliku zostanie zastąpiony.

Jeśli zostanie wyświetlony monit, ukończ instrukcje wyświetlane na ekranie przeglądarki, aby ukończyć logowanie. Następnie użyj kodu Java podobnego do jednego z następujących fragmentów kodu:

W przypadku uwierzytelniania domyślnego:

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

W przypadku konfiguracji bezpośredniej (zastąp symbole retrieve swoją własną implementacją, aby pobrać values z konsoli lub innego magazynu konfiguracji, takiego jak Azure KeyVault). W takim przypadku hostem jest adres URL usługi Azure Databricks dla obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net:

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

Aby uzyskać więcej informacji na temat uwierzytelniania za pomocą narzędzi i zestawów SDK usługi Databricks korzystających z języka Java oraz implementujących ujednolicone uwierzytelnianie klienta usługi Databricks, zobacz:

Go

W przypadku operacji na poziomie konta i na poziomie obszaru roboczego należy użyć interfejsu wiersza polecenia usługi Databricks, aby uruchomić następujące polecenie przed uruchomieniem kodu języka Go. To polecenie instruuje interfejs wiersza polecenia usługi Databricks, aby generate i buforować niezbędny token OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na komputerze:

Konfigurowanie operacji na poziomie konta usługi Databricks

databricks auth login --host <account-login-url> --account-id <account-id>

Zastąp symbole zastępcze w następujący sposób:

  • Zastąp <account-console-url> ciąg wartością https://accounts.azuredatabricks.net. (Nie tego do wartości adresu URL obszaru roboczego usługi Azure Databricks ).
  • Zastąp <account-id> ciąg wartością konta usługi Azure Databricks. Zobacz Lokalizowanie identyfikatora konta.

Uwaga

Jeśli masz istniejący profil konfiguracji usługi Azure Databricks , z polami host i account_idset, możesz zastąpić --host <account-console-url> --account-id <account-id>--profile <profile-name>.

Po uruchomieniu auth login polecenia zostanie wyświetlony monit o zapisanie adresu URL logowania konta i identyfikatora konta jako profilu konfiguracji usługi Azure Databricks. Po wyświetleniu monitu wprowadź nazwę nowego lub istniejącego profilu w .databrickscfg pliku. Każdy istniejący profil o tej samej nazwie w .databrickscfg pliku zostanie zastąpiony.

Jeśli zostanie wyświetlony monit, ukończ instrukcje wyświetlane na ekranie przeglądarki, aby ukończyć logowanie. Następnie użyj kodu Języka Go podobnego do jednego z następujących fragmentów kodu:

W przypadku uwierzytelniania domyślnego:

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

W przypadku bezpośredniej konfiguracji (zastąp symbole zastępcze retrieve własną implementacją, aby uzyskać values z konsoli lub innego magazynu konfiguracji, takiego jak Azure KeyVault). W takim przypadku adres URL konsoli konta usługi Azure Databricks to https://accounts.azuredatabricks.net:

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

Konfigurowanie operacji na poziomie obszaru roboczego usługi Databricks

W przypadku operacji na poziomie obszaru roboczego należy najpierw użyć interfejsu wiersza polecenia usługi Databricks do uruchomienia następującego polecenia, zanim uruchomisz kod języka Go. To polecenie instruuje interfejs wiersza polecenia usługi Databricks, aby generate i buforować niezbędny token OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na komputerze:

databricks auth login --host <worskpace-url>

Zastąp symbol zastępczy <workspace-url> docelowym adresem URL usługi Azure Databricks dla każdego obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net.

Uwaga

Jeśli masz istniejący profil konfiguracji usługi Azure Databricks , w którym pole host jest już set, możesz zastąpić --host <workspace-url>--profile <profile-name>.

Po uruchomieniu auth login polecenia zostanie wyświetlony monit o zapisanie adresu URL obszaru roboczego jako profilu konfiguracji usługi Azure Databricks. Po wyświetleniu monitu wprowadź nazwę nowego lub istniejącego profilu w .databrickscfg pliku. Każdy istniejący profil o tej samej nazwie w .databrickscfg pliku zostanie zastąpiony.

Jeśli zostanie wyświetlony monit, ukończ instrukcje wyświetlane na ekranie przeglądarki, aby ukończyć logowanie. Następnie użyj kodu Języka Go podobnego do jednego z następujących fragmentów kodu:

W przypadku uwierzytelniania domyślnego:

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

W przypadku konfiguracji bezpośredniej (zastąp symbole zastępcze retrieve własną implementacją, aby pobrać values z konsoli lub innego magazynu konfiguracji, takiego jak Azure KeyVault). W takim przypadku hostem jest adres URL usługi Azure Databricks dla obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net:

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

Aby uzyskać więcej informacji na temat uwierzytelniania za pomocą narzędzi i zestawów SDK usługi Databricks korzystających z języka Go i implementujących ujednolicone uwierzytelnianie klienta usługi Databricks, zobacz Uwierzytelnianie zestawu SDK usługi Databricks dla języka Go przy użyciu konta lub obszaru roboczego usługi Azure Databricks.

Ręcznie generate oraz użyj tokenów dostępu do uwierzytelniania użytkownika-maszyny (U2M) OAuth

Uwaga

Ta sekcja jest dostępna dla użytkowników z narzędziami lub usługami innych firm, które nie współpracują ze standardem ujednoliconego uwierzytelniania klienta usługi Databricks.

Jeśli z jakiegoś powodu musisz ręcznie skonfigurować generate, refreshlub używać tokenów dostępu OAuth usługi Azure Databricks do uwierzytelniania OAuth U2M, postępuj zgodnie z instrukcjami w tej sekcji.

Krok 1: Generate weryfikator kodu OAuth i parę wyzwań kodu

Aby ręcznie wykonać generate i używać tokenów dostępu do uwierzytelniania OAuth U2M, musisz najpierw mieć weryfikator kodu OAuth oraz wyzwanie kodu OAuth , które jest pochodną tego weryfikatora. Używasz wyzwania kodu w kroku 2, aby generate kod autoryzacji OAuth. Używasz weryfikatora kodu i kodu autoryzacji w kroku 3, aby generate token dostępu OAuth.

Uwaga

Chociaż technicznie można używać niekodowanych ciągów w postaci zwykłego tekstu dla weryfikatora kodu i wyzwania kodu, usługa Databricks zdecydowanie zachęca do przestrzegania standardu OAuth do generowania weryfikatora kodu i wyzwania kodu.

W szczególności weryfikator kodu powinien być kryptograficznie losowym ciągiem używającym znaków z zestawów A-Z, a-z, 0-9i znaków -._~ interpunkcyjnych (łącznik, kropka, podkreślenie i tylda) z zakresu od 43 do 128 znaków. Wyzwanie kodu powinno być ciągiem zakodowanym w formacie Base64 algorytmem URL skrótu SHA256 weryfikatora kodu. Aby uzyskać więcej informacji, zobacz Żądanie autoryzacji.

Możesz uruchomić następujący skrypt języka Python, aby szybko generate unikatowego weryfikatora kodu i pary wyzwań kodu. Mimo że można wielokrotnie używać tego wygenerowanego weryfikatora kodu i pary wyzwań kodu, usługa Databricks zaleca generate nową parę weryfikatorów kodu i wyzwania kodu za każdym razem, gdy ręcznie generate tokeny dostępu do uwierzytelniania OAuth U2M.

import uuid, hashlib, base64

# Generate a UUID.
uuid1 = uuid.uuid4()

# Convert the UUID to a string.
uuid_str1 = str(uuid1).upper()

# Create the code verifier.
code_verifier = uuid_str1 + "-" + uuid_str1

# Create the code challenge based on the code verifier.
code_challenge = base64.urlsafe_b64encode(hashlib.sha256(code_verifier.encode()).digest()).decode('utf-8')

# Remove all padding from the code challenge.
code_challenge = code_challenge.replace('=', '')

# Print the code verifier and the code challenge.
# Use these in your calls to manually generate
# access tokens for OAuth U2M authentication.
print(f"code_verifier:  {code_verifier}")
print(f"code_challenge: {code_challenge}")

Krok 2. Generate kod autoryzacji

Kod autoryzacji OAuth służy do generate tokenu dostępu OAuth usługi Azure Databricks. Kod autoryzacji wygasa natychmiast po użyciu go do generate tokenu dostępu OAuth usługi Azure Databricks. Zakres kodu autoryzacji zależy od poziomu, z którego generate. Kod autoryzacji można generate na poziomie konta Azure Databricks lub na poziomie obszaru roboczego w następujący sposób:

Generate kod autoryzacji na poziomie konta

  1. Jako administrator konta zaloguj się do konsoli konta.

  2. Kliknij strzałkę w dół obok swojej nazwy użytkownika w prawym górnym rogu.

  3. Skopiuj identyfikator konta.

  4. Na pasku adresu przeglądarki internetowej przejdź do następującego adresu URL. Podziały wierszy zostały dodane w celu zapewnienia czytelności. Adres URL nie może zawierać tych podziałów wierszy.

    W poniższym adresie URL zastąp następujące elementy:

    • Zastąp wartość <account-id> skopiowaną identyfikatorem konta.
    • Zastąp ciąg <redirect-url> adresem URL przekierowania na komputer lokalny, na przykład http://localhost:8020.
    • Zastąp <state> ciąg ciągiem zwykłego tekstu, którego można użyć do zweryfikowania integralności kodu autoryzacji.
    • Zastąp <code-challenge> element wyzwaniem kodu wygenerowany w kroku 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
    
  5. Po wyświetleniu monitu postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zalogować się do konta usługi Azure Databricks.

  6. Na pasku adresu przeglądarki internetowej skopiuj kod autoryzacji. Kod autoryzacji jest pełnym ciągiem znaków między code= i znakiem & w adresie URL. Na przykład kod autoryzacji w następującym adresie URL to dcod...7fe6:

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

    Należy sprawdzić integralność tego kodu autoryzacji, sprawdzając wizualnie, czy <state> wartość w tym adresie URL odpowiedzi jest zgodna z wartością state podaną w adresie URL żądania. Jeśli values są różne, nie powinieneś używać tego kodu autoryzacyjnego, ponieważ mógł on zostać skompromitowany.

  7. Przeskocz do Generate tokenu dostępu na poziomie konta.

Generate kodu autoryzacji na poziomie obszaru roboczego

  1. Na pasku adresu przeglądarki internetowej przejdź do następującego adresu URL. Podziały wierszy zostały dodane w celu zapewnienia czytelności. Adres URL nie może zawierać tych podziałów wierszy.

    W poniższym adresie URL zastąp następujące elementy:

    • Zastąp <databricks-instance> ciąg nazwą wystąpienia obszaru roboczego usługi Azure Databricks, na przykład adb-1234567890123456.7.azuredatabricks.net.
    • Zastąp ciąg <redirect-url> adresem URL przekierowania na komputer lokalny, na przykład http://localhost:8020.
    • Zastąp <state> ciąg ciągiem zwykłego tekstu, którego można użyć do zweryfikowania integralności kodu autoryzacji.
    • Zastąp <code-challenge> element wyzwaniem kodu wygenerowany w kroku 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. Po wyświetleniu monitu postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zalogować się do obszaru roboczego usługi Azure Databricks.

  3. Na pasku adresu przeglądarki internetowej skopiuj kod autoryzacji. Kod autoryzacji jest pełnym ciągiem znaków między code= i znakiem & w adresie URL. Na przykład kod autoryzacji w następującym adresie URL to dcod...7fe6:

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

    Należy sprawdzić integralność tego kodu autoryzacji, sprawdzając wizualnie, czy <state> wartość w tym adresie URL odpowiedzi jest zgodna z wartością state podaną w adresie URL żądania. Jeśli values są inne, nie należy używać kodu autoryzacyjnego, ponieważ może być on zagrożony.

Krok 3. Użyj kodu autoryzacji, aby uzyskać generate token dostępu OAuth

Kod autoryzacji OAuth z poprzedniego kroku jest używany do generate tokenu dostępu OAuth usługi Azure Databricks w następujący sposób:

  • Aby wywołać interfejsy API REST na poziomie konta i na poziomie obszaru roboczego w ramach kont i obszarów roboczych, do których ma dostęp konto użytkownika usługi Azure Databricks, użyj kodu autoryzacji na poziomie konta, aby token dostępu na poziomie konta.
  • Aby wywołać interfejsy API REST w obrębie tylko jednego obszaru roboczego, do którego twoje konto użytkownika ma dostęp, możesz użyć kodu autoryzacji na poziomie obszaru roboczego, aby generate token dostępu na poziomie obszaru roboczego tylko dla tego obszaru roboczego.

Generate token dostępu na poziomie konta

  1. Użyj takiego klienta jak curl oraz kodu autoryzacji na poziomie konta, aby generate token dostępu OAuth na poziomie konta. W poniższym curl wywołaniu zastąp następujące symbole zastępcze:

    • Zastąp <account-id> element identyfikatorem konta z kroku 2.
    • Zastąp <redirect-url> ciąg adresem URL przekierowania z kroku 2.
    • Zastąp element <code-verifier> weryfikatorem kodu wygenerowany w kroku 1.
    • Zastąp element <authorization-code> kodem autoryzacji na poziomie konta wygenerowanym w kroku 2.
    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. W odpowiedzi skopiuj token dostępu OAuth na poziomie konta. Token dostępu jest pełnym ciągiem znaków w access_token obiekcie. Na przykład token dostępu w następującej odpowiedzi to eyJr...Dkag:

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

    Ten token dostępu wygasa w ciągu jednej godziny. Aby generate nowego tokenu dostępu, powtórz tę procedurę z kroku 1.

  3. Przejdź do kroku 4. Wywoływanie interfejsu API REST usługi Databricks.

Generate token dostępu na poziomie obszaru roboczego

  1. Użyj klienta, takiego jak curl wraz z kodem autoryzacji na poziomie obszaru roboczego, aby generate token dostępu OAuth na poziomie obszaru roboczego. W poniższym curl wywołaniu zastąp następujące symbole zastępcze:

    • Zastąp <databricks-instance> ciąg nazwą wystąpienia obszaru roboczego usługi Azure Databricks, na przykład adb-1234567890123456.7.azuredatabricks.net.
    • Zastąp <redirect-url> ciąg adresem URL przekierowania z kroku 2.
    • Zastąp element <code-verifier> weryfikatorem kodu wygenerowany w kroku 1.
    • Zastąp element <authorization-code> kodem autoryzacji na poziomie obszaru roboczego wygenerowanym w kroku 2.
    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. W odpowiedzi skopiuj token dostępu OAuth na poziomie obszaru roboczego. Token dostępu jest pełnym ciągiem znaków w access_token obiekcie. Na przykład token dostępu w następującej odpowiedzi to eyJr...Dkag:

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

    Ten token dostępu wygasa w ciągu jednej godziny. Aby generate nowego tokenu dostępu, powtórz tę procedurę z kroku 1.

Krok 4. Wywoływanie interfejsu API REST usługi Databricks

Token dostępu OAuth na poziomie konta lub obszaru roboczego służy do uwierzytelniania w interfejsach API REST na poziomie konta usługi Azure Databricks i interfejsach API REST na poziomie obszaru roboczego, w zależności od zakresu tokenu dostępu. Twoje konto użytkownika usługi Azure Databricks musi być administratorem konta, aby wywoływać interfejsy API REST na poziomie konta.

Przykładowe żądanie interfejsu API REST na poziomie konta

W tym przykładzie użyto curl wraz z uwierzytelnianiem Bearer w celu getlist wszystkich obszarów roboczych skojarzonych z kontem.

  • Zastąp <oauth-access-token> element tokenem dostępu OAuth na poziomie konta.
  • Zastąp <account-id> ciąg swoim identyfikatorem konta.
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"

Przykładowe żądanie interfejsu API REST na poziomie obszaru roboczego

W tym przykładzie użyto curl wraz z uwierzytelnianiem Bearer w celu list wszystkich dostępnych klastrów w określonym obszarze roboczym.

export OAUTH_TOKEN=<oauth-access-token>

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