Snowflake Open Catalog에 대한 비공개 연결 엔드포인트 관리: AWS

Snowflake Open Catalog 계정의 카탈로그 데이터가 Amazon S3(Amazon Simple Storage Service) 저장소 버킷에 저장되어 있는 경우 다음 단계에 따라 아웃바운드 네트워크 트래픽에 대한 비공개 연결을 설정합니다.

Open Catalog 계정 에 비공개 연결을 활성화하려면 일반적으로 이 항목의 설정 단계를 한 번만 완료하면 됩니다. 그런 다음 Open Catalog 계정에서 각 카탈로그 에 대해 아웃바운드 비공개 연결을 활성화합니다.

예를 들어 설정 단계를 완료한 다음 나중에 새 catalog1 카탈로그를 만드는 경우 일반적으로 catalog1 에 대한 아웃바운드 비공개 연결만 활성화하면 됩니다. 카탈로그에 비공개 연결을 활성화하는 방법에 대한 지침은 카탈로그에 아웃바운드 비공개 연결 활성화 섹션을 참조하십시오. 단, catalog1 에서 버킷 정책을 업데이트하지 않은 저장소를 사용하는 경우에는 해당 버킷에 대해 버킷 정책 업데이트도 수행해야 합니다. 버킷 정책을 업데이트하면 버킷에 대한 네트워크 액세스를 비공개 연결 엔드포인트로 제한합니다.

전제 조건

  • Open Catalog 계정과 외부 클라우드 저장소는 모두 동일한 AWS 리전에서 호스팅되어야 합니다.

  • AWS 에서 IAM 권한이 있어야 Iceberg 테이블이 저장된 AWS 저장소 버킷의 버킷 정책을 수정할 수 있습니다. 자세한 내용은 AWS 설명서의 Amazon S3 버킷 정책 을 참조하십시오.

  • 서드 파티 쿼리 엔진 또는 Snowflake 엔진은 AWS PrivateLink 또는 S3 게이트웨이 엔드포인트를 통해 저장소 버킷에 액세스할 수 있어야 합니다. 자세한 내용은 AWS 설명서의 인터페이스 엔드포인트 구성 을 참조하십시오. 그렇지 않으면 아웃바운드 비공개 연결을 활성화하면 엔진은 버킷에 저장된 테이블을 읽거나 쓸 수 없지만 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 조직 이름(<조직 이름>)을 찾으려면 계정의 조직 계정 이름 찾기 <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
    
    Copy

    응답은 다음과 같이 표시되어야 합니다.

    +------------------------------------------------------------------------------+
    | 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                                                   |
    +------------------------------------------------------------------------------+
    
    Copy

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>_ 섹션을 참조하십시오.

  1. myopencatalogconnection 연결을 기본값으로 설정하는 이 예시를 따르십시오.

    snow connection set-default myopencatalogconnection
    
    Copy
  2. 올바른 사용자와 역할을 사용하고 있는지 확인하려면 다음을 실행합니다.

    snow sql -q "Select current_user(); select current_role();"
    
    Copy

    응답은 Open Catalog 사용자 이름을 반환해야 하며 CURRENT ROLE 은 POLARIS_ACCOUNT_ADMIN 이어야 합니다.

    +----------------+
    | CURRENT_USER() |
    |----------------|
    | JSMITH        |
    +----------------+
    select current_role();
    +-----------------------+
    | CURRENT_ROLE()        |
    |-----------------------|
    | POLARIS_ACCOUNT_ADMIN |
    +-----------------------+
    
    Copy

2단계: 비공개 연결 엔드포인트 프로비저닝하기

Open Catalog용 Snowflake CLI 연결을 사용하여 다음 시스템 함수를 호출합니다.

  1. 저장소 버킷에 대한 비공개 연결 엔드포인트를 프로비저닝하려면 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 시스템 함수를 호출하십시오.

  2. 비공개 연결 엔드포인트를 사용할 준비가 되었는지 확인하려면 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 시스템 함수를 호출하십시오.

지침은 Snowflake 설명서의 비공개 연결 엔드포인트 프로비저닝하기 섹션을 참조하십시오. 지침은 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();".

참고

프로비저닝하는 이 비공개 연결 엔드포인트를 사용하여 Open Catalog 계정이 호스팅되는 동일한 AWS 리전 내에 위치한 모든 저장소 버킷에 대한 액세스 권한을 부여할 수 있으며, 다른 리전에 위치한 버킷에 대한 액세스 권한을 부여하는 데는 사용할 수 없습니다.

예: 비공개 연결 엔드포인트 프로비저닝하기

다음 예에서는 Amazon S3에 대한 외부 액세스 권한이 있는 PrivateLink 를 만들어 us-west-2 리전에 대한 엔드포인트를 구성합니다.

SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
  'com.amazonaws.us-west-2.s3',
  '*.s3.us-west-2.amazonaws.com'
);
Copy

3단계: 버킷 정책 업데이트하기

이전 단계에서 만든 비공개 연결 엔드포인트로 저장소 버킷에 대한 네트워크 액세스를 제한하려면 AWS 에서 저장소 버킷에 대한 버킷 정책을 업데이트하십시오. 지침은 AWS 설명서의 특정 VPCendpoint 에 대한 액세스 제한하기 섹션을 참조하십시오. 버킷 정책의 <vpce-id> 에 이전 단계에서 만든 비공개 연결 엔드포인트의 ID 를 지정합니다.

필요한 경우 Open Catalog에 연결하려는 추가 버킷에 대해 이 단계를 반복합니다.

중요

버킷을 추가한 후 브라우저에서 버킷 및 버킷 정책에 액세스할 수 있는 권한이 버킷 정책에 포함되어 있는지 확인하십시오. 그렇지 않으면 버킷 정책을 업데이트한 후 브라우저에서 버킷 또는 버킷 정책에 액세스할 수 없게 됩니다.

이 예제 버킷 정책을 사용하면 브라우저에서 버킷 및 버킷 정책에 액세스할 수 있습니다.

{
    "Version": "2012-10-17",
    "Id": "Policy1234567890123",
    "Statement": [
        {
            "Sid": "Deny public access",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:SourceVpc": "vpc-*"
                }
            }
        },
        {
            "Sid": "Access-to-specific-VPCE-only",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
            ],
            "Resource": [
                "arn:aws:s3:::my-bucket",
                "arn:aws:s3:::my-bucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpce": "vpce-xxxxxxxxxxx"
                }
            }
        }
    ]
}
Copy

카탈로그에 대한 아웃바운드 비공개 연결 활성화하기

이 섹션에서는 카탈로그 오픈 계정에서 카탈로그에 대한 아웃바운드 비공개 연결을 사용하도록 설정하는 방법에 대해 설명합니다.

1단계: 비공개 연결 활성화하기

새 카탈로그 또는 기존 카탈로그에 비공개 연결을 활성화할 수 있습니다.

새 카탈로그에 비공개 연결 활성화하기

Amazon Simple Storage Service(Amazon S3)를 사용하여 카탈로그 만들기의 지침을 따르십시오. 카탈로그의 경우 Private Link 토글이 활성화되어 있는지 확인합니다.

참고

카탈로그의 테이블이 저장된 버킷에 대한 버킷 정책을 업데이트하지 않은 경우 버킷 정책 업데이트하기 섹션을 참조하십시오. 버킷 정책을 업데이트하면 저장소 버킷에 대한 네트워크 액세스를 비공개 연결 엔드포인트로 제한할 수 있습니다.

기존 카탈로그에 비공개 연결 활성화하기

  1. Open Catalog에 로그인합니다.

  2. 탐색 메뉴에서 카탈로그 를 선택합니다.

  3. 카탈로그 목록에서 비공개 연결을 활성화할 카탈로그를 선택합니다.

  4. 카탈로그 세부 정보 탭에서 PrivateLink 토글을 활성화됨 으로 설정합니다.

2단계: 쿼리 엔진을 사용하여 테이블 만들기

쿼리 엔진이 AWS PrivateLink 를 통해 카탈로그에 연결되어 있는지 확인하려면 쿼리 엔진을 사용하여 테이블을 만들고 여기에 데이터를 삽입합니다. 테이블에 데이터를 삽입할 수 없는 경우 쿼리 엔진에 AWS PrivateLink 를 구성하지 않은 것일 수 있습니다.

문제 해결하기

이 섹션에서는 네트워크 트래픽에 대한 아웃바운드 비공개 연결 관련 문제에 대한 문제 해결 방법을 제공합니다.

Open Catalog에서 테이블의 스키마를 볼 수 없음

증상

Open Catalog에서 카탈로그의 테이블(예: catalog1)을 선택하지만 다음과 같은 오류 메시지가 표시됩니다. “No permissions to access this resource.”

원인

AWS 에서 VPC 엔드포인트를 통해 네트워크 트래픽을 라우팅하도록 버킷 정책을 성공적으로 업데이트했습니다. 그러나 Open Catalog에서는 이 카탈로그에 대해 비공개 연결을 활성화하지 않았으므로 Open Catalog에서 버킷에 액세스할 수 없습니다.

해결책

카탈로그에 비공개 연결을 활성화합니다(예: catalog1). 자세한 내용은 카탈로그에 비공개 연결 활성화하기 섹션을 참조하십시오.