클라이언트 연결 리디렉션(Client Redirect)

클라이언트 연결 리디렉션(Client Redirect)

Business Critical 기능

Business Critical 에디션 이상이 필요해요. 업그레이드 문의는 Snowflake 지원에 연락하세요.

출처: Redirecting client connections

본문

Client Redirect를 사용하면 애플리케이션의 연결 설정을 변경하지 않고도 클라이언트 연결을 다른 리전의 Snowflake 계정으로 리디렉션할 수 있어요. 비즈니스 연속성과 재해 복구를 위해 계정 복제 기능과 함께 Client Redirect를 사용할 수 있어요. 또한 계정을 다른 리전이나 클라우드 플랫폼으로 마이그레이션할 때 애플리케이션 설정 변경을 최소화하는 데에도 Client Redirect를 사용할 수 있어요.

Client Redirect 소개

Client Redirect는 Snowflake 연결(connection) 객체를 통해 구현돼요. 연결 객체는 Snowflake 클라이언트로 Snowflake에 연결할 때 사용하는 보안 연결 URL을 저장해요.

연결 URL의 호스트 이름은 공통 도메인 이름과 함께 조직 이름과 연결 객체 이름으로 구성돼요:

organization_name-connection_name.snowflakecomputing.com

이 호스트 이름은 연결할 계정을 지정하지 않는다는 점에 유의하세요. 계정 관리자는 해당 계정의 연결을 **기본 연결(primary connection)**로 지정해 사용할 계정을 결정해요. 연결 URL로 Snowflake에 연결하면 기본 연결이 있는 계정에 연결되는 거예요.

리전이나 클라우드 플랫폼에서 장애가 발생해 기본 연결이 있는 계정이 영향받으면, 관리자는 다른 리전이나 클라우드 플랫폼의 다른 계정에 있는 연결을 승격(promote)하여 기본 연결로 삼을 수 있어요.

장애 기간 동안에도 같은 연결 URL을 사용해 Snowflake에 계속 연결할 수 있어요. Snowflake는 연결 URL을 새로 승격된 연결이 있는 계정(장애 영향 범위 밖의 계정)으로 해석해요.

주의 기본 및 보조 연결을 저장하는 Snowflake 계정은 서로 다른 리전에 호스팅되어야 해요.

Client Redirect 흐름

  • Client Redirect 구성의 단계를 완료해 클라이언트 연결용 연결 URL을 만들어요. 여기에는 기본 연결과 연결된 보조 연결(들) 만들기가 포함돼요.
  • 연결 URL을 사용해 연결하도록 Snowflake 클라이언트를 업데이트해요. 연결 URL 사용하기에는 지원되는 클라이언트 목록과 연결 세부 정보가 포함돼 있어요.
  • 기본 연결이 있는 리전에서 서비스 장애가 발생하면, 클라이언트 연결 리디렉션의 단계를 완료해 연결 URL을 업데이트하여 보조 연결로 리디렉션해요.
  • 장애가 해결되면 클라이언트 연결 리디렉션 단계를 완료해 원래 기본 연결로 클라이언트 연결을 되돌려요.

다음 다이어그램은 같은 조직이지만 서로 다른 리전(Region A와 Region B)에 있고, 같은 또는 다른 클라우드 플랫폼에 있는 두 계정의 Client Redirect 흐름을 보여줘요.

기본 연결은 Region A의 Account 1에 있어요. 연결 URL을 사용하는 Snowflake 클라이언트는 Account 1에 연결돼요.

Region A에서 서비스 장애가 발생하면 클라이언트 연결이 실패해요.

Region B의 Account 2에 있는 연결이 승격되어 기본 연결로 동작해요. 연결 URL을 사용하는 Snowflake 클라이언트는 이제 Account 2에 연결돼요.

예시

다음 SQL 문은 클라이언트 리디렉션 워크플로를 보여줘요. 각 단계는 이 항목의 뒷부분에서 자세히 설명해요.

정상 클라이언트 연결: Client Redirect 구성
소스 계정에 기본 연결 만들기

새 기본 연결을 만들고 조직의 다른 계정으로의 장애 조치(failover)를 활성화해요. 장애 조치를 활성화하는 각 계정은 기본 연결이 있는 계정과 다른 리전에 있어야 해요.

장애 조치를 활성화할 각 계정에 대해 SHOW REPLICATION ACCOUNTS 출력의 account_name 열을 기록해 두세요.

소스 계정에서 다음 문을 실행해요.

-- 새 기본 연결 만들기
CREATE CONNECTION myconnection;

-- 복제가 활성화된 조직의 계정 보기
SHOW REPLICATION ACCOUNTS;

-- 기본 연결에 대한 장애 조치 계정 구성
ALTER CONNECTION myconnection
  ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;

-- 연결 세부 정보 보기
SHOW CONNECTIONS;

Snowflake 계정에 대해 Snowflake 서비스에 대한 프라이빗 연결이 활성화되어 있다면, 연결 URL에 대한 DNS CNAME 레코드를 만들고 관리해야 해요. 자세한 내용은 Snowflake 서비스에 대한 프라이빗 연결 DNS 설정 구성을 참고하세요.

대상 계정에서 실행

