SYSTEM$GET_PRIVATELINK

SYSTEM$GET_PRIVATELINK는 현재 계정이 Snowflake 서비스에 대한 프라이빗 연결(private connectivity)을 사용하도록 승인되었는지 확인하는 시스템 함수예요.

출처: Snowflake SQL Reference

본문

카테고리: System 함수 (System Control)

반환값:

  • TRUE: 현재 Snowflake 계정이 Snowflake 서비스에 대한 프라이빗 연결을 사용하도록 승인(즉 활성화)되었어요.
  • FALSE: 현재 Snowflake 계정이 Snowflake 서비스에 대한 프라이빗 연결을 사용하도록 승인되지 않았어요(즉 비활성화).

구문 (Syntax)

AWS:

SYSTEM$GET_PRIVATELINK( '<aws_id>' , '<federated_token>' )

Azure:

SYSTEM$GET_PRIVATELINK( '<private-endpoint-resource-id>' , '<federated_token>' )

GCP:

SYSTEM$GET_PRIVATELINK( '<gcp_project_id>' , '<access_token>' )

인자 (Arguments)

'<aws_id>' — Amazon Web Services(AWS) 계정을 고유하게 식별하는 12자리 식별자를 문자열로 지정해요.

'<private-endpoint-resource-id>' — Microsoft Azure(Azure)의 프라이빗 엔드포인트를 고유하게 식별하는 식별자를 문자열로 지정해요.

'<federated_token>' — 페더레이션 사용자에 대한 접근 자격 증명을 담은 페더레이션 토큰 값을 문자열로 지정해요. 이 값을 얻으려면 Snowflake 계정을 호스팅하는 클라우드 플랫폼에 해당하는 명령을 실행해요. 플랫폼이 제공하는 명령줄 도구를 사용해요:

  • Snowflake on AWS:
aws sts get-federation-token --name sam
  • Snowflake on Azure:
az account get-access-token --subscription <SubscriptionID>

여기서 **SubscriptionID**는 구독의 고유 식별자예요. 예: 13c... 이 값을 얻으려면 명령줄 환경에서 다음 Azure CLI 명령을 실행해요:

az account list --output table

SubscriptionID 열의 출력 값을 기록해요(이 예시에서는 잘려 있음):

Name     CloudName   SubscriptionId                        State    IsDefault
-------  ----------  ------------------------------------  -------  ----------
MyCloud  AzureCloud  13c...                                Enabled  True

'<gcp_project_id>' — Google Cloud(GCP) 프로젝트를 고유하게 식별하는 식별자를 문자열로 지정해요.

'<access_token>' — Google Cloud 사용자에 대한 접근 자격 증명을 담은 접근 토큰 값을 문자열로 지정해요.

사용 시 유의사항 (Usage notes)

  • 계정 관리자(즉 ACCOUNTADMIN 역할을 가진 사용자)만 이 함수를 실행할 수 있어요.
  • 이 함수는 AWS 또는 Azure의 Snowflake 계정에서 사용할 수 있어요. Google Cloud Platform(GCP)은 현재 지원되지 않아요.
  • SYSTEM$AUTHORIZE_PRIVATELINK 함수를 호출해 Snowflake 계정이 Snowflake 서비스에 대한 프라이빗 연결을 사용하도록 활성화해요.
  • SYSTEM$REVOKE_PRIVATELINK 함수를 호출해 Snowflake 계정이 Snowflake 서비스에 대한 프라이빗 연결을 사용하지 않도록 비활성화해요.

예시 (Examples)

AWS의 Snowflake 계정에 대해 AWS PrivateLink가 승인되었는지 확인해요. 이 예시에서는 값이 잘려 있어요.

USE ROLE ACCOUNTADMIN;

select SYSTEM$GET_PRIVATELINK(
    '185...',
    '{
      "Credentials": {
          "AccessKeyId": "ASI...",
          "SecretAccessKey": "enw...",
          "SessionToken": "Fwo...",
          "Expiration": "2021-01-07T19:06:23+00:00"
      },
      "FederatedUser": {
          "FederatedUserId": "185...:sam",
          "Arn": "arn:aws:sts::185...:federated-user/sam"
      },
      "PackedPolicySize": 0
  }'
  );

Azure의 Snowflake 계정에 대해 Azure Private Link가 승인되었는지 확인해요. 이 예시에서는 값이 잘려 있어요.

USE ROLE ACCOUNTADMIN;

select SYSTEM$GET_PRIVATELINK(
  '/subscriptions/26d.../resourcegroups/sf-1/providers/microsoft.network/privateendpoints/test-self-service',
  'eyJ...');

GCP의 Snowflake 계정에 대해 Google Cloud Private Service Connect가 승인되었는지 확인해요:

USE ROLE ACCOUNTADMIN;

select SYSTEM$GET_PRIVATELINK(
  'my-gcp-project-id',
  'ya29.a0AcM612zT4pJaXdYfwgY8aiMoDE9W_xkqQ20coFTB1TJcImKDPo...'
  );

더 알아보기