Udostępnij przez


Dostęp do usługi Azure Data Lake Storage za pomocą przekazywania poświadczeń Microsoft Entra ID (wersja starsza)

Ważne

Ta dokumentacja została wycofana i może nie zostać zaktualizowana.

Przepust poświadczeń został wycofany począwszy od wersji Databricks Runtime 15.0 i zostanie usunięty w przyszłych wersjach Databricks Runtime. Databricks zaleca uaktualnienie do Unity Catalog. Katalog Unity upraszcza zabezpieczenia i nadzór nad danymi, zapewniając centralne miejsce do administrowania i inspekcji dostępu do danych w wielu obszarach roboczych na Twoim koncie. Sprawdź temat Co to jest wykaz Unity?.

Aby zapewnić większe bezpieczeństwo i lepsze zarządzanie, kontaktuj się z zespołem Azure Databricks, aby wyłączyć przekazywanie poświadczeń w swoim koncie Azure Databricks.

Uwaga

Ten artykuł zawiera odwołania do terminu biała lista, termin, którego usługa Azure Databricks nie używa. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.

Możesz automatycznie uwierzytelniać się w ADLS z klastrów Azure Databricks, używając tej samej tożsamości Microsoft Entra ID, której używasz do logowania się do Azure Databricks. Po włączeniu przekazywania poświadczeń usługi Azure Data Lake Storage dla klastra, polecenia uruchamiane w tym klastrze mogą odczytywać i zapisywać dane w tej usłudze bez konieczności konfiguracji poświadczeń jednostki usługi w celu uzyskania dostępu do magazynu.

Przekazywanie poświadczeń usługi Azure Data Lake Storage jest obsługiwane tylko w usłudze Azure Data Lake Storage. Usługa Azure Blob Storage nie obsługuje przekazywania poświadczeń.

Ten artykuł dotyczy:

  • Włączanie przekazywania poświadczeń dla klastrów standardowych i o wysokiej współbieżności.
  • Konfigurowanie przekazywania poświadczeń i inicjalizacja zasobów magazynowania na kontach ADLS.
  • Uzyskiwanie dostępu do zasobów usługi ADLS bezpośrednio po włączeniu przekazywania poświadczeń uwierzytelniających.
  • Uzyskiwanie dostępu do zasobów usługi ADLS za pośrednictwem punktu montowania przy włączonej funkcji przekazywania poświadczeń.
  • Obsługiwane funkcje i ograniczenia podczas korzystania z przełączania poświadczeń.

Wymagania

  • Premium Plan. Zobacz Uaktualnianie lub obniżanie poziomu obszaru roboczego usługi Azure Databricks , aby uzyskać szczegółowe informacje na temat uaktualniania planu standardowego do planu Premium.
  • Konto magazynu Azure Data Lake Storage. Konta usługi Azure Data Lake Storage muszą używać hierarchicznej przestrzeni nazw do przekazywania poświadczeń usługi Azure Data Lake Storage. Zobacz wpis "Tworzenie konta magazynu", aby uzyskać instrukcje dotyczące tworzenia nowego konta usługi ADLS, wraz z informacjami o tym, jak włączyć hierarchiczną przestrzeń nazw.
  • Prawidłowo skonfigurowane uprawnienia użytkownika do usługi Azure Data Lake Storage. Administrator usługi Azure Databricks musi upewnić się, że użytkownicy mają odpowiednie role, na przykład Współautor danych w obszarze Storage Blob, aby odczytywać i zapisywać dane przechowywane w usłudze Azure Data Lake Storage. Zobacz Jak za pomocą portalu Azure przypisać rolę platformy Azure na potrzeby dostępu do danych obiektów blob i kolejek.
  • Zapoznaj się z uprawnieniami administratorów obszaru roboczego w obszarach roboczych, które są włączone do przekazywania, i przejrzyj istniejące przypisania administratora obszaru roboczego. Administratorzy obszaru roboczego mogą zarządzać operacjami dla swojego obszaru roboczego, w tym dodawać użytkowników i jednostki usług, tworzyć klastry i delegować innych użytkowników jako administratorów obszaru roboczego. Zadania zarządzania obszarami roboczymi, takie jak zarządzanie własnością zadań i wyświetlanie notesów, mogą zapewnić pośredni dostęp do danych zarejestrowanych w usłudze Azure Data Lake Storage. Administrator obszaru roboczego to rola uprzywilejowana, którą należy dokładnie dystrybuować.
  • Nie można używać klastra skonfigurowanego z poświadczeniami ADLS, na przykład poświadczeniami głównego konta usługi, z funkcją przekazywania poświadczeń.