기본 연결에 연결된 보조 연결을 만들어요. 보조 연결의 이름은 기본 연결과 동일해야 해요.

CREATE CONNECTION myconnection
  AS REPLICA OF myorg.myaccount1.myconnection;

Snowflake 계정에 대해 Snowflake 서비스에 대한 프라이빗 연결이 활성화되어 있다면, 연결 URL에 대한 DNS CNAME 레코드를 만들거나 업데이트해야 해요. 자세한 내용은 Snowflake 서비스에 대한 프라이빗 연결 DNS 설정 수정을 참고하세요.

소스 리전에서 장애 발생: 장애 조치(Failover)

기본 연결이 있는 리전에서 장애가 발생하면, 다른 리전의 보조 연결을 승격하여 기본 연결로 삼아요.

대상 계정에서 실행
  • 새 소스 계정으로 승격하려는 대상 계정에 로그인해요.

  • 보조 연결을 승격하여 기본 연결로 삼아요:

    ALTER CONNECTION myconnection PRIMARY;
    

Snowflake 계정에 대해 프라이빗 연결이 활성화되어 있다면 연결 URL에 대한 DNS CNAME 레코드를 만들거나 업데이트해야 해요. 자세한 내용은 Snowflake 서비스에 대한 프라이빗 연결 DNS 설정 수정을 참고하세요.

장애 해결: 장애 복귀(Failback)

장애가 해결되면 원래 기본 연결을 다시 기본 연결로 승격해요.

이전에 소스 계정이었던 대상 계정에서 실행
  • 장애 이전에 소스 계정으로 동작했던 대상 계정에 로그인해요.

  • 보조 연결을 다시 기본 연결로 승격해요:

    ALTER CONNECTION myconnection PRIMARY;
    

Snowflake 계정에 대해 프라이빗 연결이 활성화되어 있다면 연결 URL에 대한 DNS CNAME 레코드를 만들거나 업데이트해야 해요. 자세한 내용은 Snowflake 서비스에 대한 프라이빗 연결 DNS 설정 수정을 참고하세요.

Client Redirect 구성

이 섹션에서는 연결 그룹에서 기본 연결과 하나 이상의 보조 연결을 만드는 방법을 설명해요.

사전 요구 사항

계정에 Client Redirect 기능을 활성화하려면 조직 관리자가 두 개 이상의 계정에 대한 복제를 활성화해야 해요. 복제 활성화 방법은 사전 요구 사항: 조직의 계정에 복제 활성화를 참고하세요.

기본 연결 만들기

중요 시스템에서 조직이 생성될 때 Snowflake는 조직에 고유한 생성 이름을 할당했어요. 조직 이름은 연결 객체에 정의되고 Snowflake 클라이언트가 계정에 접근하기 위해 제출하는 연결 URL의 일부예요. 연결 객체를 만들기 전에 Snowflake의 조직 이름이 만족스러운지 확인하세요. 시스템에서 조직 이름을 변경하려면 Snowflake 지원에 연락하세요.

소스 계정에서 Snowsight 또는 SQL을 사용해 기본 연결을 만들 수 있어요.

Snowsight로 기본 및 보조 연결 만들기

Snowsight로 연결을 만들려면 다음 단계를 완료하세요.

주의

  • ACCOUNTADMIN 역할을 가진 사용자만 Snowsight로 연결을 만들 수 있어요.
  • ACCOUNTADMIN 역할을 가진 사용자로 대상 계정에 로그인되어 있어야 해요. 그렇지 않으면 로그인하라는 안내가 표시돼요.
  • 현재 계정이 프라이빗 연결을 사용한다면 Snowsight로 기본 및 보조 연결을 만들 수 없어요.
  1. Snowsight에 로그인해요.
  2. 탐색 메뉴에서 Admin › Accounts를 선택해요.
  3. Client Redirect를 선택해요.
  4. + Connection을 선택해요.
  5. Target Account를 선택해요.
  6. Connection Name 상자에 다음 요구 사항을 충족하는 연결 이름을 입력해요.
    • 영문자로 시작해야 하고, 문자, 십진 숫자(0-9), 밑줄(_)만 포함할 수 있어요.
    • 조직 내 연결 이름과 계정 이름 전체에서 고유해야 해요.
  7. Create Connection을 선택해요.
SQL로 기본 연결 만들기

주의 ACCOUNTADMIN 역할을 가진 사용자만 이 섹션의 SQL 명령을 실행할 수 있어요.

  1. CREATE CONNECTION 명령을 사용해 새 기본 연결을 만들어요. 각 기본 연결의 이름은 조직의 모든 연결 및 계정 이름에서 고유해야 해요. 연결 이름은 Snowflake 계정에 연결하는 데 사용되는 연결 URL의 일부로 포함돼요.

    예를 들어 myconnection이라는 연결을 만들려면:

    CREATE CONNECTION myconnection;
    
  2. ALTER CONNECTION … ENABLE FAILOVER TO ACCOUNTS 문을 사용해 이 기본 연결을 수정해요. 이 연결에 대한 장애 조치 옵션(즉, 보조 연결)을 저장할 수 있는 조직의 계정 목록을 쉼표로 구분해 제공해요. 보조 연결을 저장하는 계정은 기본 연결을 저장하는 계정과 다른 리전에 호스팅되어야 해요. Client Redirect는 리전 간에만 성공적으로 동작해요. 예를 들어 같은 리전의 account1에서 account2로 클라이언트 연결을 리디렉션하려 하면 클라이언트 리디렉션이 동작하지 않아요. 조직에서 복제가 활성화된 계정의 전체 목록을 보려면 SHOW REPLICATION ACCOUNTS를 실행해요.

    예를 들어 myorg 조직의 계정 myaccount2와 myaccount3이 각각 myconnection 연결에 대한 보조 연결을 저장하도록 허용해요:

    ALTER CONNECTION myconnection ENABLE FAILOVER TO ACCOUNTS myorg.myaccount2, myorg.myaccount3;
    
  3. SHOW CONNECTIONS 명령을 실행해 연결의 세부 정보를 확인해요.

    SHOW CONNECTIONS;
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    

