SYSTEM$GET_STAGE_PRIVATELINK_AUTHORIZED_ENDPOINTS
SYSTEM$GET_STAGE_PRIVATELINK_AUTHORIZED_ENDPOINTS (스테이지 프라이빗링크 인가 엔드포인트 목록)
이전 SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS 호출을 통해 현재 계정의 내부 스테이지에 접근하도록 인가된 프라이빗 연결 소스 목록을 반환해요. 이 함수를 사용해 현재 어떤 소스가 인가되었는지 확인해요.
반환되는 목록의 정확한 내용은 Snowflake 계정을 호스팅하는 클라우드 제공자에 따라 달라져요:
- Microsoft Azure에서 함수는 인가된 프라이빗 엔드포인트와 각 엔드포인트 연결의 승인 상태를 반환해요.
- Google Cloud에서 함수는 인가된 VPC 네트워크와 각 VPC 네트워크를 통해 내부 스테이지에 도달할 수 있는 IP CIDR 범위를 반환해요.
출처: Snowflake SQL Reference - SYSTEM$GET_STAGE_PRIVATELINK_AUTHORIZED_ENDPOINTS
본문
구문
SYSTEM$GET_STAGE_PRIVATELINK_AUTHORIZED_ENDPOINTS()
인자
없음.
반환 값
객체 목록을 담은 JSON 형식 문자열을 반환해요. 각 객체의 필드는 클라우드 제공자에 따라 달라져요. 현재 계정에 인가된 소스가 없으면 함수는 빈 목록([])을 반환해요.
Azure
각 객체는 하나의 인가된 프라이빗 엔드포인트 연결을 설명하며 다음 문자열 필드를 포함해요:
connection_name: Azure 프라이빗 엔드포인트 연결의 이름.endpoint_resource_id: 프라이빗 엔드포인트의 Azure 리소스 ID.status: 프라이빗 엔드포인트 연결의 승인 상태(예: Approved, Pending 또는 Rejected).
Google Cloud
각 객체는 하나의 인가된 VPC 네트워크를 설명하며 다음 문자열 필드를 포함해요:
vpc_network_id: 내부 스테이지에 도달하도록 인가된 Google Cloud VPC 네트워크의 정규화 경로(예:projects/<project>/global/networks/<network>).allowed_ip_cidr_ranges: 내부 스테이지에 접근할 수 있는 VPC 네트워크 안의 IP CIDR 범위. 현재 모든 항목이0.0.0.0/0을 반환해요.
Google Cloud에서 0.0.0.0/0이 공개 인터넷의 모든 소스에서 오는 트래픽이 허용된다는 뜻은 아니에요. 이 함수는 SYSTEM$AUTHORIZE_STAGE_PRIVATELINK_ACCESS를 통해 명시적으로 인가된 VPC 네트워크만 반환하므로, 여기서 0.0.0.0/0은 인가된 VPC 네트워크 내부에서 발생한 모든 트래픽이 내부 스테이지에 도달할 수 있음을 의미해요.
사용 참고 사항
- 계정 관리자(즉 ACCOUNTADMIN 역할을 가진 사용자)만 이 함수를 호출할 수 있어요.
- 이 함수는 Microsoft Azure와 Google Cloud에서 지원돼요. Amazon Web Services(AWS)에서는 지원되지 않아요. AWS에서는 내부 스테이지에 대한 프라이빗 연결이 리전의 전체 Amazon S3 서비스에 대한 VPC 엔드포인트를 통해 이루어지기 때문에(개별 스토리지 계정이나 버킷에 대한 것이 아님), 반환할 인가된 프라이빗 연결 소스의 계정별 목록이 없어요. AWS에서 내부 스테이지 프라이빗 연결이 작동하는 방식에 대한 자세한 내용은 내부 스테이지용 AWS VPC 인터페이스 엔드포인트를 참고해요.
액세스 제어 요구 사항
계정 관리자(ACCOUNTADMIN 역할을 가진 사용자)만 이 함수를 호출할 수 있어요.
예시
Azure와 Google Cloud 모두에서 동일한 문이 사용돼요. 반환되는 JSON 형식은 계정을 호스팅하는 클라우드 제공자에 따라 달라져요.
USE ROLE ACCOUNTADMIN;
SELECT SYSTEM$GET_STAGE_PRIVATELINK_AUTHORIZED_ENDPOINTS();
샘플 출력(실제 반환 값은 한 줄 JSON 문자열이며, 아래 예시는 가독성을 위해 예쁘게 출력됨).
Azure:
[
{
"connection_name": "<storage_account>.4d008fc9-9c62-42fd-b5d7-f7f1786654df",
"endpoint_resource_id": "/subscriptions/<sub_id>/resourceGroups/<rg>/providers/Microsoft.Network/privateEndpoints/test-pe",
"status": "Approved"
}
]
Google Cloud:
[
{
"allowed_ip_cidr_ranges": "0.0.0.0/0",
"vpc_network_id": "projects/<project>/global/networks/<network_1>"
},
{
"allowed_ip_cidr_ranges": "0.0.0.0/0",
"vpc_network_id": "projects/<project>/global/networks/<network_2>"
}
]
개별 필드를 조사하려면 JSON 결과를 펼치세요. 예를 들어 Azure에서는:
SELECT
value:connection_name::string AS connection_name,
value:endpoint_resource_id::string AS endpoint_resource_id,
value:status::string AS status
FROM TABLE(
FLATTEN(
input => PARSE_JSON(
SYSTEM$GET_STAGE_PRIVATELINK_AUTHORIZED_ENDPOINTS()
)
)
);
Google Cloud에서는:
SELECT
value:vpc_network_id::string AS vpc_network_id
FROM TABLE(
FLATTEN(
input => PARSE_JSON(
SYSTEM$GET_STAGE_PRIVATELINK_AUTHORIZED_ENDPOINTS()
)
)
);