Unity Catalog용 카탈로그 통합 구성하기

Use the CREATE CATALOG INTEGRATION(Apache Iceberg™ REST) command to create a REST catalog integration that uses vended credentials or an external volume to connect to Databricks Unity Catalog.

참고

Databricks 작업 공간이 다음 클라우드 공급자 중 하나에서 호스팅되는 Unity Catalog에 대한 카탈로그 통합을 생성할 수 있습니다.

  • AWS

  • Azure

  • Google Cloud

You can configure a catalog integration for Unity Catalog that uses OAuth or bearer authentication:

Configure an OAuth catalog integration

1단계: Databricks 작업 공간 URL 찾기

Databricks 작업 공간 URL은 Databricks 작업 공간에 액세스하는 데 사용하는 URL입니다. 이 URL은 나중에 카탈로그 통합을 생성할 때 지정해야 하므로 찾아야 합니다.

  1. Databricks 작업 공간 URL을 찾습니다.

    이 URL을 찾는 방법에 대한 지침은 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

  2. Databricks 작업 공간 URL을 텍스트 편집기에 복사합니다.

2단계: Databricks에 서비스 주체 추가

  1. 서비스 주체를 추가하려면 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

  2. 서비스 주체의 애플리케이션 ID 값을 텍스트 편집기에 복사하여 안전하게 저장합니다. 나중에 Snowflake에서 카탈로그 통합을 생성할 때 이 값을 지정합니다.

3단계: 서비스 주체에 대한 OAuth 시크릿 생성

  1. 서비스 주체에 대한 OAuth 시크릿을 생성하려면 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

  2. 생성한 시크릿 값을 텍스트 편집기에 복사하여 안전하게 저장합니다. 나중에 Snowflake에서 카탈로그 통합을 생성할 때 이 값을 지정합니다.

    중요

    클라이언트 시크릿은 한 번만 표시됩니다. 대화 상자를 닫기 전에 복사해야 합니다.

4단계: Unity Catalog에서 카탈로그에 대한 Snowflake 액세스 활성화

이 단계에서는 Databricks를 사용하여 Snowflake가 Unity Catalog의 카탈로그에 액세스할 수 있도록 지원합니다.

발급된 자격 증명을 통해 Unity Catalog의 카탈로그에 대한 Snowflake 액세스를 활성화하려면 먼저 메타스토어 수준에서 메타스토어에 외부 데이터 액세스를 활성화해야 합니다. 다음으로, 서비스 주체에 카탈로그에 대한 Unity Catalog 권한을 부여해야 합니다.

메타스토어에서 외부 데이터 액세스 활성화(발급된 자격 증명만 해당)

발급된 자격 증명을 사용하는 카탈로그 통합을 생성하는 경우 Databricks의 메타스토어에서 외부 데이터 액세스를 활성화해야 합니다. 외부 볼륨을 사용하는 카탈로그 통합을 생성하는 경우 이 단계를 건너뛸 수 있습니다.

메타스토어에서 외부 데이터 액세스를 활성화하는 방법에 대한 지침은 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

작업 공간에 서비스 주체 할당

다음으로, Databricks 작업 공간에 서비스 주체를 할당해야 합니다.

지침은 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

서비스 주체에 카탈로그에 대한 액세스 권한 부여

다음으로, 서비스 주체에 Unity Catalog 권한을 부여해야 합니다. Snowflake가 지정한 권한에 따라 카탈로그에 액세스할 수 있도록 허용하려면 이러한 권한을 서비스 주체에 부여해야 합니다.

전체 기능에 대한 권한

Snowflake에서 모든 기능을 활성화하려면 다음 권한을 부여해야 합니다.

참고

Snowflake 액세스를 제한하려는 경우 Databricks 설명서의 `Unity Catalog 권한 및 보안 오브젝트<https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges/privileges>`_를 참조하세요.

권한

설명

EXTERNAL USE SCHEMA

Unity Catalog가 클라우드 저장소의 테이블 데이터에 액세스하기 위해 범위가 지정된 임시 자격 증명을 생성하고 Snowflake에 제공할 수 있도록 허용합니다.

참고

이 권한은 발급된 자격 증명을 사용하는 카탈로그 통합을 생성할 때만 필요합니다. 외부 볼륨을 사용하는 카탈로그 통합을 생성할 때는 필요하지 않으므로 외부 볼륨을 사용하는 경우 예제 코드 블록에서 제거하세요.