각 대상 계정에 보조 연결 만들기

CREATE CONNECTION … AS REPLICA OF를 사용해 기본 연결에 연결된 보조 연결을 하나 이상의 계정에 만들어요. 보조 연결은 기본 연결 만들기의 ALTER CONNECTION … ENABLE FAILOVER TO ACCOUNTS 문에 지정된 계정에서만 만들 수 있다는 점에 유의하세요.

각 대상 계정에서 CREATE CONNECTION … AS REPLICA OF 문을 실행해 지정된 기본 연결의 복제본을 만들어요.

중요 각 보조 연결은 기본 연결과 같은 이름을 가져야 해요. 연결 이름은 연결 URL에 포함돼요.

보조 연결을 만들 대상 계정에서 이 섹션의 SQL 문을 실행해요.

주의 ACCOUNTADMIN 역할을 가진 사용자만 이 섹션의 SQL 명령을 실행할 수 있어요.

  1. SHOW CONNECTIONS 명령을 실행해 모든 연결을 확인해요. 기본 연결의 primary 열 값을 복사해요. 다음 단계에서 보조 연결을 만들 때 이 값을 사용해요.

    SHOW CONNECTIONS;
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    
  2. CREATE CONNECTION … AS REPLICA OF 명령을 실행해 보조 연결을 만들어요. 예를 들어 myorg.myaccount1.myconnection 기본 연결에 연결된 myconnection이라는 보조 연결을 만들어요. AS REPLICA OF 뒤에 기본 연결의 정규화된 이름(이전 단계의 SHOW CONNECTIONS 출력에서 복사한 이름)을 붙여 넣어요.

    CREATE CONNECTION myconnection AS REPLICA OF MYORG.MYACCOUNT1.MYCONNECTION;
    
  3. SHOW CONNECTIONS 명령을 실행해 보조 연결이 생성되었는지 확인해요.

    SHOW CONNECTIONS;
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    | AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION |                                     | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR2 |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    

역할에 FAILOVER 권한 부여 — 선택 사항

계정 관리자는 계정 역할에 연결 객체에 대한 FAILOVER 권한을 부여할 수 있어요. 이렇게 하면 계정 관리자가 아닌 사용자도 보조 연결을 승격하여 기본 연결로 삼을 수 있어요.

예를 들어 역할 my_failover_role에게 연결 myconnection을 장애 조치할 수 있는 능력을 부여하려면 대상 계정에서 다음 문을 실행해요.

GRANT FAILOVER ON CONNECTION myconnection TO ROLE my_failover_role;

이제 my_failover_role 역할을 가진 사용자는 장애 조치 시 보조 연결 myconnection을 기본 연결로 승격할 수 있어요.

USE ROLE my_failover_role;

ALTER CONNECTION myconnection PRIMARY;

클라이언트 연결 리디렉션에 대한 자세한 내용은 클라이언트 연결 리디렉션을 참고하세요.

Snowflake 서비스에 대한 프라이빗 연결 DNS 설정 구성

Snowflake 계정에 대해 Snowflake 서비스에 대한 프라이빗 연결이 활성화되어 있다면, 네트워크 관리자가 연결 URL에 대한 DNS 레코드를 만들고 관리해야 해요. 네트워크 관리자는 네트워크 아키텍처 구성에 따라 CNAME 레코드, 별칭(alias) 레코드 또는 별칭을 사용할 수 있어요. 일관성을 위해 다음 예시에서는 CNAME 레코드를 사용해요.

