Snowflake 연결 관리하기

Snowflake CLI 를 사용하려면 먼저 연결을 정의해야 하며, 이는 Snowflake CLI 가 Snowflake에 연결하는 방법을 지정합니다. Snowflake CLI 는 다음과 같은 우선 순위 계층 구조를 사용하여 연결 매개 변수가 여러 위치에 정의되어 있을 때 사용할 값을 결정합니다

  • 명령줄 매개 변수

  • 특정 config.toml 매개 변수를 재정의하는 환경 변수(예: SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD)

  • 파일에 수동으로 정의하거나 snow connection add 명령을 사용하여 config.toml 파일에 정의한 연결

  • 일반 환경 변수(예: SNOWFLAKE_USER).

또한 --temporary-connection 옵션을 사용할 수 있으며, 이 옵션은 config.toml 에 정의할 필요가 없습니다.

조심

보안을 강화하기 위해 Snowflake는 SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD 또는 SNOWFLAKE_PASSWORD 환경 변수를 사용할 것을 강력히 권장합니다.

연결 정의

연결 정의는 다음과 같이 config.toml 파일의 [연결] 섹션에 저장됩니다.

[connections.myconnection]
account = "myaccount"
user = "jondoe"
password = "hunter2"
warehouse = "my-wh"
database = "my_db"
schema = "my_schema"
Copy

연결 정의는 Python용 Snowflake Connector 와 동일한 구성 옵션을 지원합니다. 또한 파일 상단의 default_connection_name 변수에 기본 연결을 지정할 수 있습니다. 이를 연결 정의에 포함시킬 수 없습니다. 예:

default_connection_name = "myconnection"

[connections.myconnection]
account = "myaccount"
...
Copy

참고

MacOS 및 Linux 시스템의 경우 Snowflake CLI 는 config.toml 파일의 파일 권한을 파일 소유자에 대해서만 읽기 및 쓰기로 제한하도록 요구합니다. 파일에 필요한 파일 권한을 설정하려면 다음 명령을 실행합니다.

chown $USER connections.toml
chmod 0600 connections.toml
Copy

Snowflake CLI 는 connections.toml 구성 파일도 지원합니다. 파일은 config.toml 파일과 동일한 디렉터리에 위치해야 하며 연결만 포함되어야 합니다. connections.toml 로 구성하려면 connections 을 제외한 다른 섹션 이름이 필요합니다. 예를 들어, [connections.myconnection][myconnection] 입니다.

참고

config.tomlconnections.toml 구성에 모두 연결이 포함되어 있는 경우 Snowflake CLI 는 connections.toml 의 구성만 사용합니다.

snow connection 명령을 사용한 Snowflake로의 연결 관리 또는 추가

snow connection 명령을 사용하면 Snowflake 연결을 생성, 관리 및 테스트할 수 있습니다.

연결 추가

새 연결을 생성하여 설정 파일 에 추가하려면 다음을 수행합니다.

  1. snow connection add 명령을 실행합니다.

snow connection add
Copy
  1. 메시지가 표시되면 필수 연결, 계정, 사용자 이름 매개 변수와 원하는 기타 선택 사항 매개 변수를 입력합니다.

Name for this connection: <connection-name>
Snowflake account name: <account-name>
Snowflake username: <user-name>
Snowflake password [optional]: <password-value>
Role for the connection [optional]: <role-name>
Warehouse for the connection [optional]: <warehouse-name>
Database for the connection [optional]: <database-name>
Schema for the connection [optional]: <schema-name>
Connection host [optional]: <host-name>
Connection port [optional]: <port-value>
Snowflake region [optional]: <region-name>
Authentication method [optional]: <authentication-method>
Path to private key file [optional]: <path-to-private-key>
Path to token file [optional]: <path-to-mfa-token>
Wrote new connection myconnection2 to config.toml

다음과 같이 명령줄에서 특정 매개 변수에 대한 값을 추가할 수도 있습니다.

snow --config-file config.toml connection add -n myconnection2 --account myaccount2 --user jdoe2
Copy

참고

명령이 종료되지만 오류가 발생한 경우(예: --private_key_file 옵션이 존재하지 않는 파일을 참조하는 경우) 연결은 config.toml 구성 파일에 저장되지 않습니다.

정의된 연결 나열

사용 가능한 연결을 나열하려면 다음과 같이 snow connection list 명령을 입력합니다.

snow connection list
Copy
+-------------------------------------------------------------------------------------------------+
| connection_name | parameters                                                       | is_default |
|-----------------+------------------------------------------------------------------+------------|
| myconnection    | {'account': 'myaccount', 'user': 'jondoe', 'password': '****',   | False      |
|                 | 'database': 'my_db', 'schema': 'my_schema', 'warehouse':         |            |
|                 | 'my-wh'}                                                         |            |
| myconnection2   | {'account': 'myaccount2', 'user': 'jdoe2'}                       | False      |
+-------------------------------------------------------------------------------------------------+

연결 테스트

연결이 Snowflake에 성공적으로 연결되는지 테스트하려면 다음과 유사하게 snow connection test 명령을 입력합니다.

snow connection test -c myconnection2
Copy
+--------------------------------------------------+
| key             | value                          |
|-----------------+--------------------------------|
| Connection name | myconnection2                  |
| Status          | OK                             |
| Host            | example.snowflakecomputing.com |
| Account         | myaccount2                     |
| User            | jdoe2                          |
| Role            | ACCOUNTADMIN                   |
| Database        | not set                        |
| Warehouse       | not set                        |
+--------------------------------------------------+

기본 연결 설정

snow connection set-default 명령을 사용하여 Snowflake CLI 에서 기본값으로 사용할 구성을 지정할 수 있으며, 설정된 경우 default_connection_name 구성 파일 및 SNOWFLAKE_DEFAULT_CONNECTION_NAME 변수를 재정의할 수 있습니다.

다음 예제에서는 기본 연결을 myconnection2 로 설정합니다.

snow connection set-default myconnection2
Copy
Default connection set to: myconnection2

참고

connections.tomlconfig.toml 파일이 둘 다 있는 경우 Snowflake CLI 는 connections.toml 에 정의된 연결만 사용합니다.

Snowflake 자격 증명에 환경 변수 사용

구성 파일 대신 시스템 환경 변수에서 Snowflake 자격 증명을 지정할 수 있습니다. 다음 일반 환경 변수는 연결 매개 변수를 지정하기 위한 용도로만 사용할 수 있습니다.

  • SNOWFLAKE_ACCOUNT

  • SNOWFLAKE_USER

  • SNOWFLAKE_PASSWORD

  • SNOWFLAKE_DATABASE

  • SNOWFLAKE_SCHEMA

  • SNOWFLAKE_ROLE

  • SNOWFLAKE_WAREHOUSE

  • SNOWFLAKE_AUTHENTICATOR

  • SNOWFLAKE_PRIVATE_KEY_PATH

  • SNOWFLAKE_SESSION_TOKEN

  • SNOWFLAKE_MASTER_TOKEN

연결 매개 변수를 snow 명령에 전달합니다.

연결이 필요한 모든 snow 명령에서 직접 연결 매개 변수를 전달할 수 있습니다. 연결 구성 매개 변수의 전체 목록을 보려면 다음과 같이 snow sql --help 명령을 실행합니다. 출력에는 연결 구성 옵션이 있는 섹션만 표시됩니다.

snow sql --help
Copy
╭─ Connection configuration ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --connection,--environment             -c      TEXT     Name of the connection, as defined in your config.toml. Default: default.            │
│ --host                                         TEXT     Host address for the connection. Overrides the value specified for the connection.   │
│ --port                                         INTEGER  Port for the connection. Overrides the value specified for the connection.           │
│ --account,--accountname                        TEXT     Name assigned to your Snowflake account. Overrides the value specified for the       │
│                                                         connection.                                                                          │
│ --user,--username                              TEXT     Username to connect to Snowflake. Overrides the value specified for the connection.  │
│ --password                                     TEXT     Snowflake password. Overrides the value specified for the connection.                │
│ --authenticator                                TEXT     Snowflake authenticator. Overrides the value specified for the connection.           │
│ --private-key-file,--private-key-path          TEXT     Snowflake private key file path. Overrides the value specified for the connection.   │
│ --token-file-path                              TEXT     Path to file with an OAuth token that should be used when connecting to Snowflake    │
│ --database,--dbname                            TEXT     Database to use. Overrides the value specified for the connection.                   │
│ --schema,--schemaname                          TEXT     Database schema to use. Overrides the value specified for the connection.            │
│ --role,--rolename                              TEXT     Role to use. Overrides the value specified for the connection.                       │
│ --warehouse                                    TEXT     Warehouse to use. Overrides the value specified for the connection.                  │
│ --temporary-connection                 -x               Uses connection defined with command line parameters, instead of one defined in      │
│                                                         config                                                                               │
│ --mfa-passcode                                 TEXT     Token to use for multi-factor authentication (MFA)                                   │
│ --enable-diag                                           Run python connector diagnostic test                                                 │
│ --diag-log-path                                TEXT     Diagnostic report path                                                               │
│ --diag-allowlist-path                          TEXT     Diagnostic report path to optional allowlist                                         │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯

조심

보안을 강화하기 위해 Snowflake는 SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD 또는 SNOWFLAKE_PASSWORD 환경 변수를 사용할 것을 강력히 권장합니다.

임시 연결 사용

명령줄에서 --temporary-connection [-x] 옵션을 사용하여 연결 매개 변수를 지정할 수도 있습니다. config.toml 의 모든 정의를 무시하고 대신 명령줄 옵션으로 지정된 정의를 사용합니다. 이 접근법은 구성 파일을 사용하지 않으려는 CI/CD 사용 사례에 유용할 수 있습니다. 임시 연결을 사용하는 경우 Snowflake CLI 는 config.toml 파일에 정의된 모든 연결 변수를 무시하지만, 사용자가 설정한 SNOWFLAKE_ACCOUNT 와 같은 환경 변수 는 계속 사용합니다.

snow sql -q "select 42;" --temporary-connection \
                           --account myaccount \
                           --user jdoe
Copy
select 42;
+----+
| 42 |
|----|
| 42 |
+----+

조심

보안을 강화하기 위해 Snowflake는 SNOWFLAKE_CONNECTIONS_<NAME>_PASSWORD 또는 SNOWFLAKE_PASSWORD 환경 변수를 사용할 것을 강력히 권장합니다.

연결을 인증하는 다른 방법

다음 방법을 사용하여 Snowflake에 대한 연결을 인증할 수도 있습니다.

인증에 개인 키 파일 사용

개인 키 파일을 인증에 사용하려면 연결 구성에서 authenticator 매개 변수를 SNOWFLAKE_JWT 로 설정하고 다음과 같이 개인 키가 있는 파일의 경로를 제공해야 합니다.

  • 다음과 같이 snow connection add 명령에 --private_key-file 옵션을 지정합니다.

    snow connection add \
       --connection jwt \
       --authenticator SNOWFLAKE_JWT \
       --private-key-file ~/.ssh/sf_private_key.p8
    
    Copy
  • 구성 파일 사용:

    [connections.jwt]
    account = "my_account"
    user = "jdoe"
    authenticator = "SNOWFLAKE_JWT"
    private_key_file = "~/sf_private_key.p8"
    
    Copy

키 페어 인증 구성에 대한 자세한 내용은 키 페어 인증 및 키 페어 순환 섹션을 참조하십시오.

참고

개인 키가 암호 구문으로 보호되어 있는 경우 PRIVATE_KEY_PASSPHRASE 환경 변수를 해당 암호 구문으로 설정합니다.

OAuth 인증 사용

OATH를 사용하여 연결하려면 다음 중 하나를 수행하면 됩니다.

  • 다음과 같이 snow connection add 명령에 --token-file-path 옵션을 지정합니다.

    snow connection add --token-file-path "my-token.txt"
    
    Copy
  • config.toml 파일에서 다음과 같이 authenticator = "oauth"`를 설정하고 연결 정의에 ``token_file_path` 매개 변수를 추가합니다.

    [connections.oauth]
    account = "my_account"
    user = "jdoe"
    authenticator = "oauth"
    token_file_path = "my-token.txt"
    
    Copy

다단계 인증(MFA) 사용

MFA 를 사용하려면 다음을 수행하십시오.

  1. Snowflake에서 다단계 인증 을 설정하고 authenticator 매개 변수를 snowflake (기본값)로 설정합니다.

  2. 푸시 메커니즘 대신 Duo에서 생성한 암호를 사용하려면 --mfa-passcode <암호> 옵션을 사용하거나 config.tomlpasscode_in_password = true 를 설정하고 Python에서 MFA 사용하기 에 설명된 대로 비밀번호에 암호를 포함시킵니다.

MFA 캐싱을 활성화하려면:

  1. 계정에 ALLOW_CLIENT_MFA_CACHING = true 를 설정합니다.

  2. config.toml 파일에서 연결에 authenticator = username_password_mfa 를 추가합니다.

SSO(Single Sign-On) 사용

Snowflake에서 Single Sign-On(SSO) 을 사용하도록 구성한 경우, 인증에서 SSO를 사용하도록 클라이언트 애플리케이션을 구성할 수 있습니다. 자세한 내용은 Snowflake에 연결하는 클라이언트 애플리케이션에서 SSO 사용하기 를 참조하고 Python 지침에 따라 연결을 구성하십시오.