Snowflake Open Catalog용 프라이빗 연결 엔드포인트 관리: Azure
Snowflake Open Catalog용 프라이빗 연결 엔드포인트 관리: Azure
Business Critical 기능 — 이 기능은 Business Critical(이상)이 필요해요. 업그레이드 문의는 Snowflake 지원에 문의하세요.
일반적으로 사용 가능(GA) — 정부 리전에서는 사용할 수 없어요.
카탈로그의 데이터가 Azure 클라우드 스토리지에 저장될 때 아웃바운드 네트워크 트래픽용 아웃바운드 프라이빗 연결을 설정하려면 다음 단계를 따르세요.
출처: Manage private connectivity endpoints for Snowflake Open Catalog: Azure
본문
사전 요구 사항
- Open Catalog 계정과 외부 클라우드 스토리지가 둘 다 Azure에 호스팅되어 있어야 함.
- 특정 프라이빗 연결 엔드포인트를 통해 라우팅되는 요청을 허용하도록 Azure 스토리지 계정의 방화벽 규칙을 설정할 권한.
- 서드파티 쿼리 엔진 또는 Snowflake 엔진이 Azure Private Link를 통해 Azure 스토리지에 접근해야 함. 이 접근을 부여하는 옵션은 다음과 같아요:
- Azure Storage용 프라이빗 엔드포인트 사용. 지침은 Azure 문서의 Azure Storage용 프라이빗 엔드포인트 사용을 참조.
- Azure Service 엔드포인트 사용.
- 쿼리 엔진이 실행되는 머신의 IP 주소를 허용 목록에 추가하도록 방화벽 설정을 변경.
그렇지 않으면 아웃바운드 프라이빗 연결을 활성화하면 엔진이 버킷에 저장된 테이블을 읽거나 쓸 수 없고, Open Catalog도 버킷에 메타데이터를 읽거나 쓸 수 없어요.
1단계: Open Catalog용 Snowflake CLI 연결 만들기
Open Catalog에서 프라이빗 연결을 설정하려면 Open Catalog용 Snowflake CLI 연결이 필요해요. 이 연결을 만들려면 다음 단계를 따르세요. 아직 Snowflake CLI가 설치되지 않았다면 Snowflake CLI 설치를 참조하세요.
시작하기 전에
Open Catalog용 Snowflake CLI 연결을 만들려면 전체 Open Catalog 계정 식별자가 필요해요. 계정 식별자에는 Snowflake 조직 이름과 Open Catalog 계정 이름이 포함돼요. 예: <orgname>.<my-snowflake-open-catalog-account-name>.
- Snowflake 조직 이름(
<orgname>)을 찾으려면 계정의 조직 및 계정 이름 찾기를 참조하세요. - Snowflake Open Catalog 계정 이름(
<my-snowflake-open-catalog-account-name>)을 찾으려면 Snowflake Open Catalog 계정의 계정 이름 찾기를 참조하세요.
이 연결을 만들려면 서비스 관리자 권한이 있는 Open Catalog 사용자여야 해요. 서비스 관리자 권한에 대한 정보는 서비스 관리자 역할을 참조하세요.
Snowflake Open Catalog용 Snowflake CLI 연결 추가
프라이빗 연결을 활성화하려는 Snowflake Open Catalog 계정에 대한 연결을 추가하세요.
- 다음 값으로 연결 추가를 수행하세요. 다른 모든 매개변수는
Enter를 눌러 값을 지정하지 않고 건너뛰세요.
| 연결 구성 매개변수 | 값 |
|---|---|
| Name for this connection | 연결의 이름을 지정. 예: myopencatalogconnection. |
| Account name | <orgname>-<my-snowflake-open-catalog-account-name> 형식으로 Snowflake 조직 이름 다음에 Open Catalog 계정 이름을 지정. 예: ABCDEFG-MYACCOUNT1. 이 이름을 찾으려면 시작하기 전에를 참조. |
| Username | Open Catalog 사용자 이름을 지정. 예: jsmith. |
| Password [optional] | Open Catalog용 연결을 만들 때 이 매개변수는 선택이 아닙니다. Open Catalog 비밀번호를 입력. 예: MyPassword123456789. |
| Role for the connection [optional] | Open Catalog용 연결을 만들 때 이 매개변수는 선택이 아닙니다. POLARIS_ACCOUNT_ADMIN을 입력해야 해요. |
Snowflake CLI 연결 테스트
- CLI 연결을 테스트하려면
myopencatalogconnection의 연결을 테스트하는 다음 예제를 따르세요:snow connection test -c myopencatalogconnection
응답은 다음과 같아야 해요:
+------------------------------------------------------------------------------+
| key | value |
|----------------------------+-------------------------------------------------|
| Connection name | myopencatalogconnection |
| Status | OK |
| Host | ABCDEFG-MYACCOUNT1.snowflakecomputing.com |
| Account | ABCDEFG-MYACCOUNT1 |
| User | jsmith |
| Role | POLARIS_ACCOUNT_ADMIN |
| Database | not set |
| Warehouse | not set |
+------------------------------------------------------------------------------+
Snowflake Open Catalog용 Snowflake CLI 연결을 기본값으로 설정
사용 중인 연결에 항상 필요한 POLARIS_ACCOUNT_ADMIN 역할이 부여되도록 보장하려면 Open Catalog용으로 만든 Snowflake CLI 연결을 기본 연결로 설정할 수 있어요. 기본 연결에 대한 자세한 내용은 label-cli_set_default_connection을 참조하세요.
myopencatalogconnection연결을 기본값으로 설정하는 다음 예제를 따르세요:snow connection set-default myopencatalogconnection- 올바른 사용자와 역할을 사용 중인지 확인하려면 다음을 실행하세요:
응답은 Open Catalog 사용자 이름을 반환해야 하며 CURRENT ROLE은 POLARIS_ACCOUNT_ADMIN이어야 해요.snow sql -q "Select current_user(); select current_role();"
+----------------+
| CURRENT_USER() |
|----------------|
| JSMITH |
+----------------+
select current_role();
+-----------------------+
| CURRENT_ROLE() |
|-----------------------|
| POLARIS_ACCOUNT_ADMIN |
+-----------------------+
2단계: 스토리지 계정용 프라이빗 연결 엔드포인트 프로비저닝
Open Catalog 계정과 함께 사용하려는 각 스토리지 계정에 대해 프라이빗 연결 엔드포인트를 프로비저닝해야 해요.
Data Lake Storage 스토리지 계정(blob 스토리지 계정이 아닌)용 프라이빗 연결 엔드포인트를 프로비저닝하는 경우 프라이빗 연결 엔드포인트를 두 개 프로비저닝해야 해요. 하나는 DFS 엔드포인트용이고 다른 하나는 blob 엔드포인트용이에요. 예시는 Data Lake Storage 스토리지 계정용 프라이빗 연결 엔드포인트 프로비저닝을 참조하세요.
Open Catalog용 Snowflake CLI 연결을 사용해 다음 시스템 함수를 호출하세요:
- 스토리지 계정용 프라이빗 연결 엔드포인트를 프로비저닝하려면 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출하세요.
- 프라이빗 연결 엔드포인트를 사용할 준비가 됐는지 확인하려면 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 시스템 함수를 호출하세요.
지침은 Snowflake 문서의 프라이빗 연결 엔드포인트 관리: Azure를 참조하세요. 지침이 Snowflake Open Catalog 계정이 아닌 Snowflake 계정을 가리키지만 Open Catalog에서도 과정은 동일해요.
- 지침에 언급된 ACCOUNTADMIN 역할 대신 POLARIS_ACCOUNT_ADMIN 역할을 사용해야 해요.
- 기본값으로 설정한 Snowflake CLI 연결에 POLARIS_ACCOUNT_ADMIN 역할이 부여되지 않았다면 명령에 다음 문을 포함해야 해요:
USE ROLE POLARIS_ACCOUNT_ADMIN; - 명령에서
$바로 앞에 슬래시/를 삽입해 이스케이프해야 해요. 예:snow sql -q "SELECT SYSTEM\$GET_PRIVATELINK_CONFIG();".
예제: Data Lake Storage 스토리지 계정용 프라이빗 연결 엔드포인트 프로비저닝
Data Lake Storage 스토리지 계정을 사용해 Iceberg 테이블을 저장한다면 계정에 대해 프라이빗 연결 엔드포인트를 두 개 프로비저닝해야 해요. 자세한 내용은 Azure 문서의 프라이빗 엔드포인트 만들기를 참조하세요.
예를 들어:
blob 엔드포인트용 프라이빗 엔드포인트 프로비저닝
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'/subscriptions/mysubscriptionid/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/storagedemo',
'storagedemo.blob.core.windows.net',
'blob'
);
DFS 엔드포인트용 프라이빗 엔드포인트 프로비저닝
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
'/subscriptions/mysubscriptionid/resourceGroups/mystorage/providers/Microsoft.Storage/storageAccounts/storagedemo',
'storagedemo.dfs.core.windows.net',
'dfs'
);
3단계: 스토리지 계정에 대한 공개 네트워크 접근 구성
Azure에서 스토리지 계정의 네트워킹 설정으로 이동해 공개 네트워크 접근을 구성하세요. 이 접근을 다음 중 하나로 구성할 수 있어요:
- 모든 공개 네트워크 접근 비활성화
- 지정한 가상 네트워크와 IP 주소를 제외한 모든 공개 네트워크 접근 비활성화
자세한 내용은 Azure 문서의 Azure Storage 방화벽 및 가상 네트워크 구성을 참조하세요.
4단계: 카탈로그에 대해 프라이빗 연결 활성화
이 단계에서 Open Catalog 계정의 카탈로그에 대해 프라이빗 연결을 활성화해요. 새 카탈로그 또는 기존 카탈로그에 대해 프라이빗 연결을 활성화할 수 있어요:
새 카탈로그에 대해 프라이빗 연결 활성화
Azure 스토리지를 사용해 카탈로그 만들기의 지침을 따르세요. 카탈로그에 대해 Private Link 토글이 Enabled인지 확인하세요.
기존 카탈로그에 대해 프라이빗 연결 활성화
- Open Catalog에 로그인하세요.
- 탐색 메뉴에서 Catalogs를 선택하세요.
- 카탈로그 목록에서 프라이빗 연결을 활성화할 카탈로그를 선택하세요.
- Catalog Details 탭에서 PrivateLink 토글을 Enabled로 설정하세요.
5단계: 스토리지 계정에 대한 프라이빗 엔드포인트 연결 승인
연결을 승인하려면 먼저 카탈로그에서 테이블을 만들거나 로드해야 해요. 이러한 작업 중 하나를 수행하면 Azure에 프라이빗 엔드포인트 연결 승인 요청이 생성돼요.
- 쿼리 엔진을 사용해 다음 중 하나를 수행하세요:
- 카탈로그에 저장된 테이블이 없다면 쿼리 엔진을 사용해 원하는 Open Catalog 계정에 테이블을 만들고 데이터를 삽입하세요.
- 카탈로그에 저장된 테이블이 있다면 테이블을 로드해 보세요.
테이블에 데이터를 삽입할 수 없다면 쿼리 엔진에 대해 Azure Private Link를 구성하지 않았을 수 있어요. 그렇다면 쿼리 엔진이 Azure Private Link를 통해 카탈로그에 연결되지 않은 것이에요. 이 문제를 해결하려면 쿼리 엔진에 대해 Azure Private Link를 구성하세요. 자세한 내용은 Azure Storage용 프라이빗 엔드포인트 사용 및 자습서: Azure Private Endpoint를 사용해 스토리지 계정에 연결을 참조하세요.
- Azure에서 다음 단계를 따르세요:
- 스토리지 계정의 네트워킹 설정으로 이동하세요.
- 프라이빗 엔드포인트 연결에 대한 연결 요청을 승인하세요. 테이블을 만들었다면 요청을 승인할 때 테이블이 Azure 스토리지 계정에 생성돼요.
문제 해결
이 섹션은 네트워크 트래픽의 아웃바운드 프라이빗 연결 문제에 대한 문제 해결을 제공해요.
Open Catalog에서 테이블의 스키마를 볼 수 없음
증상
Open Catalog에서 카탈로그(예: catalog1)의 테이블을 선택하지만 "No permissions to access this resource." 오류 메시지를 받아요.
원인
Azure에서 VPC 엔드포인트를 통해 네트워크 트래픽을 라우팅하도록 스토리지 계정의 네트워크 설정을 성공적으로 업데이트했어요. 하지만 Open Catalog에서 이 카탈로그에 대해 프라이빗 연결을 활성화하지 않아 Open Catalog가 버킷에 접근할 수 없어요.
해결 방법
카탈로그(예: catalog1)에 대해 프라이빗 연결을 활성화하세요. 자세한 내용은 카탈로그에 대해 프라이빗 연결 활성화를 참조하세요.
쿼리 엔진에 "Failed to get subscoped credentials" 오류 메시지 수신
증상
쿼리 엔진을 사용해 테이블에서 데이터를 읽거나 쓰려 하지만 "Failed to get subscoped credentials." 오류 메시지를 받아요.
원인
스토리지 계정을 잠갔지만 프라이빗 연결 엔드포인트를 프로비저닝하지 않았거나 Open Catalog 계정에서 프라이빗 연결을 활성화하지 않았어요. 그 결과 Open Catalog가 하위 범위 자격 증명을 생성해 쿼리 엔진에 반환할 수 없으므로 쿼리 엔진이 스토리지에 접근할 수 없어요.
해결 방법
다음 단계를 따르세요:
- 아직 프라이빗 연결 엔드포인트를 프로비저닝하지 않았다면 스토리지 계정용 프라이빗 연결 엔드포인트 프로비저닝을 참조하세요.
- 아직 카탈로그에 대해 프라이빗 연결을 활성화하지 않았다면 카탈로그에 대해 프라이빗 연결 활성화를 참조하세요.
SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 명령 실행 시 'Business Critical' 오류
증상
Snowflake CLI 연결에서 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 명령을 실행했지만 "Business Critical or higher edition is required for this operation. Please upgrade to the valid edition and then retry." 오류 메시지와 함께 실패해요.
원인
Open Catalog 계정의 에디션이 Business Critical이 아니에요. 프라이빗 연결 엔드포인트 프로비저닝을 포함한 아웃바운드 네트워크 트래픽용 프라이빗 연결을 활성화하려면 Snowflake Open Catalog 계정의 에디션이 Business Critical이어야 해요.
해결 방법
Open Catalog 계정을 Business Critical로 업그레이드하는 도움을 받으려면 Snowflake 지원에 문의하세요.