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ęczne generowanie i używanie tokenów dostępu na potrzeby uwierzytelniania użytkownika-maszyny (U2M) protokołu OAuth.
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 ustaw następujące zmienne środowiskowe:
DATABRICKS_HOST
, ustaw wartość adresu URL konsoli konta usługi Azure Databricks,https://accounts.azuredatabricks.net
.DATABRICKS_ACCOUNT_ID
W przypadku operacji na poziomie obszaru roboczego ustaw następujące zmienne środowiskowe:
DATABRICKS_HOST
, ustaw wartość adresu URL usługi Azure Databricks na obszar roboczy, na przykładhttps://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 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 ustaw następujące wartości w .databrickscfg
pliku. 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 ustaw następujące wartości w .databrickscfg
pliku. 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:
- W przypadku operacji na poziomie konta usługi Azure Databricks.
--host <account-console-url> --account-id <account-id>
- W przypadku operacji na poziomie obszaru roboczego usługi Azure Databricks.
--host <workspace-url>
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:
- Ustaw wartości w
.databrickscfg
pliku dla operacji na poziomie obszaru roboczego usługi Azure Databricks zgodnie z opisem w sekcji "Profil" tego artykułu. Ustaw również zmiennącluster_id
środowiskową w profilu na adres URL obszaru roboczego, na przykładhttps://adb-1234567890123456.7.azuredatabricks.net
. - Ustaw zmienne środowiskowe dla operacji na poziomie obszaru roboczego usługi Azure Databricks zgodnie z opisem w sekcji "Środowisko" tego artykułu. Ustaw również zmienną
DATABRICKS_CLUSTER_ID
środowiskową na adres URL obszaru roboczego, na przykładhttps://adb-1234567890123456.7.azuredatabricks.net
.
Wartości w .databrickscfg
pliku zawsze mają pierwszeństwo przed zmiennymi środowiskowymi.
Aby zainicjować klienta usługi Databricks Connect przy użyciu tych zmiennych środowiskowych lub wartości w .databrickscfg
pliku, 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:
- W okienku Konfiguracja kliknij pozycję Konfiguruj usługę Databricks.
- 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śnijEnter
. - Wybierz pozycję OAuth (użytkownik do komputera).
- 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 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 z ustawionymi polami host
iaccount_id
, możesz zastąpić ciąg --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 retrieve
symbole zastępcze 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 .--profile <profile-name>
--host <workspace-url>
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 retrieve
symbole zastępcze 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:
- Konfigurowanie klienta usługi Databricks Connect dla języka Python
- Konfiguracja uwierzytelniania dla rozszerzenia usługi Databricks dla programu Visual Studio Code
- Uwierzytelnianie zestawu SDK usługi Databricks dla języka Python przy użyciu konta lub obszaru roboczego usługi Azure Databricks
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 z ustawionymi polami host
iaccount_id
, możesz zastąpić ciąg --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 konfiguracji bezpośredniej (zastąp retrieve
symbole zastępcze 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 roboczego należy najpierw użyć interfejsu wiersza polecenia usługi Databricks do uruchomienia następującego polecenia 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 .--profile <profile-name>
--host <workspace-url>
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 retrieve
symbole zastępcze 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 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:
- Konfigurowanie klienta usługi Databricks Connect dla języka Scala (klient programu Databricks Connect dla języka Scala używa dołączonego zestawu SDK usługi Databricks dla języka Java na potrzeby uwierzytelniania)
- Uwierzytelnianie zestawu SDK usługi Databricks dla języka Java przy użyciu konta lub obszaru roboczego usługi Azure Databricks
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 z ustawionymi polami host
iaccount_id
, możesz zastąpić ciąg --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 konfiguracji bezpośredniej (zastąp retrieve
symbole zastępcze 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 .--profile <profile-name>
--host <workspace-url>
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 retrieve
symbole zastępcze 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-9
i 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:
- 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, wygeneruj kod autoryzacji 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 wygenerować kod autoryzacji na poziomie obszaru roboczego tylko dla tego obszaru roboczego.
Generowanie kodu autoryzacji na poziomie konta
Jako administrator konta zaloguj się do konsoli konta.
Kliknij strzałkę w dół obok swojej nazwy użytkownika w prawym górnym rogu.
Skopiuj identyfikator konta.
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ładhttp://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
- Zastąp wartość
Po wyświetleniu monitu postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zalogować się do konta usługi Azure Databricks.
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 todcod...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.Przejdź do sekcji Generowanie tokenu dostępu na poziomie konta.
Generowanie kodu autoryzacji na poziomie obszaru roboczego
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ładadb-1234567890123456.7.azuredatabricks.net
. - Zastąp ciąg
<redirect-url>
adresem URL przekierowania na komputer lokalny, na przykładhttp://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
- Zastąp
Po wyświetleniu monitu postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zalogować się do obszaru roboczego usługi Azure Databricks.
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 todcod...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
Użyj klienta, takiego jak
curl
wraz z kodem autoryzacji na poziomie konta, aby wygenerować token dostępu OAuth na poziomie konta. W poniższymcurl
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>"
- Zastąp
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 toeyJr...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.
Przejdź do kroku 4. Wywoływanie interfejsu API REST usługi Databricks.
Generowanie tokenu dostępu na poziomie obszaru roboczego
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ższymcurl
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ładadb-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>"
- Zastąp
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 toeyJr...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.
- Zastąp
<oauth-access-token>
element tokenem dostępu OAuth na poziomie konta lub obszaru roboczego. - Zastąp
<databricks-instance>
ciąg nazwą wystąpienia obszaru roboczego usługi Azure Databricks, na przykładadb-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"