Autenticación Key-Pair en Snowflake

Snowflake|13 min de lectura|Actualizado: 18 sept 2026

Autenticación Key-Pair y rotación de claves en Snowflake

Este documento describe la implementación de la autenticación mediante par de claves (Key-Pair) y la rotación de claves en Snowflake.

Visión general

Snowflake admite la autenticación por par de claves para brindar una mayor seguridad, como alternativa a la autenticación básica mediante usuario y contraseña.

Este método de autenticación requiere, como mínimo, un par de claves RSA de 2048 bits. Puede generar el par de claves pública y privada en formato Privacy Enhanced Mail (PEM) utilizando OpenSSL. Algunos de los clientes soportados de Snowflake permiten utilizar claves privadas cifradas para conectarse a Snowflake. La clave pública se asigna al usuario de Snowflake que utiliza el cliente para conectarse y autenticarse.

Snowflake también admite la rotación de claves públicas con el objetivo de cumplir con políticas más estrictas de seguridad corporativa y gobierno de datos.

Clientes Snowflake soportados

La siguiente tabla resume el soporte de autenticación Key-Pair entre los clientes de Snowflake. Una marca de verificación (✔) indica soporte completo. La ausencia de marca indica que la autenticación Key-Pair no está admitida.

ClienteAutenticación Key-PairRotación Key-PairClaves privadas sin cifrar
Snowflake CLI✅✅✅
SnowSQL (cliente CLI)✅✅✅
Snowflake Connector para Python✅✅✅
Snowflake Connector para Spark✅✅✅
Snowflake Connector para Kafka✅✅✅
Controlador Go✅✅✅
Controlador JDBC✅✅✅
Controlador ODBC✅✅✅
Controlador Node.js✅✅✅
Controlador .NET✅✅✅
Controlador PHP PDO para Snowflake✅✅✅

Configuración de la autenticación Key-Pair

Complete los siguientes pasos para configurar la autenticación por par de claves en los clientes Snowflake admitidos.

Generar la clave privada

Dependiendo del cliente de Snowflake utilizado para conectarse, tiene la opción de generar claves privadas cifradas o sin cifrar. Por norma general, es mucho más seguro generar claves cifradas con contraseña. Snowflake recomienda coordinar con los responsables de seguridad de su organización para determinar el tipo de clave antes de completar este paso.

TIP

El comando para generar una clave cifrada solicita una frase de contraseña (passphrase) para regular el acceso a la clave. Snowflake recomienda utilizar una frase de paso que cumpla con los estándares PCI DSS para proteger la clave privada generada localmente. Adicionalmente, guarde la contraseña en un lugar seguro. Al utilizar una clave cifrada para conectarse a Snowflake, ingrese la frase de contraseña durante la conexión inicial. La contraseña solo se utiliza localmente para proteger la clave privada y nunca se transmite a Snowflake.

Para generar una frase de contraseña segura basada en los estándares PCI DSS:

  1. Acceda a la Biblioteca de Documentos de PCI Security Standards.
  2. En PCI DSS, seleccione la versión más reciente y el idioma preferido.
  3. Complete el formulario para acceder al documento.
  4. Revise y siga las directrices para requisitos de contraseñas y frases de paso (Requisito 8: Identificar y autenticar el acceso a los componentes del sistema).

Para iniciar, abra una ventana de terminal y genere la clave privada.

Puede generar una versión cifrada o sin cifrar de la clave privada.

Para generar una versión sin cifrar, ejecute el siguiente comando:

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

Para generar una versión cifrada, ejecute el siguiente comando (que omite -nocrypt y utiliza cifrado 3DES):

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

Los comandos generan una clave privada en formato PEM:

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

Generar la clave pública

Desde la línea de comandos, genere la clave pública referenciando la clave privada generada. El siguiente comando asume que la clave privada está contenida en el archivo rsa_key.p8:

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

El comando genera la clave pública en formato PEM:

text
-----BEGIN PUBLIC KEY-----
MIIBIj...  
-----END PUBLIC KEY-----

Almacenar las claves privada y pública de forma segura

Copie los archivos de clave pública y privada a un directorio local seguro. Guarde la ruta hacia los archivos. Tenga en cuenta que la clave privada se almacena utilizando el formato PKCS#8 (Public Key Cryptography Standards) y se encuentra cifrada con la frase de contraseña especificada.

El archivo debe protegerse contra accesos no autorizados mediante los mecanismos de permisos del sistema operativo. Es responsabilidad de su equipo de infraestructura proteger el archivo cuando no esté en uso.

Asignar la clave pública al usuario de Snowflake

Ejecute una sentencia ALTER USER en Snowflake para asignar la clave pública al usuario correspondiente:

sql
ALTER USER example_user SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
NOTA

  • Solo los propietarios del usuario o usuarios con el rol SECURITYADMIN o superior pueden modificar los atributos de un usuario. Para más detalles, consulte el control de acceso y GRANT OWNERSHIP.
  • Excluya los delimitadores de encabezado y pie de la clave pública (-----BEGIN PUBLIC KEY----- y -----END PUBLIC KEY-----) en la sentencia SQL.

Verificar la huella digital (fingerprint) de la clave pública del usuario

  1. Ejecute la siguiente consulta SQL en Snowflake para obtener la huella digital de la clave pública:
sql
DESC USER example_user;
SELECT SUBSTR((SELECT "value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "property" = 'RSA_PUBLIC_KEY_FP'), LEN('SHA256:') + 1);

Salida esperada:

text
Azk1Pq...
  1. Copie la salida obtenida.
  2. Ejecute el siguiente comando en su terminal local:
bash
openssl rsa -pubin -in rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl enc -base64

Salida esperada:

text
writing RSA key
Azk1Pq...
  1. Compare ambas salidas. Si coinciden, la clave pública del usuario ha sido configurada correctamente.

Configurar el cliente de Snowflake para utilizar autenticación Key-Pair

Actualice la configuración del cliente o conector utilizado para conectarse a Snowflake:

  • Snowflake CLI
  • SnowSQL
  • Python connector
  • Spark connector
  • Kafka connector
  • Controlador Go
  • Controlador JDBC
  • Controlador ODBC
  • Controlador .NET
  • Controlador Node.js

Configuración de la rotación de pares de claves

Snowflake admite múltiples claves activas en simultáneo para permitir una rotación continua sin interrupciones del servicio. Rote y reemplace sus claves públicas y privadas según el cronograma de vencimiento interno de su organización.

Actualmente, puede utilizar los parámetros RSA_PUBLIC_KEY y RSA_PUBLIC_KEY_2 con ALTER USER para asociar hasta 2 claves públicas a un único usuario.

Complete los siguientes pasos para rotar sus claves:

  1. Genere un nuevo par de claves privada y pública siguiendo los pasos anteriores.
  2. Asigne la nueva clave pública al usuario en Snowflake, utilizando el parámetro que no esté en uso (RSA_PUBLIC_KEY o RSA_PUBLIC_KEY_2):
sql
ALTER USER example_user SET RSA_PUBLIC_KEY_2='JERUEHtcve...';
  1. Actualice la configuración del cliente en Crestone o en su aplicación para conectarse utilizando la nueva clave privada. Snowflake validará la autenticación contra la clave pública activa correspondiente.
  2. Una vez verificada la conexión con la nueva clave, elimine la clave pública antigua del perfil del usuario ejecutando:
sql
ALTER USER example_user UNSET RSA_PUBLIC_KEY;