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

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

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

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

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

참고 항목

볼륨을 정의할 때 볼륨 경로 아래의 데이터에 대한 클라우드 URI 액세스는 볼륨의 권한에 의해 제어됩니다.

시작하기 전에

필수 구성 요소:

  • Azure Databricks에서 외부 위치 개체를 만들기 전에 외부 위치로 사용하려는 Azure Data Lake Storage Gen2 스토리지 컨테이너 또는 Cloudflare R2 버킷을 만들어야 합니다.

    외부 위치로 사용하는 Azure Data Lake Storage Gen2 스토리지 계정에는 계층 구조 네임스페이스가 있어야 합니다.

  • 클라우드 스토리지 위치 경로에 대한 액세스를 제공하는 Azure Databricks에 정의된 스토리지 자격 증명이 있어야 합니다. Azure Data Lake Storage Gen2에 연결하기 위한 스토리지 자격 증명 만들기 및 Cloudflare R2에 연결하기 위한 스토리지 자격 증명 만들기를 참조하세요.

사용 권한 요구 사항:

  • 메타스토어와 외부 위치에서 참조되는 스토리지 자격 증명 모두에 대한 권한이 있어야 합니다 CREATE EXTERNAL LOCATION . Metastore 관리자는 CREATE EXTERNAL LOCATION 기본적으로 metastore에 있습니다.

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

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

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

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

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

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

  3. 카탈로그 창 위쪽에서 추가 아이콘을 추가 또는 더하기 아이콘 클릭하고 메뉴에서 외부 위치 추가를 선택합니다.

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

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

  5. 필요에 따라 기존 탑재 지점에서 컨테이너 경로를 복사합니다(Azure Data Lake Storage Gen2 컨테이너만 해당).

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

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

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

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

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

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

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

  11. 외부 위치를 사용할 수 있는 권한을 부여합니다.

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

    • 외부 위치를 사용하여 메타스토어, 카탈로그 또는 스키마에 관리되는 스토리지 위치를 추가하려면 권한을 부여합니다 CREATE MANAGED LOCATION .
    • 외부 테이블 또는 볼륨을 만들려면 허용 CREATE EXTERNAL TABLE 하거나 CREATE EXTERNAL VOLUME.

    카탈로그 탐색기를 사용하여 사용 권한을 부여하려면 다음을 수행합니다.

    1. 외부 위치 이름을 클릭하여 세부 정보 창을 엽니다.
    2. 사용 권한 탭에서 권한 부여를 클릭합니다.
    3. 권한 부여 <external location> 대화 상자에서 보안 주체 필드에서 사용자, 그룹 또는 서비스 주체를 선택하고 부여할 권한을 선택합니다.
    4. 부여를 클릭합니다.

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 관리자 또는 외부 위치 소유자입니다.

참고 항목

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 이유가 없습니다.

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

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

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

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

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

다음 단계

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