Configuração do Snowflake CLI

Snowflake CLI usa um arquivo de configuração global chamado config.toml para configurar conexões e logs para Snowflake CLI. Se o arquivo não existir, executar qualquer comando snow pela primeira vez criará automaticamente um arquivo config.toml vazio que você poderá preencher com as conexões desejadas. Para obter mais informações sobre formatos de arquivo toml, consulte TOML (Tom’s Obvious Minimal Language). As bibliotecas Snowflake Python atualmente oferecem suporte a TOML versão 1.0.0.

O config.toml oferece suporte às seguintes seções:

  • [conexões] para definir e gerenciar conexões

  • [logs] para configurar quais tipos de mensagens são salvas em arquivos de log

Um arquivo de configuração Snowflake CLI tem a seguinte estrutura:

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

Local do arquivo de configuração .toml

Por padrão, Snowflake CLI procura o arquivo config.toml no diretório ~/.snowflake ou, caso este diretório não exista, em um local específico do sistema, conforme listado abaixo. Você também pode especificar qual arquivo de configuração deve ser usado usando o sinalizador --config-file ou a variável de ambiente SNOWFLAKE_HOME.

  • Se você especificar a opção --config-file (como snow --config-file ./my-config-file-path), Snowflake CLI usará o arquivo de configuração especificado.

  • Se a variável de ambiente SNOWFLAKE_HOME estiver definida, Snowflake CLI usa o local especificado por esta variável.

  • Se existir um diretório ~/.snowflake em sua máquina, o Snowflake CLI usará o arquivo ~/.snowflake/config.toml.

  • Caso contrário, o Snowflake CLI usará o arquivo config.toml em um dos seguintes locais, com base em seu sistema operacional:

    • Linux: ~/.config/snowflake/config.toml, mas é possível atualizá-lo com variáveis XDG

    • Windows: %USERPROFILE%\AppData\Local\snowflake\config.toml

    • Mac: ~/Library/Application Support/snowflake/config.toml

Nota

Para sistemas MacOS e Linux, Snowflake CLI exige o arquivo config.toml para limitar suas permissões de leitura e gravação somente para o proprietário do arquivo. Para definir as permissões de arquivo necessárias, execute os seguintes comandos:

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

Escolha um arquivo de configuração diferente

Em algumas situações, como ambientes de integração contínua e implantação contínua (CI/CD), você pode preferir criar arquivos de configuração dedicados para pipelines de teste e implementação em vez de definir todas as configurações possíveis em um único arquivo de configuração padrão do Snowflake.

Para usar um arquivo de configuração diferente de seu arquivo padrão, é possível usar a opção --config-file para o comando snow, conforme mostrado:

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

Suporte para variáveis de ambiente do sistema

Snowflake CLI oferece suporte ao uso de variáveis de ambiente do sistema para substituir valores de parâmetro definidos em seu arquivo config.toml, usando o seguinte formato:

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

onde:

  • <config_section> é o nome de uma seção no arquivo de configuração com pontos (.) substituídos por sublinhados (_), como CLI_LOGS.

  • variável é o nome de uma variável definida naquela seção, como caminho.

Alguns exemplos incluem:

  • Substitua o parâmetro de path na seção [cli.logs] no arquivo config.toml:

    export SNOWFLAKE_CLI_LOGS_PATH="/Users/jondoe/snowcli_logs"
    
    Copy
  • Defina a senha para a conexão myconnection:

    export SNOWFLAKE_CONNECTIONS_MYCONNECTION_PASSWORD="*******"
    
    Copy
  • Defina o nome da conexão padrão:

    export SNOWFLAKE_DEFAULT_CONNECTION_NAME="myconnection"
    
    Copy

Adicione uma política de autenticação que limite o acesso somente a Snowflake CLI

Os usuários podem criar uma política de autenticação que limita a permissão de acesso aos drivers, bem como Snowflake CLI. Se quiser permitir o acesso apenas a Snowflake CLI (e excluir os drivers), você pode fazer o seguinte:

  • Crie uma nova política de autenticação que limite o acesso estritamente a Snowflake CLI.

  • Habilite a política no arquivo config.toml.

Criação de uma política de autenticação limitada a Snowflake CLI

Para criar uma nova política de autenticação somente para Snowflake CLI, siga estas etapas:

  1. Execute o comando CREATE AUTHENTICATION POLICY SQL, definindo o parâmetro CLIENT_TYPES para incluir 'SNOWFLAKE_CLI'.

CREATE AUTHENTICATION POLICY snowflake_cli_only
  CLIENT_TYPES = ('SNOWFLAKE_CLI');
