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"
연결 정의는 Python용 Snowflake Connector 와 동일한 구성 옵션을 지원합니다. 또한 파일 상단의 default_connection_name
변수에 기본 연결을 지정할 수 있습니다. 이를 연결 정의에 포함시킬 수 없습니다. 예:
default_connection_name = "myconnection"
[connections.myconnection]
account = "myaccount"
...
참고
MacOS 및 Linux 시스템의 경우 Snowflake CLI 는 config.toml
파일의 파일 권한을 파일 소유자에 대해서만 읽기 및 쓰기로 제한하도록 요구합니다. 파일에 필요한 파일 권한을 설정하려면 다음 명령을 실행합니다.
chown $USER connections.toml
chmod 0600 connections.toml
Snowflake CLI 는 connections.toml
구성 파일도 지원합니다. 파일은 config.toml
파일과 동일한 디렉터리에 위치해야 하며 연결만 포함되어야 합니다. connections.toml
로 구성하려면 connections
을 제외한 다른 섹션 이름이 필요합니다. 예를 들어, [connections.myconnection]
은 [myconnection]
입니다.
참고
config.toml
및 connections.toml
구성에 모두 연결이 포함되어 있는 경우 Snowflake CLI 는 connections.toml
의 구성만 사용합니다.
snow connection
명령을 사용한 Snowflake로의 연결 관리 또는 추가¶
snow connection
명령을 사용하면 Snowflake 연결을 생성, 관리 및 테스트할 수 있습니다.
연결 추가¶
새 연결을 생성하여 설정 파일 에 추가하려면 다음을 수행합니다.
snow connection add
명령을 실행합니다.
snow connection add
메시지가 표시되면 필수 연결, 계정, 사용자 이름 매개 변수와 원하는 기타 선택 사항 매개 변수를 입력합니다.
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
참고
명령이 종료되지만 오류가 발생한 경우(예: --private_key_file
옵션이 존재하지 않는 파일을 참조하는 경우) 연결은 config.toml
구성 파일에 저장되지 않습니다.
정의된 연결 나열¶
사용 가능한 연결을 나열하려면 다음과 같이 snow connection list
명령을 입력합니다.
snow connection list
+-------------------------------------------------------------------------------------------------+
| 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
+--------------------------------------------------+
| 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
Default connection set to: myconnection2
참고
connections.toml
및 config.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
╭─ 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
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
구성 파일 사용:
[connections.jwt] account = "my_account" user = "jdoe" authenticator = "SNOWFLAKE_JWT" private_key_file = "~/sf_private_key.p8"
키 페어 인증 구성에 대한 자세한 내용은 키 페어 인증 및 키 페어 순환 섹션을 참조하십시오.
참고
개인 키가 암호 구문으로 보호되어 있는 경우 PRIVATE_KEY_PASSPHRASE
환경 변수를 해당 암호 구문으로 설정합니다.
OAuth 인증 사용¶
OATH를 사용하여 연결하려면 다음 중 하나를 수행하면 됩니다.
다음과 같이
snow connection add
명령에--token-file-path
옵션을 지정합니다.snow connection add --token-file-path "my-token.txt"
config.toml
파일에서 다음과 같이authenticator = "oauth"`를 설정하고 연결 정의에 ``token_file_path`
매개 변수를 추가합니다.[connections.oauth] account = "my_account" user = "jdoe" authenticator = "oauth" token_file_path = "my-token.txt"
다단계 인증(MFA) 사용¶
MFA 를 사용하려면 다음을 수행하십시오.
Snowflake에서 다단계 인증 을 설정하고
authenticator
매개 변수를snowflake
(기본값)로 설정합니다.푸시 메커니즘 대신 Duo에서 생성한 암호를 사용하려면
--mfa-passcode <암호>
옵션을 사용하거나config.toml
에passcode_in_password = true
를 설정하고 Python에서 MFA 사용하기 에 설명된 대로 비밀번호에 암호를 포함시킵니다.
MFA 캐싱을 활성화하려면:
계정에
ALLOW_CLIENT_MFA_CACHING = true
를 설정합니다.config.toml
파일에서 연결에authenticator = username_password_mfa
를 추가합니다.
SSO(Single Sign-On) 사용¶
Snowflake에서 Single Sign-On(SSO) 을 사용하도록 구성한 경우, 인증에서 SSO를 사용하도록 클라이언트 애플리케이션을 구성할 수 있습니다. 자세한 내용은 Snowflake에 연결하는 클라이언트 애플리케이션에서 SSO 사용하기 를 참조하고 Python 지침에 따라 연결을 구성하십시오.