다음을 통해 공유


클라우드 스토리지를 Azure Databricks에 연결하는 외부 위치 만들기

이 문서에서는 클라우드 스토리지를 Azure Databricks에 연결하도록 Unity 카탈로그에서 외부 위치를 구성하는 방법을 설명합니다.

외부 위치는 Unity Catalog 스토리지 자격 증명을 클라우드 개체 스토리지 컨테이너와 연결합니다. 외부 위치는 카탈로그 및 스키마에 대한 관리되는 스토리지 위치를 정의하고 외부 테이블 및 외부 볼륨의 위치를 정의하는 데 사용됩니다.

Azure Data Lake Storage Gen2 스토리지 컨테이너 또는 Cloudflare R2 버킷에서 스토리지를 참조하는 외부 위치를 만들 수 있습니다.

카탈로그 탐색기, Databricks CLI, Notebook 또는 Databricks SQL 쿼리의 SQL 명령 또는 Terraform을 사용하여 외부 위치를 만들 수 있습니다.

외부 위치의 사용 및 스토리지 자격 증명과 외부 위치 간의 관계에 대한 자세한 내용은 Unity 카탈로그를 사용하여 클라우드 스토리지에 대한 액세스 관리를 참조 하세요.

시작하기 전에

필수 구성 요소:

권한 요구 사항

  • 메타스토어와 외부 위치에서 참조되는 스토리지 자격 증명 모두에 대한 권한이 있어야 합니다 CREATE EXTERNAL LOCATION . Metastore 관리자는 CREATE EXTERNAL LOCATION 기본적으로 metastore에 있습니다.
  • DBFS 루트 스토리지 위치에 대한 외부 위치를 만드는 경우 시스템에서 스토리지 자격 증명을 만들 수 있지만 작업 영역 관리자여야 합니다. 자세한 내용은 DBFS 루트 데이터에 대한 외부 위치 만들기를 참조하세요.

카탈로그 탐색기를 사용하여 수동으로 외부 위치 만들기

카탈로그 탐색기를 사용하여 수동으로 외부 위치를 만들 수 있습니다.

사용 권한 및 필수 구성 요소: 시작하기 전에 참조하세요.

외부 위치를 만들려면 다음을 수행합니다.

  1. 메타스토어에 연결된 작업 영역에 로그인합니다.

  2. 사이드바에서 카탈로그를 클릭합니다 카탈로그 아이콘.

  3. 빠른 액세스 페이지에서 외부 데이터외부 위치>이동한 다음 위치 만들기를 클릭합니다.

  4. 외부 위치 이름을 입력합니다.

  5. URL에서 외부 위치에 대한 경로를 입력하거나 선택합니다. 세 가지 옵션이 있습니다.

    • 기존 DBFS 탑재 지점의 컨테이너 경로를 복사하려면 DBFS 에서 복사를 클릭합니다.

    • DBFS 루트 스토리지 위치에 하위 경로를 복사하려면 DBFS 복사를 클릭하고 DBFS 루트복사를 선택합니다. 작업 영역 관리자인 경우 시스템에서 스토리지 자격 증명도 만듭니다.

      DBFS 루트데이터에 대한 외부 위치 만들기를 참조하세요.

    • 기존 탑재 지점 또는 DBFS 루트에서 복사하지 않는 경우 URL 필드를 사용하여 외부 위치로 사용할 스토리지 컨테이너 또는 R2 버킷 경로를 입력합니다.

      예를 들어 abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path> 또는 r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>입니다.

  6. 외부 위치에 대한 액세스 권한을 부여하는 스토리지 자격 증명을 선택합니다.

    참고 항목

    외부 위치가 DBFS 루트용이고 작업 영역 관리자인 경우 시스템에서 스토리지 자격 증명을 만들어 선택할 필요가 없습니다.

    스토리지 자격 증명이 없는 경우 자격 증명을 만들 수 있습니다.

    1. 저장 자격 증명 드롭다운 목록에서 + 새 저장 자격 증명선택합니다.

    2. 자격 증명 유형 드롭다운 목록에서 스토리지 자격 증명 개체에서 사용할 자격 증명 유형(Azure 관리 ID 또는 Cloudflare API 토큰)을 선택합니다.

    3. Azure 관리 ID의 경우 액세스 커넥터 ID를 입력하고(선택적으로) 스토리지 위치에 대한 액세스 권한을 부여하는 사용자 할당 관리 ID를 입력합니다. Cloudflare API 토큰의 경우 Cloudflare 계정, 액세스 키 ID 및 비밀 액세스 키를 입력합니다.

      자세한 내용은 Azure Data Lake Storage Gen2 연결하기 위한 스토리지 자격 증명 만들기 또는 Cloudflare R2연결하기 위한 스토리지 자격 증명 만들기 참조하세요.

  7. (선택 사항) 사용자가 외부 위치에 대한 읽기 전용 액세스 권한을 갖도록 하려면 고급 옵션을 클릭하고 읽기 전용을 선택합니다. 자세한 내용은 외부 위치를 읽기 전용으로 표시를 참조하세요.

  8. (선택 사항) 외부 위치가 Hive 메타스토어 페더레이션 카탈로그용인 경우 고급 옵션을 클릭하고 폴백 모드를 사용하도록 설정합니다.

    외부 위치에서 대체 모드 사용을참조하세요.

  9. 만들기를 클릭합니다.

  10. (선택 사항) 외부 위치를 특정 작업 영역에 바인딩합니다.

    기본적으로 권한 있는 사용자는 메타스토어에 연결된 모든 작업 영역에서 외부 위치를 사용할 수 있습니다. 특정 작업 영역에서만 액세스를 허용하려면 작업 영역 탭으로 이동하여 작업 영역을 할당합니다. (선택 사항) 특정 작업 영역에 외부 위치 할당을 참조 하세요.

  11. 사용 권한 탭으로 이동하여 외부 위치 사용 권한을 부여하십시오.

    외부 위치를 사용하려면 다음 권한을 부여해야 합니다.

    • 외부 위치를 사용하여 메타스토어, 카탈로그 또는 스키마에 관리되는 스토리지 위치를 추가하려면 권한을 부여합니다 CREATE MANAGED LOCATION .
    • 외부 테이블 또는 볼륨을 만들려면 허용 CREATE EXTERNAL TABLE 하거나 CREATE EXTERNAL VOLUME.
    1. 권한 부여를 클릭합니다.
    2. 권한 부여 <external location> 대화 상자에서 보안 주체 필드에서 사용자, 그룹 또는 서비스 주체를 선택하고 부여할 권한을 선택합니다.
    3. 권한 부여를 클릭합니다.