이 단계들은 AWS PrivateLink를 예로 들어요. Snowflake 계정이 Azure Private Link 또는 Google Cloud Private Service Connect를 사용한다면 단계는 동일해요.

  1. 클라이언트 리디렉션이 활성화된 계정 중 하나에서 SHOW CONNECTIONS를 실행해요. 예를 들어 myaccount1과 myaccount2에 AWS PrivateLink가 활성화되어 있다고 가정해 보세요.

    SHOW CONNECTIONS;
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    | snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
    |--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
    | AWS_US_WEST_2      | 2020-07-19 14:49:11.183 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
    | AWS_US_EAST_1      | 2020-07-22 13:52:04.925 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION |                                     | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR2 |
    +--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
    
  2. CONNECTION_URL 열 값을 기록하고, 프라이빗 연결과 OCSP를 지원하도록 두 개의 URL을 만들어요.

    • snowflakecomputing.com 바로 앞에 privatelink 세그먼트를 추가해요(이 예시에서는 myorg-myconnection.privatelink.snowflakecomputing.com).
    • URL 시작 부분에 ocsp 세그먼트를 추가해요(이 예시에서는 ocsp.myorg-myconnection.privatelink.snowflakecomputing.com).
  3. DNS 제공자가 제공하는 도구를 사용해 연결 URL과 OCSP URL에 대한 CNAME 레코드를 만들어요.

    • 수정된 CONNECTION_URL 열 값을 사용해 도메인(또는 별칭)을 설정해요.
    • 레코드가 연결 URL을 기본 Snowflake 계정 URL로 해석하도록 구성해요. 선택한 URL 형식에 따라 클라우드 리전과 AWS PrivateLink의 모든 URL 세그먼트를 포함하세요. 이것이 기본 계정 URL이며, 연결 URL에 대한 클라이언트 연결이 리디렉션되는 곳이에요.
    • OCSP URL이 Azure 계정의 프라이빗 엔드포인트 IP 주소 또는 AWS 계정의 프라이빗 엔드포인트 ID 값으로 해석되도록 레코드를 구성해요.
    • 장애 조치 시에는 Snowflake 서비스에 대한 프라이빗 연결 DNS 설정 수정에 표시된 대로 DNS 설정을 수동으로 업데이트하여 연결 URL이 보조 계정 URL을 가리키게 해야 해요. 마찬가지로 OCSP 설정을 프라이빗 엔드포인트 IP 주소 또는 프라이빗 엔드포인트 ID 값으로 업데이트해야 해요.

    예를 들어:

    myaccount1.us-west-2.privatelink.snowflakecomputing.com.
    ocsp.myaccount1.us-west-2.privatelink.snowflakecomputing.com.
    

    또는 조직 및 계정 이름 URL을 사용해요:

    myorg-myaccount1.privatelink.snowflakecomputing.com.
    ocsp.myorg-myaccount1.privatelink.snowflakecomputing.com.
    

    끝의 마침표(.)를 반드시 포함해야 한다는 점에 유의하세요.

사용자는 다음 연결 URL 형식을 사용해 Snowflake에 연결해요.

organization_name-connection_name.privatelink.snowflakecomputing.com

여기서:

  • organization_name — Snowflake 조직의 이름. 사용자가 연결하는 Snowflake 계정이 이 조직에 포함돼요.
  • connection_name — 연결 객체의 이름.

자세한 내용은 다음을 참고하세요.

Client Redirect와 리더 계정 구성

리더 계정(reader accounts)을 보유한 데이터 제공자라면 Client Redirect를 사용해 서비스 장애 발생 시 공유 데이터에 대한 접근을 계속 제공할 수 있어요. 소스 및 대상 리더 계정에 대한 연결 생성 구성 단계는 Client Redirect 구성 섹션에서 설명한 단계와 동일해요.

  • 리더 계정 두 개를 만들어요. 각 리더 계정은 다른 리전에 있어야 해요.
  • 소스 리더 계정에 기본 연결을 만들어요. 다른 리더 계정으로의 장애 조치를 활성화해요.
  • 소스 계정에서 장애 조치를 활성화한 리더 계정의 각 대상 계정에 보조 연결을 만들어요.
  • 연결 URL을 데이터 소비자와 공유해요.

서비스 장애가 발생하면 클라이언트 연결을 리디렉션해요. 연결 URL을 사용해 리더 계정에 연결하는 데이터 소비자들은 이제 새로 승격된 소스 리더 계정에 연결돼요.

연결 URL 사용하기

이 섹션에서는 다양한 Snowflake 클라이언트의 구성에서 연결 URL을 참조하기 위한 지침을 제공해요.

지원되는 Snowflake 클라이언트

Client Redirect는 Snowsight와 Classic Console에서 지원돼요. 또한 다음 Snowflake 클라이언트 버전(이상)이 Client Redirect를 지원해요.

Snowflake 클라이언트 최소 지원 버전
Snowflake CLI 3.0.0
SnowSQL 1.1.82
Snowflake Connector for Python 1.8.3
Snowflake Connector for Spark 모든 버전
Node.js Driver 1.2.0
Go Snowflake Driver 1.2.0
.NET Driver 1.0.0
JDBC Driver 3.8.4
ODBC Driver 2.19.4
Snowpark 모든 버전

Snowflake 클라이언트 구성

Snowflake에 연결할 때 연결 URL에 다음 호스트 이름을 사용해요.

호스트 이름: organization_name-connection_name.snowflakecomputing.com

여기서:

  • organization_name — Snowflake 조직의 이름.
  • connection_name — 연결 객체의 이름.

중요 Snowflake 서비스에 대한 프라이빗 연결 Snowflake 서비스에 대한 프라이빗 연결을 사용하는 고객은 snowflakecomputing.com 바로 앞에 privatelink 세그먼트를 URL에 추가해야 해요: organization_name-connection_name.privatelink.snowflakecomputing.com

Snowsight

app.snowflake.com의 계정 이름 필드에 다음을 입력해요.

<organization-name>-<connection-name>

예를 들어:

myorg-myconnection

