다음을 통해 공유


Microsoft Entra ID 자격 증명 통과를 사용하여 Azure Data Lake Storage에 액세스(레거시)

중요한

이 설명서는 사용 중지되었으며 업데이트되지 않을 수 있습니다.

자격 증명 통과는 Databricks Runtime 15.0부터 사용되지 않으며 이후 Databricks Runtime 버전에서 제거됩니다. Databricks는 Unity 카탈로그로 업그레이드하는 것을 권장합니다. Unity 카탈로그는 계정의 여러 작업 영역에서 데이터 액세스를 관리 및 감사할 수 있는 중앙 위치를 제공하여 데이터 보안 및 거버넌스를 단순화합니다. Unity 카탈로그란?을 참조하세요.

보안 및 거버넌스 태세를 강화하려면 Azure Databricks 계정 팀에 문의하여 Azure Databricks 계정에서 자격 증명 통과를 사용하지 않도록 설정합니다.

참고

이 문서에는 Azure Databricks에서 사용하지 않는 용어인 허용 목록에 대한 참조가 포함되어 있습니다. 소프트웨어에서 용어가 제거되면 이 문서에서 해당 용어가 제거됩니다.

Microsoft Entra ID로 Azure Databricks에 로그인할 때 사용하는 동일한 ID를 사용하여 Azure Databricks 클러스터의 ADLS에 자동으로 인증할 수 있습니다. 클러스터를 Azure Data Lake Storage 자격 증명 통과에 사용하도록 설정하면 스토리지에 액세스하기 위해 서비스 주체 자격 증명을 구성하지 않고도 해당 클러스터에서 실행하는 명령을 통해 Azure Data Lake Storage에서 데이터를 읽고 쓸 수 있습니다.

Azure Data Lake Storage 자격 증명 통과는 Azure Data Lake Storage에서만 지원됩니다. Azure Blob Storage는 자격 증명 통과를 지원하지 않습니다.

이 문서에서 다루는 내용:

  • 표준 및 높은 동시성 클러스터에 대해 자격 증명 전달을 사용하도록 설정합니다.
  • ADLS 계정에서 자격 증명 통과 구성 및 스토리지 리소스를 초기화합니다.
  • 자격 증명 통과를 사용하는 경우 ADLS 리소스에 직접 액세스합니다.
  • 자격 증명 전달을 사용하는 경우 탑재 지점을 통해 ADLS 리소스에 액세스합니다.
  • 자격 증명 통과를 사용할 때 지원되는 기능 및 제한 사항입니다.

요구 사항

  • 프리미엄 플랜. 표준 계획을 프리미엄 플랜으로 업그레이드하는 방법에 대한 자세한 내용은 Azure Databricks 작업 영역 업그레이드 또는 다운그레이드 를 참조하세요.
  • Azure Data Lake Storage 스토리지 계정. Azure Data Lake Storage 스토리지 계정은 Azure Data Lake Storage 자격 증명 전달을 위해 계층 구조 네임스페이스를 사용해야 합니다. 계층 구조 네임스페이스를 사용하도록 설정하는 방법을 포함하여 새 ADLS 계정을 만드는 방법에 대한 지침은 스토리지 계정 만들기를 참조하세요.
  • Azure Data Lake Storage에 대한 사용자 권한을 올바르게 구성했습니다. Azure Databricks 관리자는 사용자에게 Azure Data Lake Storage에 저장된 데이터를 읽고 쓸 수 있는 올바른 역할(예: Storage Blob Data Contributor)이 있는지 확인해야 합니다. Azure Portal을 사용하여 Blob 및 큐 데이터에 액세스하기 위한 Azure 역할 할당을 참조하세요.
  • 통과에 사용하도록 설정된 작업 영역에 대한 작업 영역 관리자의 권한을 이해하고 기존 작업 영역 관리자 할당을 검토합니다. 작업 영역 관리자는 사용자 및 서비스 주체 추가, 클러스터 만들기, 다른 사용자를 작업 영역 관리자로 위임하기 등 작업 영역에 대한 작업을 관리할 수 있습니다. 작업 소유권 관리 및 Notebook 보기와 같은 작업 영역 관리 작업은 Azure Data Lake Storage에 등록된 데이터에 간접적으로 액세스할 수 있습니다. 작업 영역 관리자는 신중하게 배포해야 하는 권한 있는 역할입니다.
  • ADLS 자격 증명(예: 서비스 주체 자격 증명)으로 구성된 클러스터를 자격 증명 통과와 함께 사용할 수 없습니다.

