Snowflake Postgres 네트워킹¶
기본적으로, Snowflake Postgres는 선택한 클라우드 리전의 새 비공개 네트워크 내부에 각각의 새 인스턴스를 프로비저닝합니다. 각 네트워크는 동일한 클라우드 리전의 다른 네트워크와 별개이며 비공개입니다.
기본적으로, Snowflake Postgres 인스턴스는 수신 연결을 허용하지 않습니다. Snowflake Postgres 인스턴스와의 트래픽은 다음 두 가지 방법 중 하나로 활성화할 수 있습니다.
Postgres Ingress 및/또는 Egress 네트워크 규칙이 포함된 네트워크 정책을 연결합니다. 이 옵션은 모든 계정에서 사용할 수 있습니다.
클라우드 벤더 비공개 네트워크와의 Private Link 연결을 구성합니다. 이 옵션은 Business Critical 에디션 이상 계정에서 사용할 수 있습니다.
Snowflake Postgres 네트워크 정책 및 규칙¶
Snowflake Postgres 인스턴스에 대한 네트워크 정책 및 :ref:`네트워크 규칙<label-network_policy_network_rules>`은 몇 가지 주요 차이점을 제외하고 다른 Snowflake 리소스와 거의 동일하게 작동합니다.
네트워크 정책은 Snowflake 계정, 사용자 및 기타 보안 통합과 동일한 방식으로 Snowflake Postgres 인스턴스와 함께 사용하기 위해 :ref:`활성화<label-associating_network_policies>`할 필요가 없습니다. Snowflake Postgres 인스턴스에 대한 네트워크 정책은 대신 인스턴스 생성 시 인스턴스에 직접 연결됩니다. 기존 인스턴스의 네트워크 정책도 변경될 수 있습니다.
Snowflake Postgres 인스턴스는 네트워크 정책의 ALLOWED_NETWORK_RULE_LIST 및 BLOCKED_NETWORK_RULE_LIST 속성만 사용합니다. BLOCKED_IP_LIST 및 ALLOWED_IP_LIST 속성은 무시됩니다.
Snowflake Postgres 인스턴스에 대한 네트워크 규칙은 Postgres Ingress 또는 Postgres Egress 모드를 사용해야 합니다. 이러한 모드를 사용하는 규칙은 현재 IPv4 유형으로 제한됩니다.
네트워크 정책에서 Postgres Ingress 또는 Postgres Egress 이외의 다른 모드를 사용하는 네트워크 규칙은 이를 사용하는 Snowflake Postgres 인스턴스에서 무시됩니다.
권한¶
새 네트워크 정책을 생성하려면 Snowflake 사용자에게 CREATE NETWORK POLICY ON ACCOUNT 권한이 있어야 합니다.
새 네트워크 규칙을 생성하려면 Snowflake 사용자에게 CREATE NETWORK RULE ON SCHEMA 권한이 있어야 합니다.
기존 네트워크 정책을 Snowflake 인스턴스에 연결하려면 Snowflake 사용자가 네트워크 정책을 소유하거나 정책 소유자가 해당 정책에 대한 사용 권한을 :doc:`GRANT</sql-reference/sql/grant-privilege>`해야 합니다.
Snowflake Postgres 네트워크 정책 및 규칙의 예제¶
다음과 같이 가정해 보겠습니다.
사무실에서 새 Postgres 인스턴스로 수신되는 트래픽을 허용하려고 하며, 사무실 네트워크 라우터의 공용 IP 주소는 ``23.206.171.35``입니다.
또한 Postgres 외부 데이터 래퍼 연결을 통해 새 Postgres 인스턴스에서 사무실 Postgres 서버로의 발신 트래픽을 허용하려고 합니다.
이를 위해 Postgres Ingress 네트워크 규칙과 Postgres Egress 네트워크 규칙을 모두 사용하여 새 정책을 생성합니다.
두 개의 새 네트워크 규칙을 생성합니다. 두 경우 모두에 대한 유일한 네트워크 식별자로 ``23.206.171.35/32``를 사용하며, 하나의 경우에는 “Postgres Ingress”를 :ui:`Mode`로 사용하고 다른 경우에는 “Postgres Egress”를 :ui:`Mode`로 사용합니다.
두 가지 새로운 규칙이 모두 Allowed 목록에 포함된 새 네트워크 정책을 생성합니다.
탐색 메뉴에서 Postgres 를 선택합니다.
+ Create 을 선택합니다.
원하는 인스턴스 구성 세부 정보를 선택할 때 Network policy 선택 상자에서 새 정책을 선택해야 합니다. 아래 이미지에서는 이름이 ``OFFICE POLICY EXAMPLE``인 정책을 선택했습니다.
-- Create the ingress rule
CREATE NETWORK RULE PG_INGRESS_FROM_OFFICE
TYPE = IPV4
VALUE_LIST = ('23.206.171.35/32')
MODE = POSTGRES_INGRESS;
-- Create the egress rule
CREATE NETWORK RULE PG_EGRESS_TO_OFFICE
TYPE = IPV4
VALUE_LIST = ('23.206.171.35/32')
MODE = POSTGRES_EGRESS;
-- Create a new policy using both rules in its allowed list
CREATE NETWORK POLICY "OFFICE POLICY EXAMPLE"
ALLOWED_NETWORK_RULE_LIST = ('PG_INGRESS_FROM_OFFICE', 'PG_EGRESS_TO_OFFICE')
COMMENT = 'Traffic to/from the office.';
-- Create a new Snowflake Postgres instance that uses the new policy
CREATE POSTGRES INSTANCE SNOWFLAKE_POSTGRES_DEMO
COMPUTE_FAMILY = 'STANDARD_L'
STORAGE_SIZE_GB = 50
AUTHENTICATION_AUTHORITY = POSTGRES
POSTGRES_VERSION = 17
NETWORK_POLICY = '"OFFICE POLICY EXAMPLE"';
인스턴스 생성 시 수신 규칙 만들기¶
Snowflake Postgres 인스턴스를 만들기 전에 네트워크 정책과 규칙을 생성하는 대신, Snowsight를 통해 Snowflake Postgres 인스턴스를 만들 때 Postgres Ingress 규칙을 사용하여 정책을 생성할 수 있습니다.
탐색 메뉴에서 Postgres 를 선택합니다.
Postgres Instances 페이지에서 오른쪽 상단의 Create 버튼을 선택합니다.
인스턴스 구성을 선택하되 Network policy 선택 항목은 비워 둡니다.
Create`를 선택하면 새 대화 상자에 ``snowflake_admin`` Postgres 사용자의 :doc:`연결 자격 증명</user-guide/snowflake-postgres/connecting-to-snowflakepg>`이 표시됩니다. 해당 자격 증명을 안전한 위치에 저장한 후 :ui:`Continue to network settings`를 선택합니다.
Network Settings 대화 상자(아래 표시)에 IP주소 및/또는 Postgres Ingress 규칙을 생성할 CIDR 값을 입력하고 Enter 키를 눌러 각 값을 목록에 추가합니다.
Details 섹션을 확장하여 필요한 경우 새 네트워크 규칙 및/또는 정책 이름을 편집합니다.
:ui:`Save`를 선택하여 새 Postgres Ingress 네트워크 정책을 생성하고 정책이 활성화되면 인스턴스에 자동으로 연결하도록 합니다.
Snowflake Postgres Private Link¶
Snowflake Postgres 인스턴스용 Private Link는 Business Critical 에디션 계정 이상에서 사용할 수 있습니다.
Snowflake Postgres 인스턴스용 Private Link를 활성화하려면 먼저 지침에 따라 클라우드 벤더 계정과 Snowflake 계정 사이에서 Private Link를 활성화합니다.
권한¶
Snowflake Postgres 인스턴스용 Private Link를 활성화하려면 Snowflake 사용자에게 다음 권한이 있어야 합니다.
MANAGE POSTGRES PRIVATE CONNECTIVITY ON ACCOUNT
주어진 각 Snowflake Postgres 인스턴스에 대한 OWNERSHIP 또는 MANAGE 권한
Snowflake Postgres 인스턴스용 Private Link 설정하기¶
클라우드 벤더와 Snowflake 계정 및 필수 권한 간에 Private Link를 활성화한 후에는 다음과 같이 인스턴스별로 Snowflake Postgres 인스턴스용 Private Link를 활성화할 수 있습니다.
Private Link 연결 외에 인스턴스에 대한 네트워크 정책 규칙을 설정하지 않으려면 New instance 대화 상자에서 :ui:`Network Security option`의 Private Link를 선택합니다. 네트워크 정책을 설정하거나 사용하려면 대신 :ui:`Network policy`를 선택하고 네트워크 정책에 대한 이전 지침을 따릅니다.
인스턴스가 활성화되면 Private Link를 활성화할 수 있습니다.
탐색 메뉴에서 :ui:`Postgres`를 선택한 후 인스턴스를 선택합니다.
인스턴스의 Instance details 창에서 Private Link 섹션의 편집 아이콘을 선택합니다.
클라우드 서비스 공급자에 대한 Private Link 설정을 확인하는 확인 대화 상자가 표시됩니다. Enable 을 선택합니다. 이 단계를 완료하는 데 최대 10분이 걸릴 수 있습니다.
Snowflake Postgres 인스턴스에 대해 Private Link가 활성화되면 새 Private Link 연결을 설정할 수 있습니다.
탐색 메뉴에서 :ui:`Postgres`를 선택하고 인스턴스를 선택하여 세부 정보 페이지를 확인합니다.
오른쪽의 Private Link 섹션에서 편집 아이콘을 선택하여 Private Link 창을 확장합니다(아래 표시).
표시된 :ui:`Service address`를 사용하여 클라우드 벤더 계정의 비공개 네트워크에서 Private Link 연결을 요청합니다.
Snowflake Postgres 인스턴스의 세부 정보 페이지를 새로 고칩니다. 이제 Private Link 창에는 :ui:`check mark`(수락) 또는 :ui:`x mark`(거부)가 선택되지 않은 상태로 요청에 대한 새 연결 항목이 표시됩니다. 수락하려면 :ui:`check mark`를 선택합니다.
클라우드 서비스 공급자의 비공개 네트워크에 있는 호스트에서 Snowflake Postgres 인스턴스에 연결할 수 없습니다.
다음과 같이 Snowflake SQL을 사용하여 활성 인스턴스에 대해 Private Link를 활성화할 수 있습니다.
ALTER POSTGRES INSTANCE <name> ENABLE PRIVATELINK;
해당 비동기 작업에는 최대 10분이 걸릴 수 있습니다. 해당 상태를 추적하려면 DESCRIBE POSTGRES INSTANCE에 의해 반환된 ``privatelink_service_identifier``의 값을 확인합니다.
DESCRIBE POSTGRES INSTANCE <name>;
SHOW POSTGRES INSTANCES의 출력에서 인스턴스 항목에 대해 동일한 ``privatelink_service_identifier``가 표시됩니다.
SHOW POSTGRES INSTANCES;
privatelink_service_identifier 열에 NULL이 아닌 값이 표시되면 해당 식별자를 사용하여 Snowflake 계정에 대한 Private Link 연결을 활성화한 클라우드 서비스 공급자 계정의 비공개 네트워크에서 Private Link 연결을 요청할 수 있습니다.
클라우드 벤더 계정의 비공개 네트워크에서 연결 요청을 한 후 Snowflake Postgres 인스턴스에 대한 요청을 찾습니다.
SHOW PRIVATELINK CONNECTIONS IN POSTGRES INSTANCE <name>;
이 명령은 다음과 같은 열을 반환합니다.
endpointconnection_idstatus
연결 요청은 클라우드 벤더 비공개 네트워크의 Private Link endpoint 값 및 status 값이 ``pending``인 항목이 됩니다.
ALTER POSTGRES INSTANCE 명령을 실행하여 하나 이상의 보류 중인 Private Link 연결 요청을 수락할 수 있습니다.
ALTER POSTGRES INSTANCE [IF EXISTS] <name> AUTHORIZE PRIVATELINK CONNECTIONS = ('<connection_id' [ , ... ]);
이 명령을 실행하여 하나 이상의 보류 중이거나 이전에 승인된 Private Link 연결 요청을 취소할 수 있습니다.
ALTER POSTGRES INSTANCE [IF EXISTS] <name> REVOKE PRIVATELINK CONNECTIONS = ('<connection_id' [ , ... ]);