조직-연결(organization-connection)로 로그인할 때 Snowsight는 현재 기본 연결의 특정 리전과 로케이터로 이동해요. 장애 기간 동안 연결이 리디렉션되면 사용자는 새 기본에 연결하기 위해 조직-연결로 다시 로그인해야 해요.

Classic Console

웹 브라우저에 다음 URL을 입력해요.

https://<organization_name>-<connection_name>.snowflakecomputing.com/

예를 들어:

https://myorg-myconnection.snowflakecomputing.com/
Snowflake CLI

Snowflake CLI config.toml 파일의 account 연결 파라미터에 연결 URL의 호스트 이름을 지정해요. config.toml 파일에 대한 자세한 내용은 Snowflake CLI 구성 문서를 참고하세요.

account = <organization_name>-<connection_name>
username = <username>
password = <password>

예를 들어:

[connections.myconnection]
account = "myaccount"
user = "jondoe"
password = "password"
SnowSQL

SnowSQL 구성 파일의 accountname 연결 파라미터에 연결 URL의 호스트 이름을 지정해요. 구성 파일에 대한 자세한 내용은 SnowSQL 구성 문서를 참고하세요.

accountname = <organization_name>-<connection_name>
username = <username>
password = <password>

예를 들어:

accountname = myorg-myconnection
username = jsmith
password = mySecurePassword
Snowflake Connector for Python

connect 함수를 호출할 때 account 연결 파라미터에 연결 URL의 호스트 이름을 지정해요. 자세한 내용은 Python Connector API 및 Python Connector 사용 문서를 참고하세요.

con = snowflake.connector.connect(
    account = <organization_name>-<connection_name>
    user = <username>
    password = <password>
)

예를 들어:

con = snowflake.connector.connect(
    account = myorg-myconnection
    user = jsmith
    password = mySecurePassword
)
Snowflake Connector for Spark

세션을 설정하는 데 사용하는 프로퍼티 파일이나 Map의 URL 프로퍼티에 연결 URL을 지정해요.

# Connector for Spark 세션을 설정하기 위한 프로퍼티 파일(텍스트 파일)
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com

예를 들어:

URL = https://myorg-myconnection.snowflakecomputing.com

Snowflake Connector for Spark 사용에 대한 자세한 내용은 Snowflake Connector for Spark 문서를 참고하세요. 구성 옵션은 커넥터용 구성 옵션 설정 문서를 참고하세요. 커넥터와 함께 사용하는 언어에 따라 Scala에서 커넥터 사용 또는 Python으로 커넥터 사용을 함께 참고하세요.

JDBC Driver

연결 문자열에 연결 URL의 호스트 이름을 지정해요. 자세한 내용은 JDBC Driver 구성 문서를 참고하세요.

jdbc:snowflake://<organization_name>-<connection_name>.snowflakecomputing.com/?user=<username>&password=<password>

예를 들어:

jdbc:snowflake://myorg-myconnection.snowflakecomputing.com/?user=jsmith&password=mySecurePassword
ODBC Driver

Server 연결 파라미터에 연결 URL의 호스트 이름을 지정해요. 연결 파라미터에 대한 자세한 내용은 ODBC 구성 및 연결 파라미터 문서를 참고하세요.

[ODBC Data Sources]
<account_name> = SnowflakeDSIIDriver

[<dsn_name>]
Description     = SnowflakeDB
Driver          = SnowflakeDSIIDriver
Locale          = en-US
SERVER          = <organization_name>-<connection_name>.snowflakecomputing.com

예를 들어:

[ODBC Data Sources]
myaccount = SnowflakeDSIIDriver

[client_redirect]
Description     = SnowflakeDB
Driver          = SnowflakeDSIIDriver
Locale          = en-US
SERVER          = myorg-myconnection.snowflakecomputing.com
Node.js Driver

account 연결 옵션에 연결 URL의 호스트 이름을 지정해요. 연결 파라미터에 대한 자세한 내용은 Node.js 옵션 참조 문서를 참고하세요.

var configuration = {
  username: '<username>',
  password: '<password>',
  account: <organization_name>-<connection_name>.
}

var connection = snowflake.createConnection(configuration)

예를 들어:

var configuration = {
  username: 'jsmith',
  password: 'mySecurePassword',
  account: myorg-myconnection.
}

var connection = snowflake.createConnection(configuration)
Go Snowflake Driver

Account 파라미터에 연결 URL의 호스트 이름을 지정해요. 자세한 내용은 Go Snowflake Driver 문서를 참고하세요.

cfg := &Config{
  Account: "<organization_name>-<connection_name>",
  User: "<username>",
  Password: "<password>"
}

dsn, err := DSN(cfg)

예를 들어:

cfg := &Config{
  Account: "myorg-myconnection",
  User: "jsmith",
  Password: "mySecurePassword"
}

dsn, err := DSN(cfg)
Snowpark
Snowpark Python

세션을 설정하는 데 사용하는 Python 사전(dict)의 account 연결 파라미터에 연결 URL의 호스트 이름을 지정해요. 세션 생성에 대한 자세한 내용은 Snowpark Python 세션 만들기 문서를 참고하세요.

