Autenticação e rodízio do par 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 (ou seja, 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 (ou seja, 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 verificação (ou seja, ✔) 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 |
|
---|---|---|---|---|
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
|||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
Configuração da autenticação por par de chaves¶
Complete as seguintes etapas para configurar a autenticação por par de chaves para todos os clientes do Snowflake com suporte.
Etapa 1: Gerar a 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 utilizar uma chave criptografada para se conectar ao Snowflake, você informará 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:
Acesse a Biblioteca de documentos de padrões de segurança PCI.
Para PCI DSS, selecione a versão mais recente e seu idioma desejado.
Preencha o formulário para acessar o documento.
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 chamadaRequirement 8: Identify and authenticate access to system components
(ou 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
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
Os comandos geram uma chave privada no formato PEM.
-----BEGIN ENCRYPTED PRIVATE KEY----- MIIE6TAbBgkqhkiG9w0BBQMwDgQILYPyCppzOwECAggABIIEyLiGSpeeGSe3xHP1 wHLjfCYycUPennlX2bd8yX8xOxGSGfvB+99+PmSlex0FmY9ov1J8H1H9Y3lMWXbL ... -----END ENCRYPTED PRIVATE KEY-----
Etapa 2: Gerar 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
O comando gera a chave pública no formato PEM.
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy+Fw2qv4Roud3l6tjPH4 zxybHjmZ5rhtCz9jppCV8UTWvEXxa88IGRIHbJ/PwKW/mR8LXdfI7l/9vCMXX4mk ... -----END PUBLIC KEY-----
Etapa 3: Armazenar as 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.
Etapa 4: Atribuir a 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...';
Nota
Somente administradores de segurança (isto é, 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.
Etapa 5: Verificar a impressão digital da chave pública do usuário¶
Execute um comando DESCRIBE USER para verificar a chave pública do usuário.
DESC USER jsmith; +---------------------+-----------------------------------------------------+---------+----------------------------------------------+ | property | value | default | description | +---------------------+-----------------------------------------------------+---------+----------------------------------------------+ | NAME | JSMITH | null | Name | ... ... | RSA_PUBLIC_KEY | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA... | null | RSA public key of the user | | RSA_PUBLIC_KEY_FP | SHA256:nvnONUsfiuycCLMXIEWG4eTp4FjhVUZQUQbNpbSHXiA= | null | Fingerprint of user's RSA public key. | | RSA_PUBLIC_KEY_2 | null | null | Second RSA public key of the user | | RSA_PUBLIC_KEY_2_FP | null | null | Fingerprint of user's second RSA public key. | ... +---------------------+-----------------------------------------------------+---------+----------------------------------------------+
Etapa 6: Configurar o cliente do Snowflake para usar a autenticação por par de chaves¶
Atualize o cliente para usar a autenticação por par de chaves para se conectar ao Snowflake.
Configuração do rodízio 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.
Complete todas as etapas em Configuração da autenticação por 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 para
RSA_PUBLIC_KEY
ouRSA_PUBLIC_KEY_2
(o valor de chave que não esteja em uso no momento). Por exemplo:alter user jsmith set rsa_public_key_2='JERUEHtcve...';
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.
Remova a chave pública antiga do perfil do usuário usando um comando ALTER USER.
alter user jsmith unset rsa_public_key;