MODIFY

Snowflake가 테이블의 데이터를 추가, 업데이트, 삭제할 수 있도록 허용합니다.

SELECT

Snowflake가 테이블을 쿼리하고 테이블 메타데이터에 액세스할 수 있도록 허용합니다. 카탈로그 연결 데이터베이스에서 데이터 읽기 및 테이블 검색을 포함하여 Snowflake의 모든 작업에 필요합니다.

USE CATALOG

Snowflake가 카탈로그에 액세스할 수 있도록 허용합니다. Unity Catalog의 모든 오브젝트에 연결하고 상호 작용하는 데 필요합니다.

USE SCHEMA

카탈로그 내의 스키마(네임스페이스)에 대한 Snowflake 액세스를 허용합니다. 특정 스키마의 테이블을 보고 작업하는 데 필요합니다.

권한 부여

카탈로그 탐색기 또는 SQL을 사용하여 권한을 부여할 수 있습니다.

Databricks 카탈로그 탐색기를 사용하여 권한을 부여하려면 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

중요

Principals 필드에 사용자의 이메일 주소나 그룹의 이름이 아닌 서비스 주체의 이름을 입력해야 합니다.

5단계: 카탈로그 통합 만들기

다음 예제에서는 OAuth 를 사용하는 REST 카탈로그 통합을 생성합니다.

CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_oauth_vended_credentials
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
REST_CONFIG = (
  CATALOG_URI = '<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest'
  CATALOG_NAME = '<catalog_name>'
  ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
  TYPE = OAUTH
  OAUTH_TOKEN_URI = '<databricks_workspace_url>/oidc/v1/token'
  OAUTH_CLIENT_ID = '<client_id>'
  OAUTH_CLIENT_SECRET = '<oauth_secret>'
  OAUTH_ALLOWED_SCOPES = ('all-apis')
)
ENABLED = TRUE;
Copy

여기서

  • ``<databricks_workspace_url>``은 Databricks 작업 공간에 대한 URL을 지정합니다. 이 URL을 찾으려면, 1단계: Databricks 작업 공간 URL 찾기 섹션을 참조하세요.

    다음은 각 클라우드 플랫폼에 대한 Databricks 작업 공간의 URL 예제입니다.

    • AWS용 Databricks: https://dbc-a1a1a1a1-a1a1.cloud.databricks.com

    • Azure Databricks: https://adb-1111111111111111.1.azuredatabricks.net

    • Google Cloud용 Databricks: https://1111111111111111.1.gcp.databricks.com

  • ``<catalog_name>``은 Snowflake를 연결하려는 Unity Catalog의 카탈로그 이름을 지정합니다. 이 이름은 Data > :extui:`Catalogs`의 Databricks 작업 공간에서 찾을 수 있습니다.

  • ``ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS``는 Unity Catalog에서 발급된 자격 증명을 사용하도록 카탈로그 통합을 구성합니다.

    참고

    외부 볼륨을 사용하는 카탈로그 통합을 생성하는 경우 ACCESS_DELEGATION_MODE 매개 변수를 제외해야 합니다.

  • ``<client_id>``는 Databricks 서비스 주체에 대한 OAuth 클라이언트 ID를 지정합니다. :ref:`Databricks에 서비스 주체를 추가<label-tables_iceberg_configure_catalog_integration_rest_unity_oauth_add_service_principal>`할 때 이 값을 복사했습니다.

    참고

    Databricks에서는 이 값을 클라이언트 ID가 아닌 *애플리케이션 ID*라고 합니다.

  • ``<oauth_secret>``은 Databricks 서비스 주체에 대한 OAuth 시크릿을 지정합니다. :ref:`서비스 주체에 대한 OAuth 시크릿을 생성<label-tables_iceberg_configure_catalog_integration_rest_unity_oauth_add_oauth_secret>`할 때 이 값을 복사했습니다.

6단계: 카탈로그 통합 확인하기

  • 카탈로그 통합 구성을 확인하려면 SYSTEM$VERIFY_CATALOG_INTEGRATION 함수를 호출합니다.

    예제를 포함한 자세한 내용은 :ref:`SYSTEM$VERIFY_CATALOG_INTEGRATION을 사용하여 카탈로그 통합 구성 확인<label-tables_iceberg_rest_catalog_integration_verify_system_function>`을 참조하세요.

다음 단계