connection_parameters = {
  "account": "<organization_name>-<connection_name>",
  "user": "<snowflake_user>",
  "password": "<snowflake_password>"
}

예를 들어:

connection_parameters = {
  "account": "myorg-myconnection",
  "user": "jsmith",
  "password": "mySecurePassword"
}
Snowpark Java

세션을 설정하는 데 사용하는 프로퍼티 파일이나 Map의 URL 프로퍼티에 연결 URL을 지정해요. 세션 생성에 대한 자세한 내용은 Snowpark Java 세션 만들기 문서를 참고하세요.

# Snowpark 세션을 설정하기 위한 프로퍼티 파일(텍스트 파일)
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com

예를 들어:

# Snowpark 세션을 설정하기 위한 프로퍼티 파일(텍스트 파일)
URL = https://myorg-myconnection.snowflakecomputing.com
Snowpark Scala

세션을 설정하는 데 사용하는 프로퍼티 파일이나 Map의 URL 프로퍼티에 연결 URL을 지정해요. 세션 생성에 대한 자세한 내용은 Snowpark Scala 세션 만들기 문서를 참고하세요.

# Snowpark 세션을 설정하기 위한 프로퍼티 파일(텍스트 파일)
URL = https://<organization_name>-<connection_name>.snowflakecomputing.com

예를 들어:

# Snowpark 세션을 설정하기 위한 프로퍼티 파일(텍스트 파일)
URL = https://myorg-myconnection.snowflakecomputing.com

인증과 Client Redirect

보안 통합이 복제되지 않는다면 사용자는 소스 계정과 각 대상 계정에 모두 프로비저닝되어야 해요.

연합 인증 및 SSO

각 대상 계정에서 연합 인증을 별도로 구성해요. SAML 2.0 연합 인증 구성의 설정 옵션을 사용해 아이덴티티 제공자(IdP) 세부 정보를 제공해요.

주의 Snowflake는 SAML 2.0 호환 아이덴티티 제공자(IdP)를 계정 URL이 아니라 연결 URL로 구성할 것을 권장해요. 이렇게 하면 장애 조치 시 사용자가 올바른 계정으로 리디렉션되기 때문이에요.

OAuth

각 대상 계정에 OAuth용 보안 통합 객체를 구성해요. 보안 통합 객체는 소스 계정의 객체와 동일해야 해요. 지침은 관련 항목을 참고하세요.

보안 통합 속성을 검색하려면 소스 계정의 각 보안 통합에 대해 DESCRIBE INTEGRATION 명령을 쿼리해요. 그런 다음 CREATE INTEGRATION 명령을 실행해 각 보안 통합을 대상 계정에 다시 만들어요.

OAuth 리디렉션 동작

Snowflake OAuth를 사용해 클라이언트 연결을 인증하고 연결 URL로 Snowflake에 연결하는 경우, 연결 URL이 다른 계정으로 리디렉션되면(예: 장애 조치 시) 다시 인증하라는 안내가 표시돼요. Snowflake OAuth 토큰은 특정 계정에서만 유효해요. 연결 URL이 다른 리전의 계정을 가리키도록 업데이트되면 기존 OAuth 토큰은 무효가 돼요.

장애 조치의 경우, 연결 URL이 새 계정으로 업데이트되면 클라이언트는 잘못된 OAuth 액세스 토큰 오류로 연결을 끊어요. 연결을 다시 설정하려면 권한에 대해 다시 인증하고 동의해야 해요.

주의 OAuth 보안 통합이 해당 계정으로 복제된다면 연결 URL이 새 계정으로 업데이트될 때 재인증 안내가 표시되지 않아요. 자세한 내용은 OAuth 보안 통합 복제를 참고하세요.

클라이언트 연결 리디렉션

기본 연결이 있는 리전에서 서비스 장애가 발생하면, 보조 연결을 저장하는 계정으로 클라이언트 연결을 리디렉션해요.

보조 연결을 기본 연결로 승격하기

리디렉션을 시작하려면 ALTER CONNECTION을 사용해 사용 가능한 리전의 보조 연결을 기본 연결로 승격해요. 동시에 이전 기본 연결이 보조 연결이 돼요.

  1. 기본 연결로 승격할 보조 연결이 있는 사용 가능한 리전의 대상 계정에 로그인해요.

  2. 이 섹션의 SQL 문을 실행해요.

    계정의 모든 연결 보기:

    SHOW CONNECTIONS;
    

    보조 연결을 기본 연결로 승격하기:

    ALTER CONNECTION myconnection PRIMARY;
    

    이전 보조 연결이 성공적으로 승격되었는지 확인하기:

    SHOW CONNECTIONS;
    

Snowflake 서비스에 대한 프라이빗 연결 DNS 설정 수정

클라이언트 연결을 보조 계정으로 리디렉션하려면 네트워크 관리자가 Snowflake 서비스에 대한 프라이빗 연결 DNS 설정 구성에서 만든 DNS 설정을 수정해야 해요.

DNS 제공자가 제공하는 도구를 사용해 연결 URL에 대한 DNS 설정을 수정해요.

