Autenticação de pares de chaves e rotação de pares de chaves

Este tópico descreve o uso da autenticação e rodízio de par de chaves no Snowflake.

Neste tópico:

Visão geral

O Snowflake suporta o uso de autenticação por par de chaves para maior segurança de autenticação como uma alternativa à autenticação básica, como nome de usuário e senha.

Este método de autenticação requer, como mínimo, um par de chaves RSA de 2048 bits. Você pode gerar o par de chaves privada-pública Privacy Enhanced Mail (PEM) usando OpenSSL. Alguns dos clientes do Snowflake com suporte permitem o uso de chaves privadas criptografadas para se conectar ao Snowflake. A chave pública é atribuída ao usuário do Snowflake que usa o cliente Snowflake para se conectar e autenticar no Snowflake.

O Snowflake também suporta a rotação de chaves públicas em um esforço para permitir o cumprimento de posturas de segurança e governança mais robustas.

Clientes Snowflake com suporte

A tabela a seguir resume o suporte para autenticação por par de chaves entre os clientes do Snowflake. Uma marca de seleção (✔) indica suporte total. A ausência de marca de verificação indica que a autenticação por par chave não tem suporte.

Cliente

Autenticação por par de chaves

Rodízio do par de chaves

Chaves privadas não criptografadas

SnowSQL (cliente CLI)

Conector Snowflake para Python

Conector Snowflake para Spark

Conector Snowflake para Kafka

Driver Go

Driver JDBC

Driver ODBC

Driver Node.js

Driver .NET

Driver PHP PDO para Snowflake

Configuração da autenticação do par de chaves

Complete as seguintes etapas para configurar a autenticação por par de chaves para todos os clientes do Snowflake com suporte.

Geração da chave privada

Dependendo de qual dos clientes do Snowflake com suporte você usa para se conectar ao Snowflake, você tem a opção de gerar chaves privadas criptografadas ou não criptografadas. Geralmente, é mais seguro gerar chaves criptografadas. O Snowflake recomenda a comunicação com seus encarregados internos de segurança e governança para determinar que tipo de chave gerar antes de concluir esta etapa.

Dica

O comando para gerar uma chave criptografada solicita uma senha para regular o acesso à chave. O Snowflake recomenda o uso de uma senha que esteja de acordo com as normas PCI DSS para proteger a chave privada gerada localmente. Além disso, o Snowflake recomenda o armazenamento da senha em um local seguro. Se você estiver usando uma chave criptografada para se conectar ao Snowflake, você inserirá a senha durante a conexão inicial. A senha é usada apenas para proteger a chave privada e nunca será enviada para o Snowflake.

Para gerar uma senha longa e complexa baseada em padrões PCI DSS:

  1. Acesse a Biblioteca de documentos de padrões de segurança PCI.

  2. Para PCI DSS, selecione a versão mais recente e seu idioma desejado.

  3. Preencha o formulário para acessar o documento.

  4. Pesquise Passwords/passphrases must meet the following: e siga as recomendações para os requisitos de senha/código, testes e orientação. Dependendo da versão do documento, a frase provavelmente está localizada em uma seção chamada Requirement 8: Identify and authenticate access to system components ou com nome semelhante.

Para começar, abra uma janela de terminal e gere uma chave privada.

Você pode gerar tanto uma versão criptografada da chave privada quanto uma versão não criptografada.

Para gerar uma versão não criptografada, use o seguinte comando:

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Copy

Para gerar uma versão criptografada, use o seguinte comando, que omite -nocrypt:

openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
Copy

Os comandos geram uma chave privada no formato PEM.

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6T...
-----END ENCRYPTED PRIVATE KEY-----
Copy

Geração de uma chave pública

A partir da linha de comando, gere a chave pública, referenciando a chave privada. O seguinte comando considera que a chave privada está criptografada e contida no arquivo chamado rsa_key.p8.

openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Copy

O comando gera a chave pública no formato PEM.

-----BEGIN PUBLIC KEY-----
MIIBIj...
-----END PUBLIC KEY-----
Copy

Armazenamento das chaves públicas e privadas com segurança

Copie os arquivos de chaves públicas e privadas em um diretório local para armazenamento. Registre o caminho para os arquivos. Observe que a chave privada é armazenada usando o formato PKCS8 (Public Key Cryptography Standards) e é criptografada usando a senha especificada no passo anterior.

Entretanto, o arquivo ainda deve ser protegido contra acesso não autorizado usando o mecanismo de permissão de arquivo fornecido por seu sistema operacional. É sua responsabilidade proteger o arquivo quando ele não estiver sendo usado.

Atribuição da chave pública a um usuário do Snowflake

Execute um comando ALTER USER para atribuir a chave pública a um usuário do Snowflake.

ALTER USER jsmith SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
Copy

Nota

  • Somente usuários com a função SECURITYADMIN ou superior podem alterar um usuário.

  • Exclua os delimitadores de chave pública na instrução SQL.

Verificação da impressão digital da chave pública do usuário

  1. Execute o seguinte comando para recuperar a impressão digital da chave pública do usuário:

    DESC USER jsmith;
    SELECT TRIM((SELECT "value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
      WHERE "property" = 'RSA_PUBLIC_KEY_FP'), 'SHA256:');
    
    Copy

    Saída:

    Azk1Pq...
    
  2. Copie a saída.

  3. Execute o seguinte comando na linha de comando:

    openssl rsa -pubin -in rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl enc -base64
    
    Copy

    Saída:

    writing RSA key
    Azk1Pq...
    
  4. Compare as duas saídas. Se ambas as saídas corresponderem, o usuário configurou corretamente sua chave pública.

Configure o cliente Snowflake para usar autenticação de par de chaves

Atualize o cliente para usar a autenticação por par de chaves para se conectar ao Snowflake.

Configuração da rotação do par de chaves

O Snowflake suporta múltiplas chaves ativas para permitir rodízio ininterrupto. Alterne e substitua suas chaves públicas e privadas com base no cronograma de vencimento que você segue internamente.

Atualmente, é possível usar os parâmetros RSA_PUBLIC_KEY e RSA_PUBLIC_KEY_2 para ALTER USER para associar até 2 chaves públicas com um único usuário.

Complete as seguintes etapas para configurar o rodízio do par de chaves para todos os clientes do Snowflake com suporte.

  1. Conclua todas as etapas em Configuração da autenticação do par de chaves com as seguintes atualizações:

    • Gere um novo conjunto de chaves privada e pública.

    • Atribua a chave pública ao usuário. Defina o valor da chave pública como RSA_PUBLIC_KEY ou RSA_PUBLIC_KEY_2, qualquer valor de chave que não esteja em uso no momento. Por exemplo:

      ALTER USER jsmith SET RSA_PUBLIC_KEY_2='JERUEHtcve...';
      
      Copy
  2. Atualize o código para conectar ao Snowflake. Especifique a nova chave privada.

    O Snowflake verifica a chave pública ativa correta para autenticação com base na chave privada apresentada com suas informações de conexão.

  3. Remova a chave pública antiga do perfil do usuário usando um comando ALTER USER.

    ALTER USER jsmith UNSET RSA_PUBLIC_KEY;
    
    Copy