Unity Catalog에서 카탈로그에 대한 카탈로그 통합을 구성한 후 CREATE DATABASE(카탈로그 연결) 명령을 통해 생성한 카탈로그 통합을 지정하여 카탈로그 연결 데이터베이스를 생성합니다. 그런 다음 Snowflake는 Unity Catalog의 카탈로그와 자동으로 동기화하여 스키마와 Iceberg 테이블을 감지하고 원격 테이블을 카탈로그 연결 데이터베이스에 등록합니다.

카탈로그 연결 데이터베이스를 생성하는 경우 카탈로그 통합을 지정합니다.

For example:

CREATE OR REPLACE DATABASE my_linked_db
   LINKED_CATALOG = (
      CATALOG = 'unity_catalog_int_oauth_vended_credentials'
   );
Copy

참고

Configure a bearer token catalog integration

1단계: Databricks 작업 공간 URL 찾기

Databricks 작업 공간 URL은 Databricks 작업 공간에 액세스하는 데 사용하는 URL입니다. 이 URL은 나중에 카탈로그 통합을 생성할 때 지정해야 하므로 찾아야 합니다.

  1. Databricks 작업 공간 URL을 찾습니다.

    이 URL을 찾는 방법에 대한 지침은 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

  2. Databricks 작업 공간 URL을 텍스트 편집기에 복사합니다.

2단계: Databricks에 개인 액세스 토큰(PAT) 추가

개인 액세스 토큰(PAT)은 인증을 위해 전달자 토큰을 사용하는 카탈로그 통합을 생성할 때 지정해야 하므로 추가해야 합니다.

  1. Databricks에 PAT를 추가하려면 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

  2. PAT의 값을 텍스트 편집기에 복사하여 안전하게 저장합니다. 나중에 Snowflake에서 카탈로그 통합을 생성할 때 이 값을 지정합니다.

3단계: Unity Catalog에서 카탈로그에 대한 Snowflake 액세스 활성화

이 단계에서는 Databricks를 사용하여 Snowflake가 Unity Catalog의 카탈로그에 액세스할 수 있도록 지원합니다.

발급된 자격 증명을 통해 Unity Catalog의 카탈로그에 대한 Snowflake 액세스를 활성화하려면 먼저 메타스토어 수준에서 메타스토어에 외부 데이터 액세스를 활성화해야 합니다. 다음으로 Databricks 사용자에게 PAT가 상속하는 카탈로그에 대한 Unity Catalog 권한을 부여해야 합니다.

메타스토어에서 외부 데이터 액세스 활성화(발급된 자격 증명만 해당)

발급된 자격 증명을 사용하는 카탈로그 통합을 생성하는 경우 Databricks의 메타스토어에서 외부 데이터 액세스를 활성화해야 합니다. 외부 볼륨을 사용하는 카탈로그 통합을 생성하는 경우 이 단계를 건너뛸 수 있습니다.

메타스토어에서 외부 데이터 액세스를 활성화하는 방법에 대한 지침은 Databricks 계정이 호스팅되는 위치에 대한 항목을 참조하세요.

Databricks 사용자에게 카탈로그에 대한 액세스 권한 부여

다음으로, Databricks 사용자에게 Unity Catalog 권한을 부여해야 합니다. 지정한 권한을 기반으로 Snowflake가 카탈로그에 액세스할 수 있도록 허용하려면 Databricks 사용자에게 해당 권한을 부여해야 합니다. 인증을 위해 PAT를 사용하는 경우 PAT를 생성한 Databricks 사용자에게 부여된 모든 권한을 상속합니다.

전체 기능에 대한 권한

Snowflake에서 모든 기능을 활성화하려면 다음 권한을 부여해야 합니다.

참고

Snowflake 액세스를 제한하려는 경우 Databricks 설명서의 `Unity Catalog 권한 및 보안 오브젝트<https://docs.databricks.com/aws/en/data-governance/unity-catalog/manage-privileges/privileges>`_를 참조하세요.

권한

설명

EXTERNAL USE SCHEMA

Unity Catalog가 클라우드 저장소의 테이블 데이터에 액세스하기 위해 범위가 지정된 임시 자격 증명을 생성하고 Snowflake에 제공할 수 있도록 허용합니다.

참고

이 권한은 발급된 자격 증명을 사용하는 카탈로그 통합을 생성할 때만 필요합니다. 외부 볼륨을 사용하는 카탈로그 통합을 생성할 때는 필요하지 않으므로 외부 볼륨을 사용하는 경우 예제 코드 블록에서 제거하세요.