중요한

Microsoft Entra ID에 대한 트래픽을 허용하도록 구성되지 않은 방화벽 뒤에 있는 경우 Microsoft Entra ID 자격 증명을 사용하여 Azure Data Lake Storage에 인증할 수 없습니다. Azure Firewall은 기본적으로 Active Directory 액세스를 차단합니다. 액세스를 허용하려면 AzureActiveDirectory 서비스 태그를 구성합니다. Azure IP 범위 및 서비스 태그 JSON 파일의 AzureActiveDirectory 태그 아래에서 네트워크 가상 어플라이언스에 대한 동등한 정보를 찾을 수 있습니다. 자세한 내용은 Azure Firewall 서비스 태그를 참조하세요.

로깅 권장 사항

Azure 스토리지 진단 로그에서 ADLS 스토리지로 전달된 ID를 기록할 수 있습니다. 로깅 ID를 사용하면 ADLS 요청을 Azure Databricks 클러스터의 개별 사용자에 연결할 수 있습니다. 스토리지 계정에서 진단 로깅을 켜서 다음을 수행하여 이러한 로그 수신을 시작합니다. Set-AzStorageServiceLoggingProperty 명령으로 PowerShell을 사용하여 구성합니다. 로그 항목 형식 2.0에는 요청에 사용자 계정 이름이 포함되어 있으므로 버전으로 2.0을 지정합니다.

높은 동시성 클러스터에 대해 Azure Data Lake Storage 자격 증명 전달 설정 활성화

동시성이 높은 클러스터는 여러 사용자가 공유할 수 있습니다. Azure Data Lake Storage 자격 증명 통과를 사용하여 Python과 SQL만 지원합니다.

중요한

Azure Data Lake Storage 높은 동시성 클러스터에 대한 자격 증명 통과를 사용하도록 설정하면 포트 44, 53, 80을 제외한 클러스터의 모든 포트가 차단됩니다.

  1. 클러스터를 만들 때클러스터 모드높은 동시성으로 설정합니다.
  2. 고급 옵션에서 사용자 수준 데이터 액세스를 위한 자격 증명 통과를 사용하도록 설정 및 Python 및 SQL 명령만 허용을 선택합니다.

높은 동시성 클러스터에 대한 자격 증명 통과 활성화

표준 클러스터에 대한 Azure Data Lake Storage 자격 증명 통과 사용 설정

자격 증명 통과가 있는 표준 클러스터는 단일 사용자로 제한됩니다. 표준 클러스터는 Python, SQL, Scala, R을 지원합니다. Databricks Runtime 10.4 LTS 이상에서는 sparklyr을 지원합니다.

클러스터를 만들 때 사용자를 할당해야 하지만, 관리 가능 권한이 있는 사용자가 언제든지 클러스터를 수정하여 원래 사용자를 바꿀 수 있습니다.

중요한

클러스터에 할당된 사용자는 클러스터에서 명령을 실행하기 위해 클러스터에 대한 최소한 연결 가능 권한이 있어야 합니다. 작업 영역 관리자와 클러스터 생성자는 관리 가능 권한이 있지만 지정된 클러스터 사용자가 아니면 클러스터에서 명령을 실행할 수 없습니다.

  1. 클러스터를 만들 때클러스터 모드표준으로 설정합니다.
  2. 고급 옵션에서 사용자 수준 데이터 액세스에 대한 자격 증명 통과 사용을 선택하고 단일 사용자 액세스 드롭다운에서 사용자 이름을 선택합니다.

표준 클러스터에 대한 자격 증명 통과 활성화

컨테이너 만들기

컨테이너는 Azure Storage 계정에서 개체를 구성하는 방법을 제공합니다.

자격 증명 전달을 사용하여 Azure Data Lake Storage에 직접 액세스하기

Azure Data Lake Storage 자격 증명 통과를 구성하고 스토리지 컨테이너를 만든 후에는 abfss:// 경로를 사용하여 데이터 및 Azure Data Lake Storage에 직접 액세스할 수 있습니다.

Azure 데이터 레이크 스토리지

파이썬

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()
  • <container-name> ADLS 스토리지 계정의 컨테이너 이름으로 바꿉니다.
  • <storage-account-name> ADLS 스토리지 계정 이름으로 바꿉니다.

자격 증명 전달 방식을 사용하여 Azure Data Lake Storage를 DBFS에 마운트하기

