Mengakses Azure Data Lake Storage menggunakan passthrough kredensial MICROSOFT Entra ID (warisan)
Penting
Dokumentasi ini telah dihentikan dan mungkin tidak diperbarui.
Passthrough kredensial tidak digunakan lagi dimulai dengan Databricks Runtime 15.0 dan akan dihapus dalam versi Runtime Databricks di masa mendatang. Databricks merekomendasikan agar Anda meningkatkan ke Unity Catalog. Unity Catalog menyederhanakan keamanan dan tata kelola data Anda dengan menyediakan tempat terpusat untuk mengelola dan mengaudit akses data di beberapa ruang kerja di akun Anda. Lihat Apakah itu Katalog Unity?.
Untuk postur keamanan dan tata kelola yang ditingkatkan, hubungi tim akun Azure Databricks Anda untuk menonaktifkan passthrough kredensial di akun Azure Databricks Anda.
Catatan
Artikel ini berisi referensi mengenai istilah daftar yang diperbolehkan, istilah yang tidak lagi digunakan oleh Azure Databricks. Ketika istilah ini dihapus dari perangkat lunak, kami akan menghapusnya dari artikel ini.
Anda dapat mengautentikasi secara otomatis untuk Mengakses Azure Data Lake Storage Gen1 dari Azure Databricks (ADLS Gen1) dan ADLS Gen2 dari kluster Azure Databricks menggunakan identitas ID Microsoft Entra yang sama dengan yang Anda gunakan untuk masuk ke Azure Databricks. Saat Anda mengaktifkan Azure Data Lake Storage passthrough info masuk untuk kluster Anda, perintah yang Anda jalankan pada kluster tersebut dapat membaca dan menulis data di Azure Data Lake Storage tanpa mengharuskan Anda mengonfigurasi info masuk perwakilan layanan untuk akses ke penyimpanan.
Azure Data Lake Storage passthrough info masuk didukung dengan Azure Data Lake Storage Gen1 dan Gen2 saja. Penyimpanan Azure Blob tidak mendukung passthrough info masuk.
Artikel ini membahas:
- Mengaktifkan passthrough info masuk untuk kluster standar dan konkurensi tinggi.
- Mengonfigurasi passthrough info masuk dan menginsialisasi sumber daya penyimpanan di akun ADLS.
- Mengakses sumber daya ADLS secara langsung saat passthrough info masuk diaktifkan.
- Mengakses sumber daya ADLS melalui titik pemasangan saat passthrough info masuk diaktifkan.
- Fitur dan batasan yang didukung saat menggunakan passthrough info masuk.
Buku catatan disertakan untuk memberikan contoh penggunaan passthrough info masuk dengan akun penyimpanan ADLS Gen1 dan ADLS Gen2.
Persyaratan
- Paket premium. Lihat Meningkatkan atau Menurunkan Versi Ruang Kerja Azure Databricks untuk detail tentang peningkatan paket standar ke paket premium.
- Akun penyimpanan Azure Data Lake Storage Gen1 atau Gen2. Akun penyimpanan Azure Data Lake Storage Gen2 harus menggunakan namespace layanan hierarkis untuk bekerja dengan passthrough info masuk Azure Data Lake Storage. Lihat Membuat akun penyimpanan untuk petunjuk membuat akun ADLS Gen2 baru, termasuk cara mengaktifkan namespace layanan hierarkis.
- Izin pengguna yang dikonfigurasi dengan benar ke Azure Data Lake Storage. Administrator Azure Databricks perlu memastikan bahwa pengguna memiliki peran yang benar, misalnya, Storage Kontributor Data Blob, untuk membaca dan menulis data yang disimpan di Azure Data Lake Storage. Lihat Gunakan portal Microsoft Azure untuk menentukan peran Azure untuk mengakses blob dan mengantrekan data.
- Pahami hak istimewa admin ruang kerja di ruang kerja yang diaktifkan untuk passthrough, dan tinjau penetapan admin ruang kerja yang ada. Admin ruang kerja dapat mengelola operasi untuk ruang kerja mereka termasuk menambahkan pengguna dan perwakilan layanan, membuat kluster, dan mendelegasikan pengguna lain untuk menjadi admin ruang kerja. Tugas manajemen ruang kerja, seperti mengelola kepemilikan pekerjaan dan menampilkan notebook, dapat memberikan akses tidak langsung ke data yang terdaftar di Azure Data Lake Storage. Admin ruang kerja adalah peran istimewa yang harus Anda distribusikan dengan hati-hati.
- Anda tidak dapat menggunakan kluster yang dikonfigurasi dengan info masuk ADLS, misalnya, info masuk perwakilan layanan, dengan penelusuran info masuk.
Penting
Anda tidak dapat mengautentikasi ke Azure Data Lake Storage dengan kredensial ID Microsoft Entra Jika Anda berada di belakang firewall yang belum dikonfigurasi untuk mengizinkan lalu lintas ke ID Microsoft Entra. Azure Firewall akan memblokir akses Direktori Aktif secara default. Untuk mengizinkan akses, silakan konfigurasikan tag layanan AzureActiveDirectory. Anda dapat menemukan informasi yang setara untuk peralatan virtual jaringan di bawah tag AzureActiveDirectory di file Azure IP Ranges dan Service Tags JSON. Untuk informasi selengkapnya, lihat tag layanan Azure Firewall.
Rekomendasi pengelogan
Anda dapat mencatat identitas yang diteruskan ke penyimpanan ADLS di log diagnostik penyimpanan Azure. Identitas pencatatan memungkinkan permintaan ADLS dikaitkan dengan pengguna individual dari kluster Azure Databricks. Aktifkan pencatatan diagnostik di akun penyimpanan Anda untuk mulai menerima log ini:
- Azure Data Lake Storage Gen1: Ikuti petunjuk di Mengaktifkan pengelogan diagnostik untuk akun Data Lake Storage Gen1 Anda.
- Azure Data Lake Storage Gen2: Konfigurasikan menggunakan PowerShell dengan perintah
Set-AzStorageServiceLoggingProperty
. Tentukan 2.0 sebagai versi, karena format entri log 2.0 menyertakan nama utama pengguna dalam permintaan.
Mengaktifkan passthrough info masuk Azure Data Lake Storage untuk kluster Konkurensi Tinggi
Kluster konkurensi tinggi dapat dibagikan oleh banyak pengguna. Mereka hanya mendukung Python dan SQL dengan passthrough info masuk Azure Data Lake Storage.
Penting
Mengaktifkan passthrough info masuk Azure Data Lake Storage untuk kluster Konkurensi Tinggi memblokir semua port pada kluster kecuali untuk port 44, 53, dan 80.
- Saat Anda membuat sebuah kluster, atur Mode Kluster ke Konkurensi Tinggi.
- Pada Opsi Lanjutan, pilih Aktifkan passthrough info masuk untuk akses data tingkat pengguna dan hanya mengizinkan perintah Python dan SQL.
Mengaktifkan passthrough info masuk Azure Data Lake Storage untuk kluster Standar.
Kluster standar dengan passthrough info masuk terbatas pada satu pengguna. Kluster standar mendukung Python, SQL, Scala, dan R. Pada Databricks Runtime 10.4 LTS ke atas, sparklyr didukung.
Anda harus menetapkan pengguna pada pembuatan kluster, tetapi kluster dapat diedit oleh pengguna dengan izin CAN MANAGE kapan saja untuk menggantikan pengguna asli.
Penting
Pengguna yang ditetapkan ke kluster harus memiliki setidaknya izin DAPAT MELAMPIRKAN KE untuk kluster untuk menjalankan perintah pada kluster. Admin ruang kerja dan pembuat kluster memiliki izin CAN MANAGE, tetapi tidak dapat menjalankan perintah pada kluster kecuali mereka adalah pengguna kluster yang ditunjuk.
- Saat Anda membuat kluster, atur Mode Kluster ke Standar.
- Pada Opsi Lanjutan, pilih Aktifkan passthrough info masuk untuk akses data tingkat pengguna dan pilih nama pengguna dari drop-down Akses Pengguna Tunggal.
Membuat kontainer
Kontainer menyediakan cara untuk mengatur objek di akun penyimpanan Azure.
Akses Azure Data Lake Storage langsung menggunakan passthrough info masuk
Setelah mengonfigurasi Azure Data Lake Storage passthrough info masuk dan membuat kontainer penyimpanan, Anda dapat mengakses data langsung di Azure Data Lake Storage Gen1 menggunakan jalur adl://
dan Azure Data Lake Storage Gen2 menggunakan jalur abfss://
.
Azure Data Lake Storage Gen1
Python
spark.read.format("csv").load("adl://<storage-account-name>.azuredatalakestore.net/MyData.csv").collect()
R
# SparkR
library(SparkR)
sparkR.session()
collect(read.df("adl://<storage-account-name>.azuredatalakestore.net/MyData.csv", source = "csv"))
# sparklyr
library(sparklyr)
sc <- spark_connect(method = "databricks")
sc %>% spark_read_csv("adl://<storage-account-name>.azuredatalakestore.net/MyData.csv") %>% sdf_collect()
- Ganti
<storage-account-name>
dengan nama akun penyimpanan ADLS Gen1.
Azure Data Lake Storage Gen2
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()
- Ganti
<container-name>
dengan nama kontainer di akun penyimpanan ADLS Gen2. - Ganti
<storage-account-name>
dengan nama akun penyimpanan ADLS Gen2.
Pasang Azure Data Lake Storage ke DBFS menggunakan passthrough info masuk
Anda dapat memasang akun Azure Data Lake Storage atau folder di dalamnya ke Apa itu DBFS?. Pemasangan adalah penunjuk ke penyimpanan data lake, sehingga data tidak pernah disinkronkan secara lokal.
Saat Anda memasang data menggunakan kluster yang diaktifkan dengan passthrough kredensial Azure Data Lake Storage, setiap baca atau tulis ke titik pemasangan menggunakan kredensial ID Microsoft Entra Anda. Titik pemasangan ini akan terlihat oleh pengguna lain, namun satu-satunya pengguna yang akan memiliki akses baca dan tulis adalah mereka yang:
- Memiliki akses ke akun penyimpanan Storage Azure Data Lake Storage yang mendasarinya
- Menggunakan kluster yang diaktifkan untuk passthrough info masuk Azure Data Lake Storage
Azure Data Lake Storage Gen1
Untuk memasang sumber daya Azure Data Lake Storage Gen1 atau folder di dalamnya, gunakan perintah berikut:
Python
configs = {
"fs.adl.oauth2.access.token.provider.type": "CustomAccessTokenProvider",
"fs.adl.oauth2.access.token.custom.provider": spark.conf.get("spark.databricks.passthrough.adls.tokenProviderClassName")
}
# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
source = "adl://<storage-account-name>.azuredatalakestore.net/<directory-name>",
mount_point = "/mnt/<mount-name>",
extra_configs = configs)
Scala
val configs = Map(
"fs.adl.oauth2.access.token.provider.type" -> "CustomAccessTokenProvider",
"fs.adl.oauth2.access.token.custom.provider" -> spark.conf.get("spark.databricks.passthrough.adls.tokenProviderClassName")
)
// Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
source = "adl://<storage-account-name>.azuredatalakestore.net/<directory-name>",
mountPoint = "/mnt/<mount-name>",
extraConfigs = configs)
- Ganti
<storage-account-name>
dengan nama akun penyimpanan ADLS Gen2. - Ganti
<mount-name>
dengan nama titik pemasangan yang dimaksudkan di DBFS.
Azure Data Lake Storage Gen2
Untuk memasang sistem file Azure Data Lake Storage Gen2 atau folder di dalamnya, gunakan perintah berikut:
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)
Scala
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)
- Ganti
<container-name>
dengan nama kontainer di akun penyimpanan ADLS Gen2. - Ganti
<storage-account-name>
dengan nama akun penyimpanan ADLS Gen2. - Ganti
<mount-name>
dengan nama titik pemasangan yang dimaksudkan di DBFS.
Peringatan
Jangan berikan kunci akses akun penyimpanan atau info masuk perwakilan layanan Anda untuk mengautentikasi ke titik pemasangan. Tindakan itu akan memberi pengguna lain akses ke sistem file menggunakan info masuk tersebut. Tujuan dari passthrough info masuk Azure Data Lake Storage adalah untuk mencegah Anda harus menggunakan info masuk tersebut dan untuk memastikan bahwa akses ke sistem file dibatasi untuk pengguna yang memiliki akses ke akun Azure Data Lake Storage yang mendasarinya.
Keamanan
Ini aman untuk berbagi kluster passthrough info masuk Azure Data Lake Storage dengan pengguna lain. Anda akan terisolasi satu sama lain dan tidak akan dapat membaca atau menggunakan info masuk satu sama lain.
Fitur yang didukung
Fitur | Versi Minimum Runtime Bahasa Layanan Databricks | Catatan |
---|---|---|
Python dan SQL | 5.5 | |
Azure Data Lake Storage Gen1 | 5.5 | |
%run |
5.5 | |
DBFS | 5.5 | Info masuk hanya diteruskan jika jalur DBFS diselesaikan ke lokasi di Azure Data Lake Storage Gen1 atau Gen2. Untuk jalur DBFS yang diselesaikan ke sistem penyimpanan lain, gunakan metode lain untuk menentukan info masuk Anda. |
Azure Data Lake Storage Gen2 | 5.5 | |
penembolokan disk | 5.5 | |
PySpark ML API | 5.5 | Kelas ML berikut tidak didukung: - 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 |
Variabel siaran | 5.5 | Dalam PySpark, ada batasan ukuran UDF Python yang dapat Anda buat, karena UDF besar dikirim sebagai variabel siaran. |
Pustaka cakupan buku catatan | 5.5 | |
Scala | 5.5 | |
SparkR | 6.0 | |
sparklyr | 10.1 | |
Menjalankan buku catatan Databricks dari buku catatan lain | 6.1 | |
PySpark ML API | 6.1 | Semua kelas pySpark ML didukung. |
Metrik kluster | 6.1 | |
Sambungkan Databricks | 7.3 | Passthrough didukung pada kluster Standar. |
Batasan
Fitur berikut tidak didukung dengan passthrough info masuk Azure Data Lake Storage:
%fs
(Gunakan perintah dbutils.fs yang setara sebagai gantinya).- Pekerjaan Databricks.
- Referensi REST API Databricks.
- Katalog Unity.
- Kontrol akses tabel. Izin yang diberikan oleh passthrough info masuk Azure Data Lake Storage dapat digunakan untuk melewati izin ACL tabel berbutir halus, sementara pembatasan tambahan ACL tabel akan membatasi beberapa manfaat yang Anda dapatkan dari passthrough info masuk. Khususnya:
- Jika Anda memiliki izin MICROSOFT Entra ID untuk mengakses file data yang mendasar tabel tertentu, Anda akan memiliki izin penuh pada tabel tersebut melalui API RDD, terlepas dari batasan yang ditempatkan pada file tersebut melalui ACL tabel.
- Anda akan dibatasi oleh izin ACL tabel hanya saat menggunakan API DataFrame. Anda akan melihat peringatan tentang tidak memiliki izin
SELECT
pada file apa pun jika Anda mencoba membaca file langsung dengan Api DataFrame, meskipun Anda dapat membaca file-file itu langsung melalui API RDD. - Anda tidak akan dapat membaca dari tabel yang didukung oleh sistem file selain Azure Data Lake Storage, bahkan jika Anda memiliki izin ACL tabel untuk membaca tabel.
- Metode berikut pada objek SparkContext (
sc
) dan SparkSession (spark
):- Metode yang tidak digunakan lagi.
- Metode seperti
addFile()
danaddJar()
yang akan memungkinkan pengguna non-admin untuk memanggil kode Scala. - Metode apa pun yang mengakses sistem file selain Azure Data Lake Storage Gen1 atau Gen2 (untuk mengakses sistem file lain pada kluster dengan passthrough info masuk Azure Data Lake Storage diaktifkan, gunakan metode yang berbeda untuk menentukan info masuk Anda dan lihat bagian pada sistem file tepercaya pada Pemecahan Masalah).
- API Hadoop lama (
hadoopFile()
danhadoopRDD()
). - API streaming, karena info masuk pass-through akan kedaluwarsa saat stream masih berjalan.
- Pemasangan DBFS (
/dbfs
) hanya tersedia di Databricks Runtime 7.3 LTS ke atas. Titik pemasangan dengan passthrough kredensial yang dikonfigurasi tidak didukung melalui jalur ini. - Azure Data Factory.
- MLflow pada cluster konkurensi tinggi.
- azureml-sdk Paket Python pada kluster konkurensi tinggi.
- Anda tidak dapat memperpanjang masa pakai token passthrough ID Microsoft Entra menggunakan kebijakan masa pakai token ID Microsoft Entra. Akibatnya, jika Anda mengirim perintah ke kluster yang memakan waktu lebih dari satu jam, itu akan gagal jika sumber daya Azure Data Lake Storage diakses setelah tanda 1 jam.
- Saat menggunakan Apache Hive 2.3 ke atas, Anda tidak dapat menambahkan partisi pada kluster dengan passthrough info masuk diaktifkan. Untuk informasi selengkapnya, lihat bagian pemecahan masalah yang relevan.
Contoh buku catatan
Buku catatan berikut menunjukkan passthrough info masuk Azure Data Lake Storage untuk Azure Data Lake Storage Gen1 dan Gen2.
Buku catatan passthrough Azure Data Lake Storage Gen1
Buku catatan passthrough Azure Data Lake Storage Gen2
Pemecahan masalah
py4j.security.Py4JSecurityException: … tidak masuk daftar putih
Pengecualian ini dimunculkan ketika Anda telah mengakses metode yang secara langsung belum ditandai oleh Azure Databricks sebagai aman untuk kluster passthrough kredensial Azure Data Lake Storage. Dalam kebanyakan kasus, ini berarti bahwa metode ini dapat memungkinkan pengguna pada kluster passthrough kredensial Azure Data Lake Storage untuk mengakses kredensial pengguna lain.
org.apache.spark.api.python.PythonSecurityException: Path … menggunakan sistem file yang tidak tepercaya
Pengecualian ini dilemparkan ketika Anda telah mencoba mengakses sistem file yang tidak diketahui oleh kluster passthrough info masuk Azure Data Lake Storage agar aman. Menggunakan sistem file yang tidak tepercaya memungkinkan pengguna di kluster passthrough info masuk Azure Data Lake Storage untuk mengakses info masuk pengguna lain, jadi kami melarang semua sistem file yang kami tidak yakin digunakan dengan aman.
Untuk mengonfigurasi kumpulan sistem file tepercaya pada kluster passthrough info masuk Storage Azure Data Lake, atur kunci spark.databricks.pyspark.trustedFilesystems
Spark conf pada kluster tersebut menjadi daftar nama kelas yang dipisahkan koma yang merupakan implementasi org.apache.hadoop.fs.FileSystem
tepercaya.
Menambahkan partisi gagal dengan AzureCredentialNotFoundException
saat passthrough info masuk diaktifkan
Saat menggunakan Apache Hive 2.3-3.1, jika Anda mencoba menambahkan partisi pada kluster dengan passthrough info masuk diaktifkan, pengecualian berikut terjadi:
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 Gen2 Token
Untuk mengatasi masalah ini, tambahkan partisi pada kluster tanpa passthrough info masuk diaktifkan.