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 |
|
---|---|---|---|---|
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
|||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
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:
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 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
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-----
MIIE6T...
-----END ENCRYPTED PRIVATE KEY-----
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
O comando gera a chave pública no formato PEM.
-----BEGIN PUBLIC KEY-----
MIIBIj...
-----END PUBLIC KEY-----
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...';
Nota
Somente os proprietários de um usuário ou usuários com a função SECURITYADMIN ou superior podem alterar um usuário. Para obter mais informações, consulte Visão geral do controle de acesso e GRANT OWNERSHIP.
Exclua os delimitadores de chave pública na instrução SQL.
Verificação da impressão digital da chave pública do usuário¶
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:');
Saída:
Azk1Pq...
Copie a saída.
Execute o seguinte comando na linha de comando:
openssl rsa -pubin -in rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl enc -base64
Saída:
writing RSA key Azk1Pq...
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.
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
ouRSA_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...';
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;