Azure Data Lake Storage 계정 또는 그 안에 있는 폴더를 DBFS란?에 탑재할 수 있습니다. 탑재는 데이터 레이크 저장소에 대한 포인터이므로 데이터가 로컬로 동기화되지 않습니다.

Azure Data Lake Storage 자격 증명 통과에서 사용하도록 설정된 클러스터를 사용하여 데이터를 탑재하는 경우 탑재 지점에 대한 모든 읽기 또는 쓰기는 Microsoft Entra ID 자격 증명을 사용합니다. 이 탑재 지점은 다른 사용자에게 표시되지만 다음과 같은 사용자에게만 읽기 및 쓰기 액세스 권한이 있습니다.

  • 기본 Azure Data Lake Storage 스토리지 계정에 대한 액세스 권한이 있습니다.
  • Azure Data Lake Storage 자격 증명 통과에 사용하도록 설정된 클러스터를 사용합니다.

Azure 데이터 레이크 스토리지

Azure Data Lake Storage 파일 시스템 또는 그 안에 폴더를 탑재하려면 다음 명령을 사용합니다.

파이썬

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)

스칼라

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)
  • <container-name> ADLS 스토리지 계정의 컨테이너 이름으로 바꿉니다.
  • <storage-account-name> ADLS 스토리지 계정 이름으로 바꿉니다.
  • <mount-name>을 DBFS에서 의도한 탑재 지점 이름으로 바꿉니다.

경고

탑재 지점에 인증하기 위해 스토리지 계정 액세스 키 또는 서비스 주체 자격 증명을 제공하지 마세요. 그러면 다른 사용자가 해당 자격 증명을 사용하여 파일 시스템에 액세스할 수 있습니다. Azure Data Lake Storage 자격 증명 통과의 목적은 이러한 자격 증명을 사용하지 못하게 하고 파일 시스템에 대한 액세스가 기본 Azure Data Lake Storage 계정에 대한 액세스 권한이 있는 사용자로 제한되도록 하는 것입니다.

보안

Azure Data Lake Storage 자격 증명 통과 클러스터를 다른 사용자와 공유하는 것이 안전합니다. 서로 격리되며 서로의 자격 증명을 읽거나 사용할 수 없습니다.

지원되는 기능

기능 최소 데이터브릭스 런타임 버전 노트
Python 및 SQL 5.5
%run 5.5
DBFS (데이터베이스 파일 시스템) 5.5 DBFS 경로가 Azure Data Lake Storage의 위치로 확인되는 경우에만 자격 증명이 전달됩니다. 다른 스토리지 시스템으로 확인되는 DBFS 경로의 경우 다른 방법을 사용하여 자격 증명을 지정합니다.
Azure Data Lake Storage 5.5
디스크 캐싱 5.5
PySpark ML API 5.5 다음 ML 클래스는 지원되지 않습니다.
  • 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
브로드캐스트 변수 5.5 PySpark 내에서는 큰 UDF가 브로드캐스트 변수로 전송되므로 구성할 수 있는 Python UDF의 크기에 제한이 있습니다.
Notebook 범위에서 사용되는 라이브러리 5.5
스칼라 5.5
SparkR 6.0
sparklyr (스파클리알) 10.1
노트북을 오케스트레이션하고 코드 모듈화를 구현하기 6.1
PySpark ML API 6.1 모든 PySpark ML 클래스가 지원됩니다.
클러스터 메트릭 6.1
Databricks Connect 7.3 패스스루는 표준 클러스터에서 지원됩니다.

제한 사항

