Azure의 외부 볼륨 구성

외부 볼륨을 사용하여 자신의 Microsoft Azure 컨테이너에 대한 제한된 액세스 권한을 Snowflake에 부여합니다. Snowflake는 외부 볼륨에 대해 다음과 같은 Azure 클라우드 저장소 서비스를 지원합니다.

  • Blob 저장소

  • Data Lake Storage Gen2

  • 범용 v1

  • 범용 v2

전제 조건

외부 볼륨을 구성하기 전에 다음을 수행해야 합니다.

  • Snowflake 계정을 호스팅하는 동일한 리전에 있는 Azure Storage 컨테이너입니다.

  • IAM 정책 및 역할을 만들고 관리할 수 있는 Azure의 권한. Azure 관리자가 아닌 경우 Azure 관리자에게 이러한 작업을 수행하도록 요청합니다.

Azure 저장소 방화벽을 사용하여 저장소 계정에 대한 무단 트래픽을 차단하는 경우 VNet 서브넷 ID 허용하기 의 지침에 따라 Azure 저장소 계정에 대한 Snowflake 액세스 권한을 명시적으로 부여합니다.

1단계: Snowflake에서 외부 볼륨 만들기

CREATE EXTERNAL VOLUME 명령을 사용하여 외부 볼륨을 생성합니다.

참고

계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)만 이 SQL 명령을 실행할 수 있습니다.

다음 예에서는 암호화로 Azure 저장소 위치를 정의하는 외부 볼륨을 생성합니다.

CREATE EXTERNAL VOLUME exvol
  STORAGE_LOCATIONS =
    (
      (
        NAME = 'my-azure-northeurope'
        STORAGE_PROVIDER = 'AZURE'
        STORAGE_BASE_URL = 'azure://exampleacct.blob.core.windows.net/my_container_northeurope/'
        AZURE_TENANT_ID = 'a123b4c5-1234-123a-a12b-1a23b45678c9'
      )
    );
Copy

참고

STORAGE_BASE_URL 값을 지정할 때 https:// 가 아닌 azure:// 접두사를 사용하십시오.

2단계: 저장소 위치에 Snowflake 액세스 권한 부여

  1. Microsoft 권한 요청 페이지의 URL을 검색하려면 DESCRIBE EXTERNAL VOLUME 명령을 사용하십시오. 이전에 생성한 외부 볼륨의 이름을 지정합니다.

    DESC EXTERNAL VOLUME exvol;
    
    Copy

    다음 속성의 값을 기록합니다.

    속성

    설명

    AZURE_CONSENT_URL

    Microsoft 권한 요청 페이지에 대한 URL입니다.

    AZURE_MULTI_TENANT_APP_NAME

    계정에 대해 생성된 Snowflake 클라이언트 애플리케이션의 이름입니다. 이 섹션의 이후 단계에서는 허용되는 저장소 위치에 대한 액세스 토큰을 획득하기 위한 권한을 이 애플리케이션에 부여해야 합니다.

    다음 단계에서 이러한 값을 사용합니다.

  2. 웹 브라우저에서 Microsoft 권한 요청 페이지(AZURE_CONSENT_URL)로 이동합니다.

  3. Accept 를 선택합니다. 이 작업을 통해 Snowflake 계정에 대해 생성된 Azure 서비스 주체에게 tenant 내부의 모든 리소스에 대한 액세스 토큰이 부여됩니다. 액세스 토큰은 서비스 주체에 저장소 계정 수준에 적절한 권한을 부여한 경우에만 획득이 가능합니다(다음 단계 참조).

    Microsoft 권한 요청 페이지가 Snowflake 회사 사이트(snowflake.com)로 리디렉션됩니다.

  4. Microsoft Azure 포털에 로그인합니다.

  5. Azure Services » Storage Accounts 로 이동합니다. Snowflake 서비스 주체가 액세스해야 하는 저장소 계정의 이름을 선택합니다.

    참고

    컨테이너 수준이 아닌 저장소 계정 수준에서 외부 볼륨에 대한 IAM 권한을 설정해야 합니다.

  6. Access Control (IAM) » Add role assignment 를 선택합니다.

  7. Storage Blob Data Contributor 역할을 선택하여 Snowflake 서비스 주체에 읽기 및 쓰기 액세스 권한을 부여합니다.

    참고

    Storage Blob Data Contributor 역할은 외부 볼륨 위치에 대한 쓰기 액세스 권한을 부여합니다. 쓰기 액세스 권한을 완전히 구성하려면, 외부 볼륨의 ALLOW_WRITES 매개 변수를 TRUE (기본값)로 설정해야 합니다.

  8. Snowflake 서비스 포털 주체를 검색합니다. DESC EXTERNAL VOLUME 출력(1단계)에서 AZURE_MULTI_TENANT_APP_NAME 속성의 ID입니다. AZURE_MULTI_TENANT_APP_NAME 속성에서 밑줄 앞의 문자열을 검색합니다.

    중요

    • Azure에서 이 섹션의 Microsoft 요청 페이지를 통해 요청한 Snowflake 서비스 주체를 생성하기 위해서는 1시간이 이상 걸릴 수 있습니다. 서비스 주체를 즉시 사용할 수 없는 경우 1~2시간 기다린 후 다시 검색하십시오.

    • 서비스 주체를 삭제하면 외부 볼륨이 작동을 중지합니다.

    Azure Storage Console에서 역할 할당 추가하기
  9. Review + assign 을 선택합니다.

    참고

    역할을 할당하면 변경 사항이 적용되는 데 최대 10분이 걸릴 수 있습니다. 자세한 내용은 Microsoft Azure 설명서의 증상 - 역할 할당 변경 사항이 감지되지 않음 을 참조하십시오.

3단계: 저장소 액세스 확인

Snowflake가 저장소 공급자를 성공적으로 인증할 수 있는지 확인하려면 SYSTEM$VERIFY_EXTERNAL_VOLUME 함수를 호출합니다.

SELECT SYSTEM$VERIFY_EXTERNAL_VOLUME('my_s3_external_volume');
Copy

다음 단계

외부 볼륨을 구성하면 Iceberg 테이블을 생성할 수 있습니다.