다음을 통해 공유


Unity 카탈로그의 데이터에 대한 외부 액세스 제어

Important

이 기능은 공개 미리 보기 상태입니다.

Microsoft Fabric을 사용하여 Azure Databricks 데이터를 읽는 방법에 대한 자세한 내용은 Microsoft Fabric을 사용하여 Unity 카탈로그에 등록된 데이터를 읽는 방법을 참조하세요.

이 문서에서는 외부 처리 엔진이 Unity 카탈로그 열기 API 또는 Iceberg API를 사용하여 해당 데이터에 액세스할 때, 특히 엔진이 Unity 카탈로그 자격 증명 자동 판매 기능을 사용하여 액세스 권한을 얻을 때 Azure Databricks의 데이터에 대한 액세스를 제어하는 방법을 설명합니다.

이 문서에 설명된 액세스 제어는 다음과 같은 외부 엔진 및 인터페이스를 사용하여 Unity 카탈로그 카탈로그에서 데이터를 읽는 데 임시 자격 증명을 사용하는 시나리오를 다룹니다.

  • Iceberg REST APIs
  • Microsoft Fabric
  • duckDB
  • Apache Spark 및 Trino

참고 항목

Unity 카탈로그는 Delta Lake UniForm을 통해 Iceberg REST API를 구현합니다. Iceberg 클라이언트에게 Unity 카탈로그의 델타 테이블에 대한 읽기 전용 액세스를 제공하는 다른 방법입니다. UniForm을 사용하여 Iceberg 클라이언트에서 델타 테이블을 읽는 방법을 참조하세요.

자격 증명 자동 판매 및 외부 엔진 액세스 권한 부여 개요

외부 엔진을 사용하여 Unity 카탈로그 메타스토어에 등록된 데이터에 액세스하려면 Unity 카탈로그 REST API를 사용하여 수명이 짧은 자격 증명을 요청해야 합니다. Unity 카탈로그가 자격 증명을 부여하는 프로세스를 자격 증명 자동 판매기라고 합니다.

임시 자격 증명을 부여받으려면 요청을 하는 Azure Databricks 주체(사용자, 그룹 또는 서비스 주체)는 외부 엔진에서 액세스하려는 테이블이 포함된 스키마에 대한 EXTERNAL USE SCHEMA 권한이 있어야 합니다. 스키마를 포함하는 Unity 카탈로그 메타스토어도 외부 액세스를 위해 명시적으로 사용하도록 설정해야 합니다.

권한 있는 보안 주체에 임시 자격 증명이 부여되면 외부 엔진 사용자가 클라우드 스토리지 위치에서 데이터 개체(테이블)에 액세스하는 데 사용할 수 있는 수명이 짧은 액세스 토큰 문자열 및 클라우드 스토리지 위치 URL을 받습니다. 외부 엔진에서 자격 증명 및 토큰을 사용하는 방법은 외부 엔진과 관련이 있으며 여기서는 다루지 않습니다.

외부 엔진 및 Azure Databricks Unity 카탈로그 구성도 다음 섹션에 열거된 특정 네트워킹 요구 사항을 충족해야 합니다.

요구 사항

이 섹션에서는 Unity 카탈로그 열기 API 또는 Iceberg REST API를 사용하여 외부 엔진에서 Unity 카탈로그 데이터 개체에 안전하게 액세스하는 데 필요한 네트워킹 구성, Unity 카탈로그 메타스토어 옵션, 테이블 형식 및 사용 권한을 나열합니다.

네트워킹 요구 사항

  • Unity 카탈로그 Open API 또는 Iceberg REST API를 사용하여 Azure Databricks 작업 영역에 액세스하려면 요청을 수행하는 엔진이 작업 영역 URL에 액세스할 수 있어야 합니다. 여기에는 IP 액세스 목록 또는 Azure Private Link를 사용하는 작업 영역이 포함됩니다.
  • Unity 카탈로그에 등록된 데이터 개체의 기본 클라우드 스토리지 위치에 액세스하려면 Unity 카탈로그 임시 자격 증명 API에서 생성된 스토리지 URL에 요청을 수행하는 엔진에 액세스할 수 있어야 합니다. 즉, 기본 클라우드 스토리지 계정에 대한 방화벽 및 네트워크 액세스 제어 목록에서 엔진을 허용해야 합니다.