Copy
  1. Adicione a política ao usuário, conforme mostrado:

ALTER USER user1
  SET AUTHENTICATION POLICY snowflake_cli_only;
Copy

Ative a política na configuração do Snowflake CLI

O parâmetro de configuração enable_separate_authentication_policy_id permite que você habilite o acesso a Snowflake CLI separadamente dos drivers. Quando esse acesso está ativado, os usuários especificados podem acessar Snowflake CLI, mas não os outros drivers do Snowflake.

Aviso

Se você já tiver uma política de autenticação que permita o acesso somente a drivers e não tiver uma que permita o acesso somente a Snowflake CLI, a habilitação do parâmetro enable_separate_authentication_policy_id fará com que os usuários percam o acesso a Snowflake CLI se você não criar a nova política primeiro. Certifique-se de adicionar SNOWFLAKE_CLI à sua política de autenticação antes de habilitar o parâmetro de configuração.

Para ativar a política SNOWFLAKE_CLI, adicione o parâmetro enable_separate_authentication_policy_id à seção [cli.features] do arquivo config.toml, conforme mostrado:

[cli.features]
enable_separate_authentication_policy_id = true
Copy

Nota

A ativação desse parâmetro afeta todas as conexões feitas pelo Snowflake CLI.

Uso de um servidor proxy

Para utilizar um servidor proxy, configure as seguintes variáveis de ambiente:

  • HTTP_PROXY

  • HTTPS_PROXY

  • NO_PROXY

Por exemplo:

Linux ou 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

Dica

O modelo de segurança do Snowflake não permite a utilização de proxies Secure Sockets Layer (SSL) (usando um certificado HTTPS). Seu servidor proxy deve usar uma Autoridade Certificadora (CA) disponível publicamente, reduzindo riscos potenciais de segurança, como um ataque MITM (Man In The Middle) através de um proxy comprometido.

Se você precisar usar seu proxy SSL, recomendamos fortemente que atualize a política do servidor para passar o certificado do Snowflake de modo que nenhum certificado seja alterado no meio das comunicações.

Opcionalmente NO_PROXY pode ser usado para ignorar o proxy para comunicações específicas. Por exemplo, o acesso ao Amazon S3 pode ignorar o servidor proxy especificando NO_PROXY=".amazonaws.com".

NO_PROXY não tem suporte para curingas. Cada valor especificado deve ser um dos seguintes:

  • O fim de um nome de host (ou um nome de host completo), por exemplo:

    • .amazonaws.com

    • minhaorganização-minhaconta.snowflakecomputing.com

  • Um endereço IP, por exemplo:

    • 192.196.1.15

Se for especificado mais de um valor, os valores devem ser separados por vírgulas; por exemplo:

localhost,.my_company.com,.snowflakecomputing.com,192.168.1.15,192.168.1.16
Copy

Configuração do registro em log

Por padrão, Snowflake CLI salva automaticamente as mensagens de nível INFO, WARNING e ERROR em arquivos de log. Para desabilitar ou personalizar o registro, crie uma seção [cli.logs] em seu arquivo config.toml:

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

onde:

  • save_logs indica se os logs devem ser salvos em arquivos. Padrão: true.

  • level especifica quais níveis de mensagens salvar nos arquivos de log. Escolha entre os seguintes níveis, que incluem todos os níveis abaixo do selecionado:

    • debug

      Aviso

      Mudando para o nível de registro em log debug pode expor informações confidenciais, como consultas SQL. Tenha cuidado ao habilitar este nível.

    • info

    • warning

    • error

    Padrão: info

  • path especifica o caminho absoluto para salvar os arquivos de log. O formato do caminho varia de acordo com o seu sistema operacional, conforme mostrado:

    • Linux: path = "/home/<seu_nome_de_usuário>/.config/snowflake/logs"

    • MacOS: path = "/Users/<seu_nome_de_usuário>/Library/Application Support/snowflake/logs"

    • Windows: path = "C:\\Users\\<seu_nome_de_usuário>\\AppData\\Local\\snowflake\\logs"

    Se não for especificado, o comando cria um diretório logs na localização padrão config.toml do arquivo.

Se oseu config.toml foi criado automaticamente, o arquivo config.toml contém a seção `` |cli.logs| `` preenchida com valores padrão.

Os registros de um único dia são anexados ao arquivo snowflake-cli.log, que mais tarde foi renomeado para snowflake-cli.log.YYYY-MM-DD, como mostrado.

ls logs/
Copy
snowflake-cli.log            snowflake-cli.log.2024-10-22