MODIFY

Snowflake가 테이블의 데이터를 추가, 업데이트, 삭제할 수 있도록 허용합니다.

SELECT

Snowflake가 테이블을 쿼리하고 테이블 메타데이터에 액세스할 수 있도록 허용합니다. 카탈로그 연결 데이터베이스에서 데이터 읽기 및 테이블 검색을 포함하여 Snowflake의 모든 작업에 필요합니다.

USE CATALOG

Snowflake가 카탈로그에 액세스할 수 있도록 허용합니다. Unity Catalog의 모든 오브젝트에 연결하고 상호 작용하는 데 필요합니다.

USE SCHEMA

카탈로그 내의 스키마(네임스페이스)에 대한 Snowflake 액세스를 허용합니다. 특정 스키마의 테이블을 보고 작업하는 데 필요합니다.

권한 부여

카탈로그 탐색기 또는 SQL을 사용하여 권한을 부여할 수 있습니다.

4단계: 카탈로그 통합 만들기

The following example creates a REST catalog integration that uses a bearer token with vended credentials:

CREATE OR REPLACE CATALOG INTEGRATION unity_catalog_int_bearer_vended_credentials
  CATALOG_SOURCE = ICEBERG_REST
  TABLE_FORMAT = ICEBERG
  REST_CONFIG = (
    CATALOG_URI = '<databricks_workspace_url>/api/2.1/unity-catalog/iceberg-rest'
    CATALOG_NAME = '<catalog_name>'
    ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
  )
  REST_AUTHENTICATION = (
    TYPE = BEARER
    BEARER_TOKEN = '<personal_access_token>'
  )
  ENABLED = TRUE;
Copy

여기서

  • ``<databricks_workspace_url>``은 Databricks 작업 공간에 대한 URL을 지정합니다. 이 URL을 찾으려면, 1단계: Databricks 작업 공간 URL 찾기 섹션을 참조하세요.

    다음은 각 클라우드 플랫폼에 대한 Databricks 작업 공간의 URL 예제입니다.

    • AWS용 Databricks: https://dbc-a1a1a1a1-a1a1.cloud.databricks.com

    • Azure Databricks: https://adb-1111111111111111.1.azuredatabricks.net

    • Google Cloud용 Databricks: https://1111111111111111.1.gcp.databricks.com

  • ``<catalog_name>``은 Snowflake를 연결하려는 Unity Catalog의 카탈로그 이름을 지정합니다. 이 이름은 Data > :extui:`Catalogs`의 Databricks 작업 공간에서 찾을 수 있습니다.

  • ``ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS``는 Unity Catalog에서 발급된 자격 증명을 사용하도록 카탈로그 통합을 구성합니다.

    참고

    외부 볼륨을 사용하는 카탈로그 통합을 생성하는 경우 ACCESS_DELEGATION_MODE 매개 변수를 제외해야 합니다.

  • <personal_access_token> specifies your Databricks personal access token (PAT). An example of a PAT is aaaa111aaaa111a1a1a1a111111a111a1111.

5단계: 카탈로그 통합 확인하기

  • 카탈로그 통합 구성을 확인하려면 SYSTEM$VERIFY_CATALOG_INTEGRATION 함수를 호출합니다.

    자세한 내용은 :ref:`SYSTEM$VERIFY_CATALOG_INTEGRATION을 사용하여 카탈로그 통합 구성 확인하기<label-tables_iceberg_rest_catalog_integration_verify_system_function>`를 참조하세요.

다음 단계

Unity Catalog에서 카탈로그에 대한 카탈로그 통합을 구성한 후 CREATE DATABASE(카탈로그 연결) 명령을 통해 생성한 카탈로그 통합을 지정하여 카탈로그 연결 데이터베이스를 생성합니다. 그런 다음 Snowflake는 Unity Catalog의 카탈로그와 자동으로 동기화하여 스키마와 Iceberg 테이블을 감지하고 원격 테이블을 카탈로그 연결 데이터베이스에 등록합니다.

카탈로그 연결 데이터베이스를 생성하는 경우 카탈로그 통합을 지정합니다.

For example:

CREATE OR REPLACE DATABASE my_linked_db
   LINKED_CATALOG = (
      CATALOG = 'unity_catalog_int_bearer_vended_credentials'
   );
Copy

참고