Unity 카탈로그 메타스토어 및 데이터 개체 요구 사항

  • 외부 데이터 액세스에 대해 메타스토어를 사용하도록 설정해야 합니다.
  • 공개 미리 보기에서는 테이블만 지원됩니다.
    • 외부 테이블은 읽기 및 쓰기를 지원합니다.
    • 관리되는 테이블은 읽기만 가능합니다.
  • 지원되지 않는 데이터 형식은 다음과 같습니다.
    • 행 필터 또는 열 마스크가 있는 테이블입니다.
    • 델타 공유를 사용하여 공유된 테이블입니다.
    • Lakehouse 페더레이션 테이블(외대 테이블).
    • 구체화된 보기
    • Delta Live Tables 스트리밍 테이블
    • 온라인 테이블
    • 벡터 검색 인덱스

사용 권한 요구 사항

임시 자격 증명을 요청하는 보안 주체에는 다음이 있어야 합니다.

  • 포함하는 스키마 또는 상위 카탈로그에 대한 EXTERNAL USE SCHEMA 권한이 있어야 합니다.

    이 권한은 항상 명시적으로 부여되어야 합니다. 부모 카탈로그 소유자만 부여할 수 있습니다. 우발적인 유출을 방지하기 위해 ALL PRIVILEGES에는 EXTERNAL USE SCHEMA 권한이 포함되지 않으며 스키마 소유자는 기본적으로 이 권한을 갖지 않습니다.

  • 테이블에는 SELECT 권한, 상위 카탈로그에는 USE CATALOG 권한, 상위 스키마에는 USE SCHEMA 권한이 있습니다.

메타스토어에서 외부 데이터 액세스 사용

외부 엔진이 메타스토어의 데이터에 액세스할 수 있도록 하려면 metastore 관리자가 메타스토어에 대한 외부 데이터 액세스를 사용하도록 설정해야 합니다. 이 옵션은 권한 없는 외부 액세스를 방지하기 위해 기본적으로 사용하지 않도록 설정됩니다.

  1. 메타스토어에 연결된 Azure Databricks 작업 영역에서 카탈로그 아이콘 카탈로그를 클릭합니다.
  2. 카탈로그 창 맨 위에 있는 기어 아이콘 기어 아이콘을 클릭하고 메타스토어를 선택합니다.
  3. 세부 정보 탭에서 외부 데이터 액세스를 사용하도록 설정합니다.

외부 데이터 액세스를 위한 임시 자격 증명 요청

외부 데이터 액세스에 대한 임시 자격 증명을 요청하려면 위에 나열된 요구 사항을 충족하는 작업 영역 사용자가 /api/2.1/unity-catalog/temporary-table-credentials API를 사용해야 합니다.

참고 항목

자격증명 자동 발급을 지원하는 테이블의 목록은 include_manifest_capabilities 옵션을 활성화한 상태에서 ListTables API를 호출하여 검색할 수 있습니다. 임시 테이블 자격 증명 API에서는 HAS_DIRECT_EXTERNAL_ENGINE_READ_SUPPORT 또는 HAS_DIRECT_EXTERNAL_ENGINE_WRITE_SUPPORT로 표시된 테이블만 참조할 수 있습니다. GET /api/2.1/unity-catalog/tables를 참조하세요.

예시:

curl -X POST -H "Authentication: Bearer $OAUTH_TOKEN" \
https://<workspace-instance>/api/2.1/unity-catalog/temporary-table-credentials \
-d '{"table_id": "<string>", "operation_name": "<READ|READ_WRITE>"}'

자세한 내용은 Azure Databricks REST API 참조의 POST /api/2.1/unity-catalog/temporary-table-credentials 을 참조하세요.