Snowflake CLI 구성하기¶
Snowflake CLI 는 이름이 config.toml
인 전역 구성 파일을 사용하여 Snowflake CLI 에 대한 연결 및 로그를 구성합니다. 파일이 없는 경우 모든 snow
명령을 처음 실행하면 빈 config.toml
파일이 자동으로 생성되며, 이 파일을 원하는 연결로 채울 수 있습니다. toml
파일 형식에 대한 자세한 내용은 TOML (Tom’s Obvious Minimal Language) 을 참조하십시오. Snowflake Python 라이브러리는 현재 TOML 버전 1.0.0을 지원합니다.
config.toml
에서는 다음 섹션을 지원합니다.
연결을 정의하고 관리하기 위한 [연결]
로그 파일에 저장되는 메시지의 유형을 구성하기 위한 [로그]
Snowflake CLI 구성 파일의 구조는 다음과 같습니다.
default_connection_name = "myconnection"
[connections]
[connections.myconnection]
account = "myorganization-myaccount"
user = "jdoe"
...
[connections.testingconnection]
account = "myorganization-myaccount"
user = "jdoe"
...
[cli.logs]
save_logs = true
level = "info"
path = "/home/<username>/.snowflake/logs"
.toml
구성 파일의 위치¶
기본적으로 Snowflake CLI 는 ~/.snowflake
디렉터리에서 config.toml
파일을 찾거나 이 디렉터리가 없는 경우 아래 목록과 같이 시스템별 위치에서 찾습니다. --config-file
플래그 또는 SNOWFLAKE_HOME
환경 변수를 사용하여 사용할 구성 파일을 지정할 수도 있습니다.
--config-file
옵션(예:snow --config-file ./my-config-file-path
)을 지정하면 Snowflake CLI 는 지정된 구성 파일을 사용합니다.SNOWFLAKE_HOME
환경 변수가 설정되어 있으면 Snowflake CLI 는 이 변수에 지정된 위치를 사용합니다.컴퓨터에
~/.snowflake
디렉터리가 있으면 Snowflake CLI 는~/.snowflake/config.toml
파일을 사용합니다.그렇지 않으면 Snowflake CLI 는 운영 체제를 기반으로 다음 위치 중 하나에 있는
config.toml
파일을 사용합니다.Linux:
~/.config/snowflake/config.toml
. 하지만 XDG 변수를 사용하여 업데이트할 수 있습니다.Windows:
%USERPROFILE%\AppData\Local\snowflake\config.toml
Mac:
~/Library/Application Support/snowflake/config.toml
참고
MacOS 및 Linux 시스템의 경우 Snowflake CLI 는 config.toml
파일의 파일 권한을 파일 소유자에 대해서만 읽기 및 쓰기로 제한하도록 요구합니다. 파일에 필요한 파일 권한을 설정하려면 다음 명령을 실행합니다.
chown $USER config.toml
chmod 0600 config.toml
다른 구성 파일 선택¶
지속적 통합 및 지속적 배포(CI/CD) 환경과 같은 일부 상황에서는 Snowflake 기본 구성 파일에 가능한 모든 구성을 정의하는 대신 테스트 및 배포 파이프라인을 위한 전용 구성 파일을 만드는 것이 선호될 수 있습니다.
기본 파일과 다른 구성 파일을 사용하려면 다음과 같이 snow
명령에 --config-file
옵션을 사용하면 됩니다.
snow --config-file="my_config.toml" connection test
시스템 환경 변수 지원¶
Snowflake CLI 는 시스템 환경 변수를 사용하여 config.toml
파일에 정의된 매개 변수 값을 재정의할 수 있도록 다음 형식을 지원합니다.
SNOWFLAKE_<config-section>_<variable>=<value>
여기서,
<config_section>
은 구성 파일에서 마침표(.
)가 밑줄(_
)로 대체된 섹션의 이름(예:CLI_LOGS
)입니다.변수는 해당 섹션에 정의된 변수의 이름입니다(예:
path
).
몇 가지 예는 다음과 같습니다.
config.toml
파일의[cli.logs]
섹션에서path
매개 변수를 재정의합니다.export SNOWFLAKE_CLI_LOGS_PATH="/Users/jondoe/snowcli_logs"
myconnection
연결의 비밀번호를 설정합니다.export SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD="*******"
기본 연결 이름을 설정합니다.
export SNOWFLAKE_DEFAULT_CONNECTION_NAME="myconnection"
Snowflake CLI 로만 액세스를 제한하는 인증 정책 추가하기¶
사용자는 드라이버에 대한 액세스 허가를 제한하는 인증 정책 과 Snowflake CLI 를 만들 수 있습니다. Snowflake CLI 에 대한 액세스만 허용하고 드라이버를 제외하려면 다음을 수행하면 됩니다.
Snowflake CLI 로만 액세스를 엄격하게 제한하는 새 액세스 정책을 만듭니다.
config.toml
파일에서 정책을 활성화합니다.
Snowflake CLI 로 제한되는 인증 정책을 만들기¶
Snowflake CLI 에 대한 새 인증 정책을 만들려면 다음 단계를 따르십시오.
CREATE AUTHENTICATION POLICY SQL 명령을 실행하여
'SNOWFLAKE_CLI'
를 포함하도록 CLIENT_TYPES 매개 변수를 설정합니다.
CREATE AUTHENTICATION POLICY snowflake_cli_only CLIENT_TYPES = ('SNOWFLAKE_CLI');
그림과 같이 사용자에게 정책을 추가합니다.
ALTER USER user1 SET AUTHENTICATION POLICY snowflake_cli_only;
Snowflake CLI 구성에서 정책 활성화하기¶
enable_separate_authentication_policy_id
구성 매개 변수를 사용하면 드라이버와 별도로 Snowflake CLI 에 대한 액세스를 활성화할 수 있습니다. 이 액세스가 활성화되면 지정된 사용자는 Snowflake CLI 에 액세스할 수 있지만 다른 Snowflake 드라이버는 액세스할 수 없습니다.
경고
드라이버에만 액세스를 허용하는 인증 정책이 이미 있고 Snowflake CLI 에 대한 액세스만 허용하는 인증 정책이 없는 경우, 새 정책을 먼저 만들지 않으면 사용자가 Snowflake CLI 에 대한 액세스 권한을 잃게 되므로 enable_separate_authentication_policy_id
매개 변수를 사용하도록 설정합니다. 구성 매개 변수를 활성화하기 전에 인증 정책에 SNOWFLAKE_CLI 를 추가해야 합니다.
SNOWFLAKE_CLI 정책을 사용하려면 그림과 같이 config.toml
파일의 [cli.features]
섹션에 enable_separate_authentication_policy_id
매개 변수를 추가합니다.
[cli.features]
enable_separate_authentication_policy_id = true
참고
이 매개 변수를 활성화하면 Snowflake CLI 에 의해 이루어진 모든 연결에 영향을 줍니다.
프록시 서버 사용하기¶
프록시 서버를 사용하려면 다음 환경 변수를 구성합니다.
HTTP_PROXY
HTTPS_PROXY
NO_PROXY
예:
- Linux 또는 macOS:
export HTTP_PROXY='http://username:password@proxyserver.company.com:80' export HTTPS_PROXY='http://username:password@proxyserver.company.com:80'
- Windows:
set HTTP_PROXY=http://username:password@proxyserver.company.com:80 set HTTPS_PROXY=http://username:password@proxyserver.company.com:80
팁
Snowflake의 보안 모델에서는 보안 소켓 레이어(SSL) 프록시(HTTPS 인증서 사용)를 사용할 수 없습니다. 프록시 서버는 공개적으로 사용 가능한 인증 기관(CA)을 사용해야 하며, 손상된 프록시를 통한 MITM(메시지 가로채기) 공격과 같은 잠재적인 보안 위험을 줄여야 합니다.
SSL 프록시를 반드시 사용해야 하는 경우 통신 중에 인증서가 변경되지 않도록 Snowflake 인증서를 통과하도록 서버 정책을 업데이트하는 것이 좋습니다.
선택 사항으로, NO_PROXY
를 사용하여 특정 통신에 대한 프록시를 우회할 수 있습니다. 예를 들어, Amazon S3에 대한 액세스는 NO_PROXY=".amazonaws.com"
을 지정하여 프록시 서버를 우회할 수 있습니다.
NO_PROXY
에서는 와일드카드를 지원하지 않습니다. 지정된 각 값은 다음 중 하나여야 합니다.
호스트 이름의 끝(또는 전체 호스트 이름), 예:
.amazonaws.com
myorganization-myaccount.snowflakecomputing.com
IP 주소, 예:
192.196.1.15
2개 이상의 값이 지정된 경우, 값은 쉼표로 구분되어야 합니다. 예:
localhost,.my_company.com,.snowflakecomputing.com,192.168.1.15,192.168.1.16
로깅 구성¶
기본적으로, Snowflake CLI 는 INFO
, WARNING
및 ERROR
수준 메시지를 로그 파일에 자동으로 저장합니다. 로깅을 비활성화하거나 사용자 지정하려면 config.toml
파일에 [cli.logs]
섹션을 만듭니다.
[cli.logs]
save_logs = true
level = "info"
path = "/home/<username>/.snowflake/logs"
여기서,
save_logs
는 로그를 파일에 저장할지 여부를 나타냅니다. 기본값:true
.level
는 로그 파일에 저장할 메시지 수준을 지정합니다. 선택한 수준 아래의 모든 수준을 포함하는 다음 수준 중에서 선택합니다.debug
경고
debug
로깅 수준으로 전환하면 실행된 SQL 쿼리와 같은 민감한 정보가 노출될 수 있습니다. 이 수준을 활성화할 때는 주의해야 합니다.info
warning
error
기본값:
info
path
는 로그 파일을 저장할 절대 경로를 지정합니다. 경로 형식은 운영 체제에 따라 다음과 같이 달라집니다.Linux:
path = "/home/<your_username>/.config/snowflake/logs"
MacOS:
path = "/Users/<your_username>/Library/Application Support/snowflake/logs"
Windows:
path = "C:\\Users\\<your_username>\\AppData\\Local\\snowflake\\logs"
지정하지 않으면, 명령은 기본
logs
파일 위치에config.toml
디렉터리를 생성합니다.
config.toml
이 자동으로 생성된 경우, config.toml
파일에는 기본값으로 채워진 `` |cli.logs| `` 섹션이 포함됩니다.
그림과 같이 하루 동안의 로그가 snowflake-cli.log
파일에 추가되고 나중에 이름이 snowflake-cli.log.YYYY-MM-DD
로 변경됩니다.
ls logs/
snowflake-cli.log snowflake-cli.log.2024-10-22