Udostępnij za pośrednictwem


Autoryzowanie interakcyjnego dostępu do zasobów usługi Azure Databricks przy użyciu konta użytkownika przy użyciu protokołu OAuth

Ten temat zawiera kroki i szczegółowe informacje dotyczące autoryzowania dostępu do zasobów usługi Azure Databricks podczas interakcyjnego uruchamiania poleceń interfejsu wiersza polecenia usługi Azure Databricks lub wywoływania interfejsów API REST usługi Azure Databricks.

Usługa Azure Databricks używa protokołu OAuth jako preferowanego protokołu autoryzacji i uwierzytelniania użytkownika podczas interakcji z zasobami usługi Azure Databricks poza interfejsem użytkownika. Usługa Azure Databricks udostępnia również ujednolicone narzędzie do uwierzytelniania klienta w celu zautomatyzowania odświeżania tokenów dostępu generowanych w ramach metody uwierzytelniania OAuth.

Więcej informacji ogólnych znajdziesz w sekcji Autoryzowanie dostępu do zasobów usługi Azure Databricks.

Jakie są moje opcje autoryzacji i uwierzytelniania podczas uzyskiwania dostępu do zasobów usługi Azure Databricks?

W tym temacie autoryzacja odnosi się do protokołu (OAuth) używanego do negocjowania dostępu do określonych zasobów usługi Azure Databricks za pośrednictwem delegowania. Uwierzytelnianie odnosi się do mechanizmu, za pomocą którego poświadczenia są reprezentowane, przesyłane i weryfikowane — w tym przypadku są to tokeny dostępu.

Usługa Azure Databricks używa autoryzacji opartej na protokole OAuth 2.0w celu umożliwienia dostępu do zasobów konta i obszaru roboczego usługi Azure Databricks z wiersza polecenia lub kodu w imieniu użytkownika z uprawnieniami dostępu do tych zasobów. 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 dostępu 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 autoryzowania dostępu do 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ęczne generowanie i używanie tokenów dostępu na potrzeby uwierzytelniania użytkownika-maszyny (U2M) protokołu OAuth.

Interaktywna autoryzacja użytkowników z wykorzystaniem ujednoliconego uwierzytelniania klientów usługi Databricks

Uwaga

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

Aby wykonać autoryzację OAuth 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 Autoryzowanie 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 celu wykonania operacji na poziomie konta , ustaw następujące zmienne środowiskowe:

  • DATABRICKS_HOST, ustaw jako wartość adresu URL konsoli konta usługi Azure Databricks, https://accounts.azuredatabricks.net.
  • DATABRICKS_ACCOUNT_ID

Dla działań na poziomie obszaru roboczegoustaw następujące zmienne środowiskowe:

  • DATABRICKS_HOSTustaw wartość adresu URL usługi Azure Databricks adresu URL obszaru roboczego, 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 wartościami. Aby użyć profilu z narzędziem lub zestawem SDK, zobacz Autoryzowanie 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 kontaustaw następujące wartości 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 roboczego . 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 autoryzacji OAuth przy użyciu 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:

  • Ustaw wartości w pliku .databrickscfg dla operacji na poziomie obszaru roboczego usługi Azure Databricks zgodnie z opisem w sekcji "Profil" tego artykułu. Ustaw również zmienną środowiskową cluster_id w profilu na adres URL dla obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net.
  • Ustaw zmienne środowiskowe dla usługi Azure Databricks operacji na poziomie obszaru roboczego zgodnie z opisem w sekcji "Środowisko" tego artykułu. Ustaw również zmienną środowiskową DATABRICKS_CLUSTER_ID na adres URL dla obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net.

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

Aby zainicjować klienta usługi Databricks Connect przy użyciu tych zmiennych środowiskowych lub wartości 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. Wybierz 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 autoryzacji OAuth U2M przy użyciu interfejsu wiersza polecenia usługi Databricks.

Terraform

W przypadku operacji na poziomie konta i operacji na poziomie obszaru roboczego , należy użyć narzędzia Databricks CLI, aby uruchomić następujące polecenie przed zastosowaniem konfiguracji Terraform. To polecenie instruuje interfejs wiersza polecenia usługi Databricks w celu wygenerowania i buforowania niezbędnego tokenu OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na maszynie:

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 ustawiaj tego na wartość 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 już istniejący profil konfiguracji usługi Azure Databricks

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 programu Terraform podobnego do jednego z następujących fragmentów kodu:

W przypadku uwierzytelniania domyślnego:

provider "databricks" {
  alias = "account"
}

Aby skonfigurować bezpośrednio, ustaw provider przy użyciu następującej konfiguracji. Zastąp symbole zastępcze retrieve- własnym rozwiązaniem, aby pobrać wartości z konsoli lub innego magazynu konfiguracji, takiego jak HashiCorp Vault. Zobacz również Vault Provider. W tym przykładzie możesz ustawić account_id jako adres URL konsoli konta usługi Azure Databricks.

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

Konfigurowanie operacji na poziomie obszaru roboczego usługi Databricks

databricks auth login --host <workspace-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 już istniejący profil konfiguracji usługi Azure Databricks z ustawionym host polem, możesz zastąpić ciąg .--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 programu Terraform podobnego do jednego z następujących fragmentów kodu:

W przypadku uwierzytelniania domyślnego:

  provider "databricks" {
  alias = "workspace"
}

W przypadku konfiguracji bezpośredniej zastąp symbole zastępcze retrieve własną implementacją, aby pobrać wartości z konsoli lub innego magazynu konfiguracji, takiego jak HashiCorp Vault. Zobacz również Vault Provider. W takim przypadku hostem jest adres URL usługi Azure Databricks dla obszaru roboczego, na przykład https://adb-1234567890123456.7.azuredatabricks.net:

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