목적지 호스트 이름을 새 기본 연결을 저장하는 계정의 전체 Snowflake 계정 URL로 설정해요. 여기에는 계정이 호스팅된 리전과 클라우드 플랫폼을 식별하고 AWS PrivateLink, Azure Private Link 또는 Google Cloud Private Service Connect 지원을 나타내는 추가 세그먼트가 포함돼요. 이것은 연결 URL에 대한 클라이언트 연결이 이제 리디렉션될 계정 이름이에요. DNS 설정을 업데이트할 때 프라이빗 연결 OCSP URL을 포함해야 해요.

예를 들어:

myaccount1.us-east-1.privatelink.snowflakecomputing.com.
ocsp.myaccount1.us-east-1.privatelink.snowflakecomputing.com.

(끝의 마침표를 반드시 포함해야 한다는 점에 유의하세요.)

주의 프라이빗 연결과 클라이언트 리디렉션을 Snowsight와 함께 동작하도록 구성할 수 있어요. DNS 업데이트에 SYSTEM$GET_PRIVATELINK_CONFIG 함수 출력의 Snowsight 값이 포함되도록 하세요. 자세한 내용은 프라이빗 연결과 Snowsight를 참고하세요.

연결 URL이 업데이트되었는지 확인하기

연결 URL이 업데이트되었는지 확인하려면 현재 연결의 리전을 확인할 수 있어요. 연결 URL을 사용해 Snowflake에 연결하고 CURRENT_REGION 함수를 실행해요.

SELECT CURRENT_REGION();

연결 수정하기

생성 후에 Snowsight 또는 SQL을 사용해 연결의 대상 계정을 편집할 수 있어요.

Snowsight로 연결의 대상 계정 수정하기

연결 생성 후 대상 계정을 수정할 수 있지만 연결 이름은 변경할 수 없어요.

주의

  • 연결을 편집하려면 다음 계정에 ACCOUNTADMIN 역할을 가진 사용자로 로그인해야 해요.
    • 기본 연결이 있는 소스 계정.
    • 보조 연결이 있는 현재 대상 계정.
    • 기본 연결에 추가하려는 새 대상 계정.
  • Snowsight로는 기본 연결에 대상 계정을 하나만 추가할 수 있어요. 추가 대상 계정을 추가하려면 ALTER CONNECTION 명령을 사용해요.
  • 현재 계정이 프라이빗 연결을 사용한다면 Snowsight로 연결의 대상 계정을 수정할 수 없어요.
  1. Snowsight에 로그인해요.
  2. 탐색 메뉴에서 Admin › Accounts를 선택해요.
  3. Client Redirect를 선택해요.
  4. 편집할 연결을 찾아요. 행의 마지막 열에서 More(…) 메뉴를 선택해요.

SQL로 연결의 대상 계정 수정하기

ALTER CONNECTION 명령을 사용해 기본 연결에 둘 이상의 대상 계정을 추가할 수 있어요. 예시는 예시를 참고하세요.

연결 삭제하기

Snowsight 또는 SQL을 사용해 연결을 삭제할 수 있어요.

Snowsight로 연결 삭제하기

주의 현재 계정이 프라이빗 연결을 사용한다면 Snowsight로 연결을 삭제할 수 없어요.

연결을 삭제하려면 기본 연결이 있는 소스 계정에 ACCOUNTADMIN 역할을 가진 사용자로 로그인해야 해요.

  1. Snowsight에 로그인해요.
  2. 탐색 메뉴에서 Admin › Accounts를 선택해요.
  3. Client Redirect를 선택해요.
  4. 삭제할 연결을 찾아요. 행의 마지막 열에서 More(…) 메뉴를 선택해요.
  5. Drop을 선택한 뒤 Drop Connection을 선택해요.

SQL로 연결 삭제하기

DROP CONNECTION 명령을 사용해 연결을 삭제할 수 있어요.

  1. 대상 계정의 모든 보조 연결을 삭제해요.
  2. 소스 계정의 기본 연결을 삭제해요.

예시는 예시를 참고하세요.

Client Redirect 모니터링

Snowsight 또는 SQL을 사용해 조직 계정의 Client Redirect 연결과 사용량을 모니터링할 수 있어요.

Snowsight로 Client Redirect 모니터링

주의

  • ACCOUNTADMIN 역할을 가진 사용자만 Snowsight로 연결 세부 정보를 볼 수 있어요.
  • ACCOUNTADMIN 역할을 가진 사용자로 대상 계정에 로그인되어 있어야 해요. 그렇지 않으면 로그인하라는 안내가 표시돼요.
  • 현재 계정이 프라이빗 연결을 사용한다면 Snowsight로 Client Redirect를 모니터링할 수 없어요.

Client Redirect 연결 세부 정보를 보려면 다음 단계를 완료하세요.

  1. Snowsight에 로그인해요.
  2. 탐색 메뉴에서 Admin › Accounts를 선택해요.
  3. Replication을 선택한 뒤 Client Redirect를 선택해요.
  4. 세션에 활성 웨어하우스가 없다면 웨어하우스를 선택하라는 안내가 표시돼요.
  5. 검색과 필터를 사용해 특정 연결을 모니터링해요.
    • 연결 이름으로 검색할 수 있어요. (검색) 상자에 연결 이름을 입력해 결과를 필터링해요.
    • Redirecting을 선택해 기본(To) 또는 보조(From) 연결로 결과를 필터링해요.
    • (계정) 메뉴를 선택해 계정 이름으로 결과를 필터링해요.