SQL을 사용하여 외부 위치 만들기

SQL을 사용하여 외부 위치를 만들려면 Notebook 또는 SQL 쿼리 편집기에서 다음 명령을 실행합니다. 자리 표시자 값을 바꿉니다. 필요한 권한 및 필수 구성 요소는 시작하기 전에 참조하세요.

  • <location-name>: 외부 위치의 이름입니다. 하이픈()과 같은 특수 문자를 포함하는 경우 location_name 백틱(-` `)으로 묶어야 합니다. 이름을 참조하세요.

  • <bucket-path>: 이 외부 위치가 액세스 권한을 부여하는 클라우드 테넌트의 경로입니다. 예를 들어 abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path> 또는 r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>입니다.

  • <storage-credential-name>: 스토리지 컨테이너 또는 버킷 경로의 읽기 및 쓰기 권한을 부여하는 스토리지 자격 증명의 이름입니다. 스토리지 자격 증명 이름에 하이픈(-)과 같은 특수 문자가 포함된 경우 백틱(` `)으로 묶어야 합니다.

CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

작업 영역 바인딩 또는 외부 위치 격리라고도 하는 계정의 특정 작업 영역에 대한 외부 위치 액세스를 제한하려면 (선택 사항) 특정 작업 영역에 외부 위치 할당을 참조 하세요.

(선택 사항) 특정 작업 영역에 외부 위치 할당

Important

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

기본적으로 메타스토어의 모든 작업 영역에서 외부 위치에 액세스할 수 있습니다. 즉, 사용자에게 해당 외부 위치에 대한 권한(예: READ FILES)이 부여된 경우 메타스토어에 연결된 모든 작업 영역에서 해당 권한을 행사할 수 있습니다. 작업 영역을 사용하여 사용자 데이터 액세스를 격리하는 경우 특정 작업 영역에서만 외부 위치에 대한 액세스를 허용할 수 있습니다. 이 기능을 작업 영역 바인딩 또는 외부 위치 격리라고 합니다.

외부 위치를 특정 작업 영역에 바인딩하는 일반적인 사용 사례는 다음과 같습니다.

  • 프로덕션 데이터가 포함된 외부 위치에 대한 권한이 있는 CREATE EXTERNAL TABLE 데이터 엔지니어가 프로덕션 작업 영역에서만 해당 위치에 외부 테이블을 만들 수 있도록 합니다.
  • 중요한 데이터가 포함된 외부 위치에 대한 권한이 있는 READ FILES 데이터 엔지니어가 특정 작업 영역만 사용하여 해당 데이터에 액세스할 수 있도록 합니다.

작업 영역별로 다른 유형의 데이터 액세스를 제한하는 방법에 대한 자세한 내용은 특정 작업 영역에 대한 카탈로그 액세스 제한을 참조 하세요.

Important

작업 영역 바인딩은 외부 위치에 대한 권한이 행사되는 시점에 참조됩니다. 예를 들어 사용자가 작업 영역에서 문을 CREATE TABLE myCat.mySch.myTable LOCATION 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'myWorkspace 실행하여 외부 테이블을 만드는 경우 일반 사용자 권한 검사 외에도 다음 작업 영역 바인딩 검사가 수행됩니다.

  • 외부 위치가 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' 바인딩되어 myWorkspace있나요?
  • 카탈로그 myCat 가 액세스 수준으로 바인딩되어 myWorkspace 있나요 Read & Write?