Ważne

Nie można uwierzytelnić się w usłudze Azure Data Lake Storage przy użyciu poświadczeń identyfikatora Entra firmy Microsoft, jeśli znajdujesz się za zaporą, która nie została skonfigurowana do zezwalania na ruch do identyfikatora Entra firmy Microsoft. Usługa Azure Firewall domyślnie blokuje dostęp do usługi Active Directory. Aby zezwolić na dostęp, skonfiguruj tag usługi AzureActiveDirectory. Równoważne informacje dotyczące wirtualnych urządzeń sieciowych można znaleźć pod tagiem AzureActiveDirectory w pliku JSON zakresów adresów IP platformy Azure i tagów usług. Aby uzyskać więcej informacji, zobacz Tagi usługi Azure Firewall.

Zalecenia dotyczące rejestrowania

Tożsamości przekazywane do magazynu usługi ADLS można rejestrować w dziennikach diagnostycznych usługi Azure Storage. Rejestrowanie tożsamości umożliwia powiązanie żądań do ADLS z indywidualnymi użytkownikami z klastrów Azure Databricks. Włącz rejestrowanie diagnostyczne na koncie magazynu, aby rozpocząć odbieranie tych dzienników, wykonując następujące czynności: skonfiguruj przy użyciu programu PowerShell za pomocą polecenia Set-AzStorageServiceLoggingProperty. Określ wersję 2.0, ponieważ format wpisu dziennika 2.0 zawiera główną nazwę użytkownika w żądaniu.

Włącz przekazywanie poświadczeń usługi Azure Data Lake Storage dla klastra o wysokiej współbieżności

Klastry o wysokiej współbieżności mogą być współużytkowane przez wielu użytkowników. Obsługiwane są tylko Python i SQL z przekazywaniem poświadczeń w usłudze Azure Data Lake Storage.

Ważne

Włączenie przekazywania poświadczeń usługi Azure Data Lake Storage dla klastra o wysokiej współbieżności blokuje wszystkie porty w klastrze z wyjątkiem portów 44, 53 i 80.

  1. Podczas tworzenia klastra ustaw Tryb klastra na Wysoka Współbieżność.
  2. W obszarze Opcje zaawansowane wybierz pozycję Włącz przekazywanie poświadczeń dla dostępu do danych na poziomie użytkownika i zezwalaj tylko na polecenia języka Python i SQL.

Włącz przekazywanie poświadczeń dla klastrów o wysokiej współbieżności

Włącz przekazywanie poświadczeń Azure Data Lake Storage dla klastra Standard

Klastry standardowe z przekazywaniem poświadczeń są dostępne tylko dla jednego użytkownika. Standardowe klastry obsługują Python, SQL, Scala i R. W środowisku Databricks Runtime 10.4 LTS i nowszym obsługiwany jest sparklyr.

Musisz przypisać użytkownika podczas tworzenia klastra, ale klaster może być edytowany przez użytkownika z uprawnieniami CAN MANAGE w dowolnym momencie, aby zastąpić oryginalnego użytkownika.

Ważne

Użytkownik przypisany do klastra musi mieć co najmniej uprawnienie CAN ATTACH TO dla klastra, aby można było uruchamiać polecenia w klastrze. Administratorzy obszaru roboczego i twórca klastra mogą zarządzać uprawnieniami, ale nie mogą uruchamiać poleceń w klastrze, chyba że są wyznaczonym użytkownikiem klastra.

  1. Podczas tworzenia klastra ustaw tryb klastra na Standardowa.
  2. W sekcji Opcje zaawansowane wybierz Włącz przekazywanie poświadczeń dla dostępu do danych na poziomie użytkownika i wybierz nazwę użytkownika z listy rozwijanej Dostęp do pojedynczego użytkownika.