Azure Data Lake Storage 자격 증명 통과에서는 다음 기능이 지원되지 않습니다.

  • %fs(대신 이에 상응하는 dbutils.fs 명령을 사용).
  • Databricks 작업.
  • Databricks REST API 참조.
  • 유니티 카탈로그.
  • 테이블 액세스 제어. Azure Data Lake Storage 자격 증명 통과에서 부여한 권한은 테이블 ACL의 세분화된 권한을 우회하는 데 사용할 수 있지만 테이블 ACL의 추가 제한은 자격 증명 통과에서 얻을 수 있는 몇 가지 이점을 제한합니다. 특히 다음 사항에 주의하십시오.
    • 특정 테이블의 기초가 되는 데이터 파일에 액세스할 수 있는 Microsoft Entra ID 권한이 있는 경우 테이블 ACL을 통한 제한 사항에 관계없이 RDD API를 통해 해당 테이블에 대한 전체 권한을 가지게 됩니다.
    • DataFrame API를 사용하는 경우에만 테이블 ACL 권한이 제한됩니다. RDD API를 통해 직접 파일을 읽을 수 있더라도 DataFrame API로 직접 파일을 읽으려고 하면 파일에 대한 SELECT 권한이 없다는 경고가 표시됩니다.
    • 테이블을 읽을 수 있는 테이블 ACL 권한이 있더라도 Azure Data Lake Storage 이외의 파일 시스템에 의해 지원되는 테이블에서 읽을 수 없습니다.
  • SparkContext(sc) 및 SparkSession(spark) 개체에 대한 메서드는 다음과 같습니다.
    • 사용되지 않는 메서드.
    • 관리자가 아닌 사용자가 Scala 코드를 호출할 수 있도록 하는 addFile()addJar()와 같은 메서드입니다.
    • Azure Data Lake Storage 이외의 파일 시스템에 액세스하는 모든 방법(Azure Data Lake Storage 자격 증명 통과를 사용하도록 설정된 클러스터의 다른 파일 시스템에 액세스하려면 다른 방법을 사용하여 자격 증명을 지정하고 문제 해결아래의 신뢰할 수 있는 파일 시스템에 대한 섹션을 참조하세요).
    • 이전 Hadoop API(hadoopFile()hadoopRDD())입니다.
    • 스트리밍 API를 사용할 때, 스트림이 여전히 실행 중일 때 자격 증명이 만료될 수 있습니다.
  • DBFS 탑재(/dbfs)는 Databricks Runtime 7.3 LTS 이상에서만 사용할 수 있습니다. 자격 증명 통과가 구성된 탑재 지점은 이 경로를 통해 지원되지 않습니다.
  • Azure 데이터 팩터리.
  • 높은 동시성 클러스터에서의 MLflow.
  • 높은 동시성 클러스터의 azureml-sdk Python 패키지.
  • Microsoft Entra ID 토큰 수명 정책을 사용하여 Microsoft Entra ID 통과 토큰의 수명을 연장할 수 없습니다. 따라서 클러스터에 1시간보다 오래 걸리는 명령을 보내면, Azure Data Lake Storage 리소스에 1시간이 지난 후에 액세스할 경우 명령이 실패합니다.
  • Hive 2.3 이상을 사용하는 경우 자격 증명 통과를 사용하도록 설정된 클러스터에 파티션을 추가할 수 없습니다. 자세한 내용은 관련 문제 해결 섹션을 참조하세요.

문제 해결

py4j.security.Py4JSecurityException: ... 허용 목록에 없음

Azure Databricks에서 Azure Data Lake Storage 자격 증명 패스스루 클러스터에 안전하다고 명시적으로 표시하지 않은 메서드에 액세스할 경우 이 예외가 발생합니다. 대부분의 경우 이 메서드는 Azure Data Lake Storage 자격 증명 통과 클러스터의 사용자가 다른 사용자의 자격 증명에 액세스할 수 있도록 허용할 수 있음을 의미합니다.

org.apache.spark.api.python.PythonSecurityException: 경로(Path) … 신뢰할 수 없는 파일 시스템을 사용

이 예외는 Azure Data Lake Storage 자격 증명 통과 클러스터에서 안전하다고 확인되지 않은 파일 시스템에 액세스하려고 할 때 발생합니다. 신뢰할 수 없는 파일 시스템을 사용하면 Azure Data Lake Storage 자격 증명 통과 클러스터의 사용자가 다른 사용자의 자격 증명에 액세스할 수 있으므로 안전하게 사용되고 있다고 확신할 수 없는 모든 파일 시스템을 허용하지 않습니다.

Azure Data Lake Storage 자격 증명 통과 클러스터에서 신뢰할 수 있는 파일 시스템 집합을 구성하려면 해당 클러스터에서 Spark conf 키 spark.databricks.pyspark.trustedFilesystemsorg.apache.hadoop.fs.FileSystem의 신뢰할 수 있는 구현인 클래스 이름의 쉼표로 구분된 목록으로 설정합니다.

자격 증명 통과를 사용하도록 설정한 경우 AzureCredentialNotFoundException과 함께 파티션 추가 실패

Hive 2.3-3.1을 사용하는 경우 자격 증명 통과를 사용하도록 설정된 클러스터에 파티션을 추가하려고 하면 다음 예외가 발생합니다.

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

이 문제를 해결하려면 자격 증명 통과를 사용하지 않고 클러스터에 파티션을 추가합니다.