각 연결에 대해 다음 정보를 검토할 수 있어요.

열 설명
Name 연결 이름.
Redirecting 연결이 대상 계정으로 가는지(To) 소스 계정에서 오는지(From)와 계정 이름을 나타내요. 이 열에 destinations available(사용 가능한 대상)이 표시되면 보조 연결이 없는 거예요. 사용 가능한 대상 수는 기본 연결이 복제될 수 있는 대상 계정의 수를 나타내요. 보조 연결이 둘 이상이면 각 연결이 별도의 행에 표시돼요.
Usage 지난 7일 동안 연결이 사용된 횟수를 표시해요. 해당 계정의 사용량 데이터를 보려면 대상 계정에 로그인해야 해요.
Connection URL Snowflake 클라이언트와 함께 사용할 연결 URL. 열에서 연결 URL을 선택해 복사할 수 있어요.

SQL로 Client Redirect 모니터링

SHOW CONNECTIONS 명령과 LOGIN_HISTORY 함수를 사용해 연결 세부 정보를 보고 사용량을 모니터링할 수 있어요.

연결 세부 정보 보기

SHOW CONNECTIONS 명령을 사용해 연결 이름과 세부 정보를 검색할 수 있어요.

SHOW CONNECTIONS;

결과:

+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
| snowflake_region   | created_on                    | account_name        | name              | comment         | is_primary    | primary                       | failover_allowed_to_accounts        | connection_url                            | organization_name | account_locator   |
|--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------|
| AWS_US_WEST_2      | 2023-07-05 08:57:11.143 -0700 | MYORG.MYACCOUNT1    | MYCONNECTION      | NULL            | true          | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
| AWS_US_EAST_1      | 2023-07-08 09:15:11.143 -0700 | MYORG.MYACCOUNT2    | MYCONNECTION      | NULL            | false         | MYORG.MYACCOUNT1.MYCONNECTION | MYORG.MYACCOUNT2, MYORG.MYACCOUNT3  | myorg-myconnection.snowflakecomputing.com | MYORG             | MYACCOUNTLOCATOR1 |
+--------------------+-------------------------------+---------------------+-------------------+-----------------+---------------+-------------------------------+-------------------------------------+-------------------------------------------+-------------------+-------------------+
사용자가 사용한 연결 URL 확인하기

LOGIN_HISTORY, LOGIN_HISTORY_BY_USER 테이블 함수 계열을 쿼리해 지난 7일 동안 사용자의 로그인 활동을 확인해요. 출력은 어떤 사용자와 Snowflake 클라이언트가 연결 URL을 사용했는지를 나타내요. REPORTED_CLIENT_TYPE 및 REPORTED_CLIENT_VERSION 열은 Snowflake에 대한 각 연결에 사용된 클라이언트와 버전을 표시하고, CONNECTION 열은 사용된 연결 URL(있는 경우)을 표시해요.

주의 클라이언트가 계정 URL로 구성된 아이덴티티 제공자(IdP)로 인증하면, 인증 완료 후 IdP는 클라이언트를 계정 URL로 안내해요. 이 로그인 이벤트의 CONNECTION 열은 NULL이에요. 인증과 Client Redirect(이 항목)를 참고하세요.

예를 들어 현재 역할이 모니터링할 수 있는 모든 사용자의 지난 72시간 로그인 이벤트를 최대 100개 검색해요.

SELECT event_timestamp, user_name, client_ip, reported_client_type, is_success, connection
  FROM TABLE(INFORMATION_SCHEMA.LOGIN_HISTORY(
    DATEADD('HOURS',-72,CURRENT_TIMESTAMP()),
    CURRENT_TIMESTAMP()))
  ORDER BY EVENT_TIMESTAMP;

Client Redirect의 현재 제한 사항

  • 연결 URL과 OAuth 통합을 사용하는 클라이언트 연결은, 연결 URL이 다른 계정을 가리키도록 업데이트될 때 해당 계정으로 OAuth 보안 통합이 복제되지 않았다면 재인증이 필요해요. 자세한 내용은 OAuth 리디렉션 동작을 참고하세요.
  • 웹 브라우저는 브라우저 캐시 때문에 리디렉션에 몇 분이 걸릴 수 있어요. 리디렉션이 동작하는지 확인해야 한다면 다른 클라이언트로 Snowflake에 연결할 수 있어요. 또는 브라우저 캐시 문제를 피하기 위해 새 프라이빗 브라우저 창(예: Google Chrome의 시크릿 모드)을 열어요. 일부 브라우저는 프라이빗/시크릿 모드에서도 데이터를 캐시할 수 있다는 점에 유의하세요. 브라우저 캐시 사용을 피하려면 새 프라이빗 브라우저 창을 열기 전에 열려 있는 모든 프라이빗 브라우저 창과 탭을 닫아요.
  • Snowsight로는 대상 계정을 하나만 추가할 수 있어요. 허용된 장애 조치 계정 목록에 둘 이상의 대상 계정을 추가하려면 ALTER CONNECTION … ENABLE FAILOVER TO ACCOUNTS 명령을 사용해요.

더 알아보기