Snowflake Open Catalog의 비공개 연결 엔드포인트 관리: Azure¶
카탈로그의 데이터가 Azure 클라우드 저장소에 저장되는 아웃바운드 네트워크 트래픽에 대한 아웃바운드 비공개 연결을 설정하려면 다음 단계를 따르세요.
전제 조건¶
Open Catalog 계정과 외부 클라우드 저장소는 모두 Azure에서 호스팅되어야 합니다.
특정 비공개 연결 엔드포인트를 통해 라우팅되는 요청을 허용하도록 Azure 저장소 계정에 대한 방화벽 규칙을 설정하려면 권한이 필요합니다.
서드 파티 쿼리 엔진 또는 Snowflake 엔진은 Azure Private Link를 통해 Azure 저장소에 액세스할 수 있어야 합니다. 이 액세스 권한을 부여하는 옵션은 다음과 같습니다.
Azure Storage용 비공개 엔드포인트를 사용합니다. 지침은 Azure 설명서의 Azure Storage에 비공개 엔드포인트 사용 섹션을 참조하세요.
Azure 서비스 엔드포인트를 사용합니다.
방화벽 설정을 변경하여 쿼리 엔진이 실행되는 컴퓨터의 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>
)을 확인하려면계정의 조직 및 계정 이름 찾기<https://docs.snowflake.com/en/user-guide/admin-account-identifier.html#label-account-name-find>
_ 섹션을 참조하세요.Snowflake Open Catalog 계정 이름(
<my-snowflake-open-catalog-account-name>
)을 확인하려면Snowflake Open Catalog 계정의 계정 이름 찾기<https://other-docs.snowflake.com/en/opencatalog/find-account-name>
_ 섹션을 참조하세요.
중요
이 연결을 생성하려면 서비스 관리자 권한을 가진 Open Catalog 사용자여야 합니다. 서비스 관리자 권한에 대한 정보는 서비스 관리자 역할 섹션을 참조하세요.
Snowflake Open Catalog용 Snowflake CLI 연결 추가¶
비공개 연결을 활성화하려는 Snowflake Open Catalog 계정에 대한 연결을 추가하세요.
다음 값을 사용하여
연결을 추가<https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#add-a-connection>
_하세요. 다른 모든 매개 변수에 대해서는 Enter 키를 눌러 해당 매개 변수의 값 지정을 건너뜁니다.연결 구성 매개 변수
값
이 연결의 이름
연결에 대한 이름을 지정합니다(예:
myopencatalogconnection
).계정 이름
다음 형식으로 Snowflake 조직 이름을 지정한 후 Open Catalog 계정 이름을 입력합니다.
<orgname>-<my-snowflake-open-catalog-account-name>
.예:
ABCDEFG-MYACCOUNT1
.이 이름들을 찾으려면
시작하기 전에
_ 섹션을 참조하세요.사용자 이름
Open Catalog용 사용자 이름을 지정합니다(예:
jsmith
).비밀번호[선택 사항]
Open Catalog 연결을 생성할 때 이 매개 변수는 선택 사항이 아닙니다.
Open Catalog의 비밀번호를 입력합니다(예:
MyPassword123456789
).연결의 역할[선택 사항]
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 연결을 기본 연결로 설정할 수 있습니다. 기본 연결에 대한 자세한 내용은 기본 연결 설정<https://docs.snowflake.com/en/developer-guide/snowflake-cli/connecting/configure-connections#set-the-default-connection>
_ 섹션을 참조하세요.
다음 예시를 따라
myopencatalogconnection
연결을 기본값으로 설정합니다.snow connection set-default myopencatalogconnection
올바른 사용자 및 역할을 사용하고 있는지 확인하려면 다음을 실행합니다.
snow sql -q "Select current_user(); select current_role();"
응답은 귀하의 Open Catalog 사용자 이름을 반환해야 하며, CURRENT ROLE은 POLARIS_ACCOUNT_ADMIN이어야 합니다.
+----------------+ | CURRENT_USER() | |----------------| | JSMITH | +----------------+ select current_role(); +-----------------------+ | CURRENT_ROLE() | |-----------------------| | POLARIS_ACCOUNT_ADMIN | +-----------------------+
2단계: 저장소 계정에 대한 비공개 연결 엔드포인트 프로비저닝¶
Open Catalog 계정과 함께 사용할 각 저장소 계정에 대해 비공개 연결 엔드포인트를 프로비저닝해야 합니다.
참고
Data Lake Storage 저장소 계정(blob 저장소 계정 아님)에 대한 비공개 연결 엔드포인트를 프로비저닝하는 경우, 2개의 비공개 연결 엔드포인트를 프로비저닝해야 합니다. 이러한 엔드포인트 중 하나는 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 테이블을 저장하는 경우, 계정에 대해 2개의 비공개 연결 엔드포인트를 프로비저닝해야 합니다. 자세한 내용은 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 Storage를 사용하여 카탈로그 만들기의 지침을 따릅니다. 카탈로그에 대해 Private Link 토글이 활성화됨 상태인지 확인하세요.
기존 카탈로그에 대한 비공개 연결 활성화¶
Open Catalog에 로그인합니다.
탐색 메뉴에서 카탈로그를 선택합니다.
카탈로그 목록에서 비공개 연결을 사용하도록 설정할 카탈로그를 선택합니다.
카탈로그 세부 정보 탭에서 PrivateLink 토글을 활성화됨으로 설정하세요.
5단계: 저장소 계정에 대한 비공개 엔드포인트 연결 승인¶
연결을 승인하려면 먼저 카탈로그에서 테이블을 만들거나 로드해야 합니다. 이러한 작업 중 하나를 수행하면 Azure에서 비공개 엔드포인트 연결 승인 요청이 생성됩니다.
쿼리 엔진을 사용하여 다음 중 하나를 수행합니다.
카탈로그에 저장된 테이블이 없는 경우 Open Catalog 계정에서 테이블을 생성하려면 쿼리 엔진을 사용하여 테이블에 데이터를 삽입하세요.
카탈로그에 저장된 테이블이 있는 경우 테이블을 로드해 보세요.
참고
테이블에 데이터를 삽입할 수 없으면 쿼리 엔진에 대해 Azure Private Link를 구성하지 않은 것일 수 있습니다. 그렇다면 쿼리 엔진이 Azure Private Link를 통해 카탈로그에 연결되지 않습니다. 이 문제를 해결하려면 쿼리 엔진에 대해 Azure Private Link를 구성하세요. 자세한 내용은 Azure 설명서의 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 지원에 문의하세요.