외부 위치가 이후에 바인딩 myWorkspace해제되면 외부 테이블이 계속 작동합니다.

또한 이 기능을 사용하면 다른 작업 영역에서 외부 위치를 사용할 수 있도록 하지 않고도 중앙 작업 영역에서 카탈로그를 채우고 카탈로그 바인딩을 사용하여 다른 작업 영역에서 카탈로그를 사용할 수 있도록 할 수 있습니다.

하나 이상의 작업 영역에 외부 위치 바인딩

특정 작업 영역에 외부 위치를 할당하려면 카탈로그 탐색기 또는 Databricks CLI를 사용할 수 있습니다.

필요한 권한: Metastore 관리자, 외부 위치 소유자 또는 외부 위치에 대한 MANAGE.

참고 항목

Metastore 관리자는 카탈로그 탐색기를 사용하여 메타스토어의 모든 외부 위치를 볼 수 있으며 외부 위치 소유자는 외부 위치가 현재 작업 영역에 할당되었는지 여부에 관계없이 메타스토어에서 소유한 모든 외부 위치를 볼 수 있습니다. 작업 영역에 할당되지 않은 외부 위치는 회색으로 표시됩니다.

카탈로그 탐색기

  1. 메타스토어에 연결된 작업 영역에 로그인합니다.

  2. 사이드바에서 카탈로그를 클릭합니다 카탈로그 아이콘.

  3. 빠른 액세스 페이지에서 외부 데이터>단추를 클릭하여 외부 위치 탭으로 이동합니다.

  4. 외부 위치를 선택하고 작업 영역 탭으로 이동합니다.

  5. 작업 영역 탭에서 모든 작업 영역에 액세스 권한이 있는지 확인란의 선택을 취소 합니다.

    외부 위치가 이미 하나 이상의 작업 영역에 바인딩된 경우 이 확인란은 이미 선택 취소되어 있습니다.

  6. 작업 영역에 할당을 클릭하고 할당할 작업 영역을 입력하거나 찾습니다.

액세스 권한을 취소하려면 작업 영역 탭으로 이동하여 작업 영역을 선택하고 해지(Revoke)를 클릭합니다. 모든 작업 영역에서 액세스를 허용하려면 모든 작업 영역에 액세스 권한이 있는지 확인란을 선택합니다.

CLI

개의 Databricks CLI 명령 그룹과 작업 영역에 외부 위치를 할당하는 데 필요한 두 단계가 있습니다.

다음 예제에서는 Azure Databricks 인증 구성 프로필의 이름으로 바꿉 <profile-name> 니다. 개인 액세스 토큰을 생성한 작업 영역의 작업 영역 인스턴스 이름 및 작업 영역 ID 외에도 개인 액세스 토큰의 값을 포함해야 합니다. Azure Databricks 개인용 액세스 토큰 인증을 참조하세요.

  1. external-locations 명령 그룹의 update 명령을 사용하여 외부 위치를 isolation mode 다음으로 ISOLATED설정합니다.

    databricks external-locations update <my-location> \
    --isolation-mode ISOLATED \
    --profile <profile-name>
    

    기본값 isolation-modeOPEN 메타스토어에 연결된 모든 작업 영역입니다.

  2. workspace-bindings 명령 그룹의 update-bindings 명령을 사용하여 작업 영역을 외부 위치에 할당합니다.

    databricks workspace-bindings update-bindings external-location <my-location> \
    --json '{
      "add": [{"workspace_id": <workspace-id>}...],
      "remove": [{"workspace_id": <workspace-id>}...]
    }' --profile <profile-name>
    

    "add""remove" 속성을 사용하여 작업 영역 바인딩을 추가하거나 제거합니다.

    참고 항목

    외부 위치에는 읽기 전용 바인딩(BINDING_TYPE_READ_ONLY)을 사용할 수 없습니다. 따라서 외부 위치 바인딩에 대해 설정할 binding_type 이유가 없습니다.

외부 위치에 대한 모든 작업 영역 할당을 나열하려면 명령 그룹의 workspace-bindings 명령을 사용합니다get-bindings.

databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>

REST API 참조의 작업 영역 바인딩참조하세요.

작업 영역에서 외부 위치 바인딩 해제

카탈로그 탐색기 또는 workspace-bindings CLI 명령 그룹을 사용하여 외부 위치에 대한 작업 영역 액세스를 취소하는 지침은 하나 이상의 작업 영역에 외부 위치 바인딩에 포함되어 있습니다.

다음 단계

  • 외부 위치를 사용할 수 있는 권한을 다른 사용자에게 부여합니다. 외부 위치 관리를 참조하세요.
  • 외부 위치를 사용하여 관리되는 스토리지 위치를 정의합니다. Unity 카탈로그에서 관리되는 스토리지 위치 지정을 참조하세요.
  • 외부 위치를 사용하여 외부 테이블을 정의합니다. 외부 테이블 작업을 참조하세요.
  • 외부 위치를 사용하여 외부 볼륨을 정의합니다. Unity 카탈로그 볼륨이란?을 참조하세요.