Unity Catalog에서 Azure 관리 ID를 사용하여 스토리지에 액세스
이 문서에서는 Azure 관리 ID를 사용하여 Unity Catalog 사용자 대신 스토리지 컨테이너에 연결하는 방법을 설명합니다.
Azure 관리 ID란?
Unity Catalog는 Azure 관리 ID를 사용하여 Unity Catalog 사용자 대신 스토리지 컨테이너에 액세스하도록 구성할 수 있습니다. 관리 ID는 애플리케이션이 Microsoft Entra ID 인증을 지원하는 리소스에 연결할 때 사용할 ID를 제공합니다.
Unity Catalog에서 관리 ID를 사용하여 다음 두 가지 기본 사용 사례를 지원할 수 있습니다.
- 메타스토어의 관리되는 스토리지 계정(관리되는 테이블이 저장되는 위치)에 연결하는 ID입니다.
- 파일 기반 액세스 또는 외부 테이블을 통해 기존 데이터 세트에 액세스하기 위해 다른 외부 스토리지 계정에 연결하는 ID입니다.
관리 ID를 사용하여 Unity Catalog를 구성하면 서비스 주체를 사용하여 Unity Catalog를 구성할 때보다 다음과 같은 이점이 있습니다.
관리 ID를 사용하면 자격 증명을 유지 관리하거나 비밀을 회전할 필요가 없습니다.
Azure Databricks 작업 영역이 사용자 고유의 VNet(VNet 삽입이라고도 함)에 배포되고 스토리지 방화벽을 사용하여 Azure Data Lake Storage Gen2 계정을 보호하는 경우 관리 ID를 사용하여 작업 영역을 해당 계정에 연결할 수 있습니다. 관리 ID를 기반으로 Azure Storage에 대한 신뢰할 수 있는 액세스 구성(VNet 삽입 작업 영역에 권장)을 참조 하세요.
참고 항목
표준 Azure Databricks 배포에서는 스토리지 방화벽을 사용할 수 없습니다.
Unity Catalog에 대한 관리 ID 구성
Unity 카탈로그와 함께 사용할 관리 ID를 구성하려면 먼저 Azure에서 Azure Databricks에 대한 액세스 커넥터를 만듭니다. 기본적으로 액세스 커넥터는 시스템 할당 관리 ID를 사용하여 배포됩니다. 대신 사용자가 할당한 관리 ID를 연결하도록 선택할 수 있습니다. 그런 다음, 관리 ID에 Azure Data Lake Storage Gen2 계정에 대한 액세스 권한을 부여하고 Unity 카탈로그 메타스토어 또는 스토리지 자격 증명을 만들 때 액세스 커넥터를 사용합니다.
요구 사항
액세스 커넥터를 만드는 Azure 사용자 또는 서비스 주체는 다음을 수행해야 합니다.
- Azure 리소스 그룹의 기여자 또는 소유자여야 합니다.
스토리지 계정에 관리 ID를 부여하는 Azure 사용자 또는 서비스 주체는 다음을 수행해야 합니다.
- 스토리지 계정에서 사용자 액세스 관리자 Azure RBAC 역할을 가진 소유자 또는 사용자여야 합니다.
1단계: Azure Databricks에 대한 액세스 커넥터 만들기
Azure Databricks용 액세스 커넥터는 관리 ID를 Azure Databricks 계정에 연결할 수 있는 자사 Azure 리소스입니다.
Azure Databricks의 각 액세스 커넥터에는 시스템 할당 관리 ID 하나 또는 사용자가 할당한 관리 ID 하나가 포함될 수 있습니다. 여러 관리 ID를 사용하려는 경우 각각에 대해 별도의 액세스 커넥터를 만듭니다.
시스템 할당 관리 ID 사용
리소스 그룹의 기여자 또는 소유자로 Azure Portal에 로그인합니다.
+ 만들기 또는 새 리소스 만들기를 클릭합니다.
Azure Databricks용 액세스 커넥터를 검색하여 선택합니다.
만들기를 클릭합니다.
기본 탭에서 다음 필드의 값을 수락, 선택 또는 입력합니다.
- 구독: 액세스 커넥터가 만들어질 Azure 구독입니다. 기본값은 현재 사용 중인 Azure 구독입니다. 테넌트에 있는 모든 구독을 선택할 수 있습니다.
- 리소스 그룹: 액세스 커넥터를 만들 Azure 리소스 그룹입니다.
- 이름: 커넥터의 용도를 나타내는 이름을 입력합니다.
- 지역: 연결할 스토리지 계정과 동일한 지역이어야 합니다.
검토 + 만들기를 클릭합니다.
유효성 검사 통과 메시지가 표시되면 만들기를 클릭합니다.
배포에 성공하면 시스템 할당 관리 ID를 사용하여 액세스 커넥터가 배포됩니다.
배포가 완료되면 리소스로 이동을 클릭합니다.
리소스 ID를 기록해 둡니다.
리소스 ID는 다음 형식입니다.
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
사용자 할당 관리 ID 사용
사용자 할당 관리 ID가 아직 없는 경우 새 ID를 만들고 해당 리소스 ID를 기록해 둡니다.
사용자 할당 관리 ID 관리를 참조 하세요.
리소스 그룹의 기여자 또는 소유자로 Azure Portal에 로그인합니다.
리소스 그룹은 연결하려는 스토리지 계정과 동일한 지역에 있어야 합니다.
사용자 지정 템플릿 배포를 검색하여 선택합니다.
사용자 고유의 템플릿 빌드를 선택하고 다음 템플릿을 편집기에 붙여넣습니다.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "connectorName": { "defaultValue": "testConnector", "type": "String", "metadata": { "description": "The name of the Azure Databricks Access Connector to create." } }, "accessConnectorRegion": { "defaultValue": "[resourceGroup().location]", "type": "String", "metadata": { "description": "Location for the access connector resource." } }, "userAssignedManagedIdentiy": { "type": "String", "metadata": { "description": "The resource Id of the user assigned managed identity." } } }, "resources": [ { "type": "Microsoft.Databricks/accessConnectors", "apiVersion": "2023-05-01", "name": "[parameters('connectorName')]", "location": "[parameters('accessConnectorRegion')]", "identity": { "type": "UserAssigned", "userAssignedIdentities": { "[parameters('userAssignedManagedIdentiy')]": {} } } } ] }
기본 탭에서 다음 필드의 값을 수락, 선택 또는 입력합니다.
- 구독: 액세스 커넥터를 만들 Azure 구독입니다. 기본값은 현재 사용 중인 Azure 구독입니다. 테넌트에 있는 모든 구독을 선택할 수 있습니다.
- 리소스 그룹: 연결할 스토리지 계정과 동일한 지역에 있는 리소스 그룹입니다.
- 이름: 커넥터의 용도를 나타내는 이름입니다.
- 지역: 연결할 스토리지 계정과 동일한 지역이어야 합니다. 리소스 그룹이 연결할 스토리지 계정과 동일한 지역에 만들어진 경우 미리 채워진 값 '[resourceGroup().location]'을 선택할 수 있습니다.
- 사용자 할당 관리 ID: 사용하려는 사용자 할당 관리 ID의 리소스 ID입니다.
검토 + 만들기를 클릭합니다.
유효성 검사 통과 메시지가 표시되면 만들기를 클릭합니다.
배포가 완료되면 리소스로 이동을 클릭합니다.
리소스 ID를 기록해 둡니다.
리소스 ID는 다음 형식입니다.
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
2단계: 스토리지 계정에 대한 관리 ID 액세스 권한 부여
이 단계의 권한을 부여하려면 스토리지 계정에 소유자 또는 사용자 액세스 관리자 Azure RBAC 역할이 있어야 합니다.
- Azure Data Lake Storage Gen2 계정에 로그인합니다.
- 액세스 제어(IAM)로 이동하여 +추가를 선택한 다음, 역할 할당 추가를 선택합니다.
- Storage Blob 데이터 기여자 역할을 선택하고 다음을 클릭합니다.
- 다음에 대한 액세스 할당에서 관리 ID를 선택합니다.
- +구성원 선택을 클릭하고 Azure Databricks 또는 사용자 할당 관리 ID에 대한 액세스 커넥터를 선택합니다.
- 커넥터 이름 또는 사용자 할당 ID를 검색하고 선택하고 검토 및 할당을 클릭합니다.
또는 특정 컨테이너에 대한 관리 ID 액세스 권한을 부여하여 스토리지 계정에 대한 액세스를 제한할 수 있습니다. 위의 동일한 단계를 수행하지만 스토리지 계정에 Storage Blob 위임자 역할 및 컨테이너의 Storage Blob 데이터 기여자 역할을 부여합니다.
3단계: 파일 이벤트에 대한 관리 ID 액세스 권한 부여
파일 이벤트에 대한 관리 ID 액세스 권한을 부여하면 Azure Databricks에서 클라우드 공급자가 내보낸 파일 이벤트 알림을 구독할 수 있습니다. 이렇게 하면 파일 처리의 효율성이 높아집니다. 이 단계의 권한을 부여하려면 스토리지 계정에 소유자 또는 사용자 액세스 관리자 Azure RBAC 역할이 있어야 합니다.
- Azure Data Lake Storage Gen2 계정에 로그인합니다.
- 액세스 제어(IAM)로 이동하여 +추가를 선택한 다음, 역할 할당 추가를 선택합니다.
- 스토리지 큐 데이터 기여자 역할을 선택하고 다음을 클릭합니다.
- 다음에 대한 액세스 할당에서 관리 ID를 선택합니다.
- +구성원 선택을 클릭하고 Azure Databricks 또는 사용자 할당 관리 ID에 대한 액세스 커넥터를 선택합니다.
- 커넥터 이름 또는 사용자 할당 ID를 검색하고 선택하고 검토 및 할당을 클릭합니다.
4단계: Azure Databricks 액세스 권한을 부여하여 사용자 대신 파일 이벤트 구성
참고 항목
이 단계는 선택 사항이지만 권장됩니다. 사용자 대신 파일 이벤트를 구성하기 위해 Azure Databricks 액세스 권한을 부여하지 않는 경우 각 위치에 대해 파일 이벤트를 수동으로 구성해야 합니다. 그렇지 않은 경우 Databricks가 나중에 릴리스할 수 있는 중요한 기능에 대한 액세스가 제한됩니다.
이 단계를 통해 Azure Databricks는 파일 이벤트를 자동으로 설정할 수 있습니다. 이 단계의 권한을 부여하려면 관리 ID에 대한 소유자 또는 사용자 액세스 관리자 Azure RBAC 역할과 Azure Data Lake Storage Gen2 계정이 있는 리소스 그룹이 있어야 합니다.
- 3단계의 지침을 따릅니다. 관리 ID에 파일 이벤트에 대한 액세스 권한을 부여하고 스토리지 큐 데이터 기여자 역할과 함께 스토리지 계정 기여자를 관리 ID에 할당합니다.
- Azure Data Lake Storage Gen2 계정이 있는 Azure 리소스 그룹으로 이동합니다.
- 액세스 제어(IAM)로 이동하여 +추가를 선택한 다음, 역할 할당 추가를 선택합니다.
- EventGrid EventSubscription 기여자 역할을 선택하고 다음을 클릭합니다.
- 다음에 대한 액세스 할당에서 관리 ID를 선택합니다.
- +구성원 선택을 클릭하고 Azure Databricks 또는 사용자 할당 관리 ID에 대한 액세스 커넥터를 선택합니다.
- 커넥터 이름 또는 사용자 할당 ID를 검색하고 선택하고 검토 및 할당을 클릭합니다.
관리 ID를 사용하여 Unity 카탈로그 루트 스토리지 계정에 액세스
이 섹션에서는 Unity 카탈로그 메타스토어를 만들 때 관리 ID에 루트 스토리지 계정에 대한 액세스 권한을 부여하는 방법을 설명합니다.
관리 ID를 사용하도록 기존 Unity Catalog 메타스토어를 업그레이드하는 방법을 알아보려면 관리 ID를 사용하여 루트 스토리지에 액세스하도록 기존 Unity Catalog 메타스토어 업그레이드를 참조하세요.
- Azure Databricks 계정 관리자로 Azure Databricks 계정에 로그인합니다.
- 카탈로그를 클릭합니다.
- 메타스토어 만들기를 클릭합니다.
- 다음 필드에 대한 값을 입력합니다.
메타스토어의 이름
메타스토어가 배포될 지역.
최상의 성능을 위해 액세스 커넥터, 작업 영역, 메타스토어 및 클라우드 스토리지 위치를 동일한 클라우드 지역에 공동 배치합니다.
ADLS Gen 2 경로: 메타스토어의 루트 스토리지로 사용할 스토리지 컨테이너의 경로를 입력합니다.
abfss://
접두사가 자동으로 추가됩니다.액세스 커넥터 ID: Azure Databricks 액세스 커넥터의 리소스 ID를 다음 형식으로 입력합니다.
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
(선택 사항) 관리 ID ID: 사용자 할당 관리 ID를 사용하여 액세스 커넥터를 만든 경우 관리 ID의 리소스 ID를 입력합니다.
- 만들기를 클릭합니다.
- 메시지가 표시되면 메타스토어에 연결할 작업 영역을 선택합니다.
관리 ID를 사용하여 Unity 카탈로그에서 관리되는 외부 스토리지에 액세스
Unity 카탈로그는 스토리지 자격 증명 및 외부 위치를 사용하여 스토리지 계정의 기존 데이터에 액세스할 수 있는 기능을 제공합니다. 스토리지 자격 증명은 관리 ID를 저장하고, 외부 위치는 스토리지 자격 증명에 대한 참조와 함께 스토리지 경로를 정의합니다. 이 방법을 사용하여 클라우드 스토리지의 기존 데이터에 대한 액세스 권한을 부여 및 제어하고 외부 테이블을 Unity Catalog에 등록할 수 있습니다.
스토리지 자격 증명은 관리 ID 또는 서비스 주체를 보관할 수 있습니다. 관리 ID를 사용하면 Unity Catalog가 네트워크 규칙으로 보호되는 스토리지 계정에 액세스할 수 있으며, 서비스 주체를 사용할 수 없으므로 비밀을 관리하고 회전할 필요가 없습니다.
관리 ID를 사용하여 스토리지 자격 증명을 만들고 해당 스토리지 자격 증명을 외부 위치에 할당하려면 Unity 카탈로그를 사용하여 클라우드 개체 스토리지 및 서비스에 연결의 지침을 따릅니다.
(VNet 삽입 작업 영역에 권장됨) 관리 ID에 따라 Azure Storage에 대한 신뢰할 수 있는 액세스 구성
Azure Databricks 작업 영역이 "VNet 삽입"이라도 하는 고유한 Azure 가상 네트워크에 배포되고 스토리지 방화벽을 사용하여 Azure Data Lake Storage Gen2 계정을 보호하는 경우 다음을 수행해야 합니다.
- Azure Databricks 작업 영역에서 Azure Storage에 액세스할 수 있도록 설정합니다.
- 관리 ID를 사용하도록 설정하여 Azure Storage에 액세스합니다.
1단계. Azure Databricks 작업 영역이 Azure Storage에 액세스하도록 설정
Azure Databricks 작업 영역이 Azure Data Lake Storage Gen2에 액세스할 수 있도록 네트워크 설정을 구성해야 합니다. 서브넷에서 Azure Data Lake Storage Gen2 계정으로의 연결을 허용하도록 Azure Data Lake Storage Gen2의 가상 네트워크에서 프라이빗 엔드포인트 또는 액세스를 구성할 수 있습니다.
지침은 Azure Data Lake Storage Gen2에 대한 Azure Databricks 작업 영역 액세스 권한 부여를 참조하세요.
2단계: 관리 ID가 Azure Storage에 액세스하도록 설정
이 단계는 Azure Storage 계정에 대해 "신뢰할 수 있는 서비스 목록의 Azure 서비스가 이 스토리지 계정에 액세스하도록 허용"을 사용하지 않도록 설정한 경우에만 필요합니다. 이 구성을 사용하는 경우:
- 스토리지 계정과 동일한 테넌트에 있는 모든 Azure Databricks용 액세스 커넥터는 스토리지 계정에 액세스할 수 있습니다.
- 모든 Azure 신뢰할 수 있는 서비스가 스토리지 계정에 액세스할 수 있습니다. 신뢰할 수 있는 Azure 서비스에 액세스 권한 부여를 참조하세요.
다음 지침에는 이 구성을 사용하지 않도록 설정하는 단계가 포함되어 있습니다. Azure Portal 또는 Azure CLI를 사용할 수 있습니다.
Azure Portal 사용
Azure Portal에 로그인하고, Azure Storage 계정을 찾아 선택하고, 네트워킹 탭으로 이동합니다.
공용 네트워크 액세스를 선택한 가상 네트워크 및 IP 주소에서 사용으로 설정합니다.
선택 사항으로 공용 네트워크 액세스를 사용 안 함으로 설정할 수도 있습니다. 관리 ID를 사용하여 공용 네트워크 액세스에 대한 검사를 바이패스할 수 있습니다.
리소스 인스턴스에서 Microsoft.Databricks/accessConnectors의 리소스 종류를 선택하고 Azure Databricks 액세스 커넥터를 선택합니다.
예외에서 신뢰할 수 있는 서비스 목록의 Azure 서비스가 이 스토리지 계정에 액세스하도록 허용 확인란을 선택 취소합니다.
Azure CLI 사용
Azure CLI를 설치하고 로그인합니다.
Microsoft Entra ID 서비스 주체를 사용하여 로그인하려면 Microsoft Entra ID 서비스 주체를 사용하여 Azure CLI 로그인을 참조하세요.
Azure Databricks 사용자 계정을 사용하여 로그인하려면 Azure Databricks 사용자 계정으로 Azure CLI 로그인을 참조 하세요.
다음과 같이 스토리지 계정에 네트워크 규칙을 추가합니다.
az storage account network-rule add \ -–subscription <subscription id of the resource group> \ -–resource-id <resource Id of the access connector for Azure Databricks> \ -–tenant-id <tenant Id> \ -g <name of the Azure Storage resource group> \ -–account-name <name of the Azure Storage resource> \
다음 형식으로 리소스 ID를 추가합니다.
/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
네트워크 규칙을 만든 후에는 Azure Portal에서 Azure Storage 계정으로 이동하여 리소스 인스턴스, 리소스 종류
Microsoft.Databricks/accessConnectors
아래의 네트워킹 탭에서 관리 ID를 확인합니다.예외에서 신뢰할 수 있는 서비스 목록의 Azure 서비스가 이 스토리지 계정에 액세스하도록 허용 확인란을 선택 취소합니다.
필요에 따라 공용 네트워크 액세스를 사용 안 함으로 설정합니다. 관리 ID를 사용하여 공용 네트워크 액세스에 대한 검사를 바이패스할 수 있습니다.
표준 방법은 이 값을 선택한 가상 네트워크 및 IP 주소에서 사용으로 설정한 채로 두는 것입니다.
(권장) 서버리스 SQL 웨어하우스의 액세스를 허용하도록 Azure Storage 방화벽 구성
서버리스 SQL 웨어하우스 는 Azure 구독이 아닌 Azure Databricks에 대한 Azure 구독에서 실행되는 컴퓨팅 리소스입니다. Azure Data Lake Storage Gen2에서 방화벽을 구성하고 서버리스 SQL 웨어하우스를 사용하려는 경우 서버리스 SQL 웨어하우스의 액세스를 허용하도록 방화벽을 구성해야 합니다.
지침은 서버리스 컴퓨팅 액세스를 위한 방화벽 구성을 참조하세요.
관리 ID를 사용하여 루트 스토리지에 액세스하도록 기존 Unity Catalog 메타스토어 업그레이드
서비스 주체를 사용하여 만든 Unity Catalog 메타스토어가 있고 관리 ID를 사용하도록 이 메타스토어를 업그레이드하려는 경우 API 호출을 사용하여 업데이트할 수 있습니다.
Unity Catalog에 대한 관리 ID 구성의 지침에 따라 Azure Databricks용 액세스 커넥터를 만들고 Unity Catalog 메타스토어 루트 스토리지에 사용할 스토리지 컨테이너에 대한 권한을 할당합니다.
시스템 할당 관리 ID 또는 사용자 할당 관리 ID를 사용하여 액세스 커넥터를 만들 수 있습니다.
액세스 커넥터의 리소스 ID를 기록해 둡니다. 사용자가 할당한 관리 ID를 사용하는 경우 해당 리소스 ID도 기록해 둡니다.
메타스토어에 할당된 Azure Databricks 작업 영역에 계정 관리자로 로그인합니다.
작업 영역 관리자가 아니어도 됩니다.
개인용 액세스 토큰을 생성합니다.
다음을 포함하는 로컬 환경에서 Azure Databricks 인증 구성 프로필을 만듭니다.
- 개인 액세스 토큰을 생성한 작업 영역의 작업 영역 인스턴스 이름 및 작업 영역 ID입니다.
- 개인용 액세스 토큰 값입니다.
Azure Databricks 개인용 액세스 토큰 인증을 참조하세요.
Databricks CLI를 사용하여 다음 명령을 실행하여 스토리지 자격 증명을 다시 만듭니다.
자리 표시자 값을 바꿉니다.
<credential-name>
: 스토리지 자격 증명의 이름입니다.<access-connector-id>
:/subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
형식의 Azure Databricks 액세스 커넥터에 대한 리소스 ID<managed-identity-id>
: 사용자 할당 관리 ID를 사용하여 액세스 커넥터를 만든 경우 관리 ID의 리소스 ID를 지정합니다.<profile-name>
: Azure Databricks 인증 구성 프로필의 이름입니다.
databricks storage-credentials create --json '{ "name\": "<credential-name>", "azure_managed_identity": { "access_connector_id": "<access-connector-id>", "managed_identity_id": "<managed-identity-id>" } }' --profile <profile-name>
응답의 스토리지 자격 증명 ID를 기록해 둡니다.
다음 Databricks CLI 명령을 실행하여
metastore_id
. Azure Databricks 인증 구성 프로필의 이름으로 바꿉<profile-name>
니다.databricks metastores summary --profile <profile-name>
다음 Databricks CLI 명령을 실행하여 메타스토어를 새 루트 스토리지 자격 증명으로 업데이트합니다.
자리 표시자 값을 바꿉니다.
<metastore-id>
: 이전 단계에서 검색한 메타스토어 ID입니다.<storage-credential-id>
: 스토리지 자격 증명 ID입니다.<profile-name>
: Azure Databricks 인증 구성 프로필의 이름입니다.
databricks metastores update <metastore-id> \ --storage-root-credential-id <storage-credential-id> \ --profile <profile-name>