Aby uzyskać więcej informacji na temat uwierzytelniania za pomocą dostawcy narzędzia Terraform usługi Databricks, zobacz Authentication (Uwierzytelnianie).

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 w celu wygenerowania i buforowania niezbędnego tokenu OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na maszynie:

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 ustawiaj tego na wartość 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 już istniejący profil konfiguracji usługi Azure Databricks

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 autoryzacji domyślnej przy użyciu ujednoliconego uwierzytelniania klienta usługi Databricks:

from databricks.sdk import AccountClient

a = AccountClient()
# ...

W przypadku konfiguracji bezpośredniej (zastąp symbole zastępcze retrieve własną implementacją, aby pobrać wartości 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:

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 już istniejący profil konfiguracji usługi Azure Databricks z ustawionym host polem, możesz zastąpić ciąg .--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 w języku Python podobnego do jednego z następujących fragmentów kodu:

W przypadku autoryzacji domyślnej przy użyciu ujednoliconego uwierzytelniania klienta usługi Databricks:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
# ...

W przypadku konfiguracji bezpośredniej (zastąp symbole zastępcze retrieve własną implementacją, aby pobrać wartości 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 wygenerowanie i buforowanie niezbędnego tokenu OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na maszynie:

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 ustawiaj tego na wartość 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 już istniejący profil konfiguracji usługi Azure Databricks

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 autoryzacji domyślnej przy użyciu ujednoliconego uwierzytelniania klienta usługi Databricks:

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

W przypadku konfiguracji bezpośredniej (zastąp symbole zastępcze retrieve własną implementacją, aby pobrać wartości 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 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 roboczegonależy najpierw użyć Databricks CLI, aby uruchomić następujące polecenie przed uruchomieniem kodu Java. To polecenie instruuje interfejs wiersza polecenia usługi Databricks w celu wygenerowania i buforowania niezbędnego tokenu OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na maszynie:

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 już istniejący profil konfiguracji usługi Azure Databricks z ustawionym host polem, możesz zastąpić ciąg .--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 autoryzacji domyślnej przy użyciu ujednoliconego uwierzytelniania klienta usługi Databricks:

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

W przypadku konfiguracji bezpośredniej (zastąp symbole zastępcze retrieve własną implementacją, aby pobrać wartości 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 autoryzowania i 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 w celu wygenerowania i buforowania niezbędnego tokenu OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na maszynie:

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 ustawiaj tego na wartość 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 już istniejący profil konfiguracji usługi Azure Databricks

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 autoryzacji domyślnej przy użyciu ujednoliconego uwierzytelniania klienta usługi Databricks:

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

W przypadku konfiguracji bezpośredniej (zastąp symbole zastępcze retrieve własną implementacją, aby pobrać wartości 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 w celu wygenerowania i buforowania niezbędnego tokenu OAuth w ścieżce .databricks/token-cache.json w folderze głównym użytkownika na maszynie:

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 już istniejący profil konfiguracji usługi Azure Databricks z ustawionym host polem, możesz zastąpić ciąg .--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ć wartości 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ęczne generowanie i używanie tokenów dostępu na potrzeby uwierzytelniania użytkownika-maszyny OAuth (U2M)

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 wygenerować, odświeżyć lub użyć tokenów dostępu OAuth usługi Azure Databricks do uwierzytelniania OAuth U2M, postępuj zgodnie z instrukcjami w tej sekcji.

Krok 1. Generowanie weryfikatora kodu OAuth i pary wyzwań kodu

Aby ręcznie wygenerować i użyć tokenów dostępu do uwierzytelniania OAuth U2M, musisz najpierw mieć weryfikator kodu OAuth i wyzwanie kodu OAuth pochodzące z weryfikatora kodu. Zadanie kodu w kroku 2 służy do generowania kodu autoryzacji OAuth. Aby wygenerować token dostępu OAuth, należy użyć weryfikatora kodu i kodu autoryzacji w kroku 3.

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 wygenerować unikatowy weryfikator kodu i parę wyzwań kodu. Chociaż można wielokrotnie używać tego wygenerowanego weryfikatora kodu i pary wyzwań kodu, usługa Databricks zaleca wygenerowanie nowej pary weryfikatora kodu i wyzwania kodu za każdym razem, gdy ręcznie generujesz tokeny dostępu na potrzeby 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. Generowanie kodu autoryzacji

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

Generowanie kodu 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 wartości są różne, nie należy używać tego kodu autoryzacji, ponieważ może to być naruszone.

  7. Przejdź do sekcji Generowanie tokenu dostępu na poziomie konta.

Generowanie 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 wartości są różne, nie należy używać tego kodu autoryzacji, ponieważ może to być naruszone.

Krok 3. Generowanie tokenu dostępu OAuth przy użyciu kodu autoryzacji

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

  • Aby wywołać interfejsy API REST na poziomie konta i obszaru roboczego w ramach kont i obszarów roboczych, do których konto użytkownika usługi Azure Databricks ma dostęp, użyj kodu autoryzacji na poziomie konta, aby wygenerować 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 wygenerować token dostępu na poziomie obszaru roboczego tylko dla tego obszaru roboczego.

Generowanie tokenu dostępu na poziomie konta

  1. Użyj klienta, takiego jak curl wraz z kodem autoryzacji na poziomie konta, aby wygenerować 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 wygenerować nowy token dostępu, powtórz tę procedurę z kroku 1.

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

Generowanie tokenu dostępu na poziomie obszaru roboczego

  1. Użyj klienta, takiego jak curl wraz z kodem autoryzacji na poziomie obszaru roboczego, aby wygenerować 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 wygenerować nowy token 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 uwierzytelniania w Bearer celu uzyskania listy 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 uwierzytelniania, Bearer aby wyświetlić 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"