Włącz przekazywanie poświadczeń dla klastrów Standard

Tworzenie kontenera

Kontenery umożliwiają organizowanie obiektów na koncie usługi Azure Storage.

Uzyskiwanie dostępu do usługi Azure Data Lake Storage bezpośrednio przy użyciu przekazywania poświadczeń

Po skonfigurowaniu przekazywania poświadczeń usługi Azure Data Lake Storage i utworzeniu kontenerów magazynu można uzyskać dostęp do danych bezpośrednio w usłudze Azure Data Lake Storage przy użyciu ścieżki abfss://.

Azure Data Lake Storage (magazyn danych Azure Data Lake)

Python

spark.read.format("csv").load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/MyData.csv").collect()

R

# SparkR
library(SparkR)
sparkR.session()
collect(read.df("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/MyData.csv", source = "csv"))

# sparklyr
library(sparklyr)
sc <- spark_connect(method = "databricks")
sc %>% spark_read_csv("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/MyData.csv") %>% sdf_collect()
  • Zastąp <container-name> nazwą kontenera w koncie ADLS Storage.
  • Zastąp <storage-account-name> nazwą konta magazynu usługi ADLS.

Montowanie usługi Azure Data Lake Storage w systemie plików DBFS przy użyciu przekazywania poświadczeń

Możesz zainstalować konto usługi Azure Data Lake Storage lub folder wewnątrz niego w obszarze Co to jest system DBFS?. Instalacja wskazuje magazyn data lake, więc dane nigdy nie są synchronizowane lokalnie.

Podczas montowania danych przy użyciu klastra z włączonym przekazywaniem poświadczeń usługi Azure Data Lake Storage, wszystkie akcje odczytu lub zapisu w punkcie montowania używają poświadczeń Microsoft Entra ID. Ten punkt instalacji będzie widoczny dla innych użytkowników, ale jedynymi użytkownikami, którzy będą mieli dostęp do odczytu i zapisu, są ci, którzy:

  • Mieć dostęp do podstawowego konta usługi Azure Data Lake Storage
  • Czy używasz klastra z funkcją przekazywania poświadczeń dla usługi Azure Data Lake Storage?

Azure Data Lake Storage (magazyn danych Azure Data Lake)

Aby zainstalować system plików usługi Azure Data Lake Storage lub folder w nim, użyj następujących poleceń:

Python

configs = {
  "fs.azure.account.auth.type": "CustomAccessToken",
  "fs.azure.account.custom.token.provider.class": spark.conf.get("spark.databricks.passthrough.adls.gen2.tokenProviderClassName")
}

# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mount_point = "/mnt/<mount-name>",
  extra_configs = configs)

Skala

val configs = Map(
  "fs.azure.account.auth.type" -> "CustomAccessToken",
  "fs.azure.account.custom.token.provider.class" -> spark.conf.get("spark.databricks.passthrough.adls.gen2.tokenProviderClassName")
)

// Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mountPoint = "/mnt/<mount-name>",
  extraConfigs = configs)
  • Zastąp <container-name> nazwą kontenera w koncie ADLS Storage.
  • Zastąp <storage-account-name> nazwą konta magazynu usługi ADLS.
  • Zastąp <mount-name> nazwą punktu montowania w systemie plików DBFS.

Ostrzeżenie

Nie należy podawać kluczy dostępu do konta magazynu ani poświadczeń jednostki usługi, aby się uwierzytelnić w punkcie montowania. Umożliwiłoby to innym użytkownikom dostęp do systemu plików przy użyciu tych poświadczeń. Celem przekazywania poświadczeń usługi Azure Data Lake Storage jest uniemożliwienie używania tych poświadczeń i zapewnienie, że dostęp do systemu plików jest ograniczony do użytkowników, którzy mają dostęp do bazowego konta usługi Azure Data Lake Storage.

Bezpieczeństwo

Udostępnianie klastrów przekazywania poświadczeń usługi Azure Data Lake Storage innym użytkownikom jest bezpieczne. Będziecie odizolowani od siebie nawzajem i nie będziecie mogli odczytywać ani używać danych uwierzytelniających.

Obsługiwane funkcje

Funkcja Minimalna wersja środowiska uruchomieniowego usługi Databricks Uwagi
Python i SQL 5,5
%run 5,5
DBFS 5,5 Poświadczenia są przekazywane dopiero wtedy, gdy ścieżka DBFS zostanie rozpoznana jako lokalizacja w usłudze Azure Data Lake Storage. W przypadku ścieżek systemu plików DBFS, które odwołują się do innych systemów magazynowania, użyj innej metody określania poświadczeń.
Azure Data Lake Storage 5,5
buforowanie dysku 5,5
API uczenia maszynowego PySpark 5,5 Następujące klasy uczenia maszynowego nie są obsługiwane:
  • org/apache/spark/ml/classification/RandomForestClassifier
  • org/apache/spark/ml/clustering/BisectingKMeans
  • org/apache/spark/ml/clustering/GaussianMixture
  • org/spark/ml/clustering/KMeans
  • org/spark/ml/clustering/LDA
  • org/spark/ml/evaluation/ClusteringEvaluator
  • org/spark/ml/feature/HashingTF
  • org/spark/ml/feature/OneHotEncoder
  • org/spark/ml/feature/StopWordsRemover
  • org/spark/ml/feature/VectorIndexer
  • org/spark/ml/feature/VectorSizeHint
  • org/spark/ml/regression/IsotonicRegression
  • org/spark/ml/regression/RandomForestRegressor
  • org/spark/ml/util/DatasetUtils
Zmienne emisji 5,5 W PySpark istnieje limit rozmiaru funkcji Pythona zdefiniowanych przez użytkownika (UDFs), ponieważ duże UDFs są wysyłane jako zmienne rozgłoszeniowe.
Biblioteki dla notebooka 5,5
Skala 5,5
SparkR 6.0
sparklyr 10.1
Zarządzanie notatnikami i modularyzacja kodu w notatnikach 6.1
API uczenia maszynowego PySpark 6.1 Obsługiwane są wszystkie klasy uczenia maszynowego PySpark.
Metryki klastra 6.1
Databricks Connect 7.3 Przekazywanie jest obsługiwane w klastrach Standard.

Ograniczenia

Następujące funkcje nie są obsługiwane podczas przekazywania poświadczeń do usługi Azure Data Lake Storage:

  • %fs (zamiast tego użyj równoważnego polecenia dbutils.fs ).
  • Zadania usługi Databricks.
  • Dokumentacja referencyjna API REST Databricks.
  • Wykaz aparatu Unity.
  • Kontrola dostępu do tabeli. Uprawnienia nadane przez mechanizm przekazywania poświadczeń w Azure Data Lake Storage mogą być użyte do pomijania szczegółowych uprawnień ACL tabeli, podczas gdy dodatkowe ograniczenia ACL tabeli ograniczają niektóre korzyści wynikające z przekazywania poświadczeń. W szczególności
    • Jeśli masz uprawnienie Microsoft Entra ID do uzyskiwania dostępu do plików danych, które znajdują się pod określoną tabelą, będziesz mieć pełne uprawnienia do tej tabeli za pośrednictwem interfejsu API RDD, niezależnie od ograniczeń nakładanych na nie za pośrednictwem list ACL tabeli.
    • Będziesz ograniczony przez uprawnienia ACL tabeli tylko podczas korzystania z API dla DataFrame. Jeśli spróbujesz odczytać pliki bezpośrednio za pomocą interfejsu API ramki danych, zostaną wyświetlone ostrzeżenia dotyczące braku uprawnień SELECT do żadnego pliku, nawet jeśli te pliki można odczytać bezpośrednio za pośrednictwem interfejsu API RDD.
    • Nie będzie można odczytać z tabel obsługiwanych przez systemy plików inne niż Azure Data Lake Storage, nawet jeśli masz uprawnienia ACL do odczytywania tabel.
  • Następujące metody w obiektach SparkContext (sc) i SparkSession (spark):
    • Przestarzałe metody.
    • Metody takie jak addFile() i addJar() umożliwiają użytkownikom niebędącym administratorami wywoływanie kodu Scala.
    • Każda metoda dostępu do systemu plików innego niż Azure Data Lake Storage (aby uzyskać dostęp do innych systemów plików w klastrze z włączonym przekazywaniem poświadczeń dla Azure Data Lake Storage, należy użyć innej metody określania poświadczeń i zapoznać się z sekcją dotyczącą zaufanych systemów plików w rozdziale Rozwiązywanie problemów).
    • Stare interfejsy API Hadoop (hadoopFile() i hadoopRDD()).
    • Interfejsy API przesyłania strumieniowego, ponieważ przekazywane poświadczenia wygasają, gdy strumień jest nadal uruchomiony.
  • Montaże DBFS (/dbfs) są dostępne tylko w Databricks Runtime 7.3 LTS i nowszych. Punkty montowania ze skonfigurowanym przekazywaniem poświadczeń nie są obsługiwane przez tę ścieżkę.
  • Azure Data Factory.
  • MLflow w klastrach o wysokiej współbieżności.
  • pakiet azureml-sdk języka Python w klastrach o wysokiej współbieżności.
  • Nie można przedłużyć okresu ważności tokenów przekazywania Microsoft Entra ID za pomocą zasad okresu ważności tokenów Microsoft Entra ID. W związku z tym, jeśli wyślesz polecenie do klastra, które wykonuje się dłużej niż godzinę, zakończy się niepowodzeniem, jeśli do zasobu w usłudze Azure Data Lake Storage zostanie uzyskany dostęp po upływie 1 godziny.
  • W przypadku korzystania z programu Hive 2.3 lub nowszego nie można dodać partycji w klastrze z włączonym przekazywaniem poświadczeń. Aby uzyskać więcej informacji, zobacz odpowiednią sekcję rozwiązywania problemów.

Rozwiązywanie problemów

py4j.security.Py4JSecurityException: ... nie znajduje się na liście białej

Ten wyjątek jest generowany w przypadku prób uzyskania dostępu do metody, której usługa Azure Databricks nie oznaczyła jawnie jako bezpiecznej dla klastrów z przekazywaniem poświadczeń usługi Azure Data Lake Storage. W większości przypadków oznacza to, że metoda może umożliwić użytkownikowi na klastrze z przepustem poświadczeń Azure Data Lake Storage dostęp do poświadczeń innego użytkownika.

org.apache.spark.api.python.PythonSecurityException: Ścieżka ... używa niezaufanego systemu plików

Ten wyjątek jest zgłaszany po próbie uzyskania dostępu do systemu plików, który nie jest uznawany za bezpieczny przez klaster z przekazywaniem poświadczeń usługi Azure Data Lake Storage. Użycie niezaufanego systemu plików może umożliwić użytkownikowi w klastrze przekazywania poświadczeń usługi Azure Data Lake Storage dostęp do poświadczeń innego użytkownika, dlatego nie zezwalamy na bezpieczne używanie wszystkich systemów plików.

Aby skonfigurować zestaw zaufanych systemów plików w klastrze z przekazywaniem poświadczeń usługi Azure Data Lake Storage, ustaw klucz konfiguracji platformy Spark spark.databricks.pyspark.trustedFilesystems w tym klastrze na listę rozdzielanych przecinkami nazw klas, które są zaufanymi implementacjami elementu org.apache.hadoop.fs.FileSystem.

Dodawanie partycji kończy się niepowodzeniem z powodu włączonego przekazywania poświadczeń AzureCredentialNotFoundException

W przypadku korzystania z programu Hive 2.3-3.1 próba dodania partycji w klastrze z włączonym przekazywaniem poświadczeń spowoduje wystąpienie następującego wyjątku:

org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:com.databricks.backend.daemon.data.client.adl.AzureCredentialNotFoundException: Could not find ADLS Token

Aby obejść ten problem, dodaj partycje w klastrze, gdzie przekazywanie poświadczeń nie jest włączone.