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"
Copy

.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
Copy

다른 구성 파일 선택

지속적 통합 및 지속적 배포(CI/CD) 환경과 같은 일부 상황에서는 Snowflake 기본 구성 파일에 가능한 모든 구성을 정의하는 대신 테스트 및 배포 파이프라인을 위한 전용 구성 파일을 만드는 것이 선호될 수 있습니다.

기본 파일과 다른 구성 파일을 사용하려면 다음과 같이 snow 명령에 --config-file 옵션을 사용하면 됩니다.

snow --config-file="my_config.toml" connection test
Copy

시스템 환경 변수 지원

Snowflake CLI 는 시스템 환경 변수를 사용하여 config.toml 파일에 정의된 매개 변수 값을 재정의할 수 있도록 다음 형식을 지원합니다.

SNOWFLAKE_<config-section>_<variable>=<value>
Copy

여기서,

  • <config_section> 은 구성 파일에서 마침표(.)가 밑줄(_)로 대체된 섹션의 이름(예: CLI_LOGS)입니다.

  • 변수는 해당 섹션에 정의된 변수의 이름입니다(예: path).

몇 가지 예는 다음과 같습니다.

  • config.toml 파일의 [cli.logs] 섹션에서 path 매개 변수를 재정의합니다.

    export SNOWFLAKE_CLI_LOGS_PATH="/Users/jondoe/snowcli_logs"
    
    Copy
  • myconnection 연결의 비밀번호를 설정합니다.

    export SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD="*******"
    
    Copy
  • 기본 연결 이름을 설정합니다.

    export SNOWFLAKE_DEFAULT_CONNECTION_NAME="myconnection"
    
    Copy

Snowflake CLI 로만 액세스를 제한하는 인증 정책 추가하기

사용자는 드라이버에 대한 액세스 허가를 제한하는 인증 정책 과 Snowflake CLI 를 만들 수 있습니다. Snowflake CLI 에 대한 액세스만 허용하고 드라이버를 제외하려면 다음을 수행하면 됩니다.

  • Snowflake CLI 로만 액세스를 엄격하게 제한하는 새 액세스 정책을 만듭니다.

  • config.toml 파일에서 정책을 활성화합니다.

Snowflake CLI 로 제한되는 인증 정책을 만들기

Snowflake CLI 에 대한 새 인증 정책을 만들려면 다음 단계를 따르십시오.

  1. CREATE AUTHENTICATION POLICY SQL 명령을 실행하여 'SNOWFLAKE_CLI' 를 포함하도록 CLIENT_TYPES 매개 변수를 설정합니다.

CREATE AUTHENTICATION POLICY snowflake_cli_only
  CLIENT_TYPES = ('SNOWFLAKE_CLI');
Copy
  1. 그림과 같이 사용자에게 정책을 추가합니다.

ALTER USER user1
  SET AUTHENTICATION POLICY snowflake_cli_only;
Copy

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
Copy

참고

이 매개 변수를 활성화하면 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'
Copy
Windows:
set HTTP_PROXY=http://username:password@proxyserver.company.com:80
set HTTPS_PROXY=http://username:password@proxyserver.company.com:80
Copy

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
Copy

로깅 구성

기본적으로, Snowflake CLI 는 INFO, WARNINGERROR 수준 메시지를 로그 파일에 자동으로 저장합니다. 로깅을 비활성화하거나 사용자 지정하려면 config.toml 파일에 [cli.logs] 섹션을 만듭니다.

[cli.logs]
save_logs = true
level = "info"
path = "/home/<username>/.snowflake/logs"
Copy

여기서,

  • 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/
Copy
snowflake-cli.log            snowflake-cli.log.2024-10-22