Authentification par paire de clés et rotation de paires de clés¶
Ce chapitre décrit l’utilisation de l’authentification par paire de clés et la rotation des paires de clés dans Snowflake.
Dans ce chapitre :
Vue d’ensemble¶
Snowflake prend en charge l’utilisation de l’authentification par paire de clés pour une sécurité d’authentification renforcée comme alternative à l’authentification de base telle que via le nom d’utilisateur et le mot de passe.
Cette méthode d’authentification requiert, au minimum, une paire de clés de 2048 bits RSA. Vous pouvez générer la paire de clés publiques-privées PEM (Privacy Enhanced Mail) via OpenSSL. Certains des clients Snowflake pris en charge permettent d’utiliser des clés privées cryptées pour se connecter à Snowflake. La clé publique est attribuée à l’utilisateur Snowflake qui utilise le client Snowflake pour se connecter et s’authentifier à Snowflake.
Snowflake prend également en charge la rotation des clés publiques dans un effort pour permettre la conformité avec des postures de sécurité et de gouvernance plus robustes.
Clients Snowflake pris en charge¶
Le tableau suivant résume la prise en charge de l’authentification par paire de clés parmi les clients Snowflake. Une coche (✔) indique une prise en charge complète. Une coche manquante indique que l’authentification par paire de clés n’est pas prise en charge.
Client |
Authentification par paire de clés |
Rotation de paire de clés |
Clés privées non chiffrées |
|
---|---|---|---|---|
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
|||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
Configuration de l’authentification par paire de clés¶
Effectuez les étapes suivantes pour configurer l’authentification par paire de clés pour tous les clients Snowflake pris en charge.
Générer la clé privée¶
Selon le client Snowflake pris en charge que vous utilisez pour vous connecter à Snowflake, vous avez la possibilité de générer des clés privées chiffrées ou non. En général, il est plus sûr de générer des clés chiffrées. Snowflake recommande de communiquer avec vos responsables de la sécurité interne et de la gouvernance pour déterminer le type de clé à générer avant d’effectuer cette étape.
Astuce
La commande de génération d’une clé chiffrée demande une phrase secrète pour réguler l’accès à la clé. Snowflake recommande d’utiliser une phrase secrète conforme aux normes PCI DSS pour protéger la clé privée générée localement. En outre, Snowflake recommande de conserver la phrase secrète dans un endroit sûr. Si vous utilisez une clé chiffrée pour vous connecter à Snowflake, saisissez la phrase secrète lors de la connexion initiale. La phrase secrète n’est utilisée que pour protéger la clé privée et ne sera jamais envoyée à Snowflake.
Pour générer une phrase secrète longue et complexe basée sur les normes PCI DSS, procédez ainsi :
Accédez à la bibliothèque de documents des normes de sécurité PCI.
Pour PCI DSS, sélectionnez la version la plus récente et la langue de votre choix.
Remplissez le formulaire pour accéder au document.
Recherchez
Passwords/passphrases must meet the following:
et suivez les recommandations relatives aux exigences, tests et conseils relatifs au mot de passe/phrase secrète. Selon la version du document, la phrase se trouve probablement dans une section appeléeRequirement 8: Identify and authenticate access to system components
ou portant un nom similaire.
Pour commencer, ouvrez une fenêtre de terminal et générez une clé privée.
Vous pouvez générer une version chiffrée de la clé privée ou une version non chiffrée de la clé privée.
Pour générer une version non chiffrée, utilisez la commande suivante :
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Pour générer une version chiffrée, utilisez la commande suivante, qui omet -nocrypt
:
openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
Les commandes génèrent une clé privée au format PEM.
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIE6T...
-----END ENCRYPTED PRIVATE KEY-----
Générer une clé publique¶
Depuis la ligne de commande, générez la clé publique en faisant référence à la clé privée. La commande suivante estime que la clé privée est chiffrée et contenue dans le fichier nommé rsa_key.p8
.
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
La commande génère la clé publique au format PEM.
-----BEGIN PUBLIC KEY-----
MIIBIj...
-----END PUBLIC KEY-----
Stocker les clés privées et publiques en toute sécurité¶
Copiez les fichiers de clés publiques et privées dans un répertoire local en vue de leur stockage. Enregistrez le chemin d’accès aux fichiers. Notez que la clé privée est stockée au format PKCS#8 (Public Key Cryptography Standards) et est chiffrée à l’aide de la phrase secrète que vous avez spécifiée à l’étape précédente.
Toutefois, le fichier doit toujours être protégé contre tout accès non autorisé au moyen du mécanisme d’autorisation de fichier fourni par votre système d’exploitation. Il est de votre responsabilité de sécuriser le fichier lorsqu’il n’est pas utilisé.
Attribuer la clé publique à un utilisateur Snowflake¶
Exécutez une commande ALTER USER pour attribuer la clé publique à un utilisateur Snowflake.
ALTER USER jsmith SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
Note
Seuls les propriétaires d’un utilisateur ou les utilisateurs ayant le rôle SECURITYADMIN ou un rôle supérieur peuvent modifier un utilisateur. Pour plus d’informations, voir Aperçu du contrôle d’accès et GRANT OWNERSHIP
Exclure les délimiteurs de la clé publique dans l’instruction SQL.
Vérifier l’empreinte digitale de la clé publique de l’utilisateur¶
Exécutez la commande suivante pour récupérer l’empreinte digitale de la clé publique de l’utilisateur :
DESC USER jsmith; SELECT TRIM((SELECT "value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE "property" = 'RSA_PUBLIC_KEY_FP'), 'SHA256:');
Sortie :
Azk1Pq...
Copiez la sortie.
Exécutez la commande suivante sur la ligne de commande :
openssl rsa -pubin -in rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl enc -base64
Sortie :
writing RSA key Azk1Pq...
Comparez les deux sorties. Si les deux sorties correspondent, cela signifie que l’utilisateur a correctement configuré sa clé publique.
Configurer le client Snowflake pour qu’il utilise l’authentification par paire de clés¶
Mettez à jour le client pour qu’il utilise l’authentification par paire de clés pour se connecter à Snowflake.
Configuration de la rotation de paires de clés¶
Snowflake accepte plusieurs clés actives pour permettre une rotation ininterrompue. Faites pivoter et remplacez vos clés publiques et privées en fonction du calendrier d’expiration que vous suivez en interne.
Actuellement, vous pouvez utiliser les paramètres RSA_PUBLIC_KEY
et RSA_PUBLIC_KEY_2
pour ALTER USER afin d’associer jusqu’à 2 clés publiques à un seul utilisateur.
Suivez ces étapes pour configurer la rotation des paires de clés et faire tourner vos clés.
Effectuez toutes les étapes à la section Configuration de l’authentification par paire de clés avec les mises à jour suivantes :
Générer un nouvel ensemble de clés privées et publiques.
Attribuer la clé publique à l’utilisateur. Définir la valeur de la clé publique sur
RSA_PUBLIC_KEY
ou surRSA_PUBLIC_KEY_2
, suivant la valeur de la clé qui n’est actuellement pas utilisée. Par exemple :ALTER USER jsmith SET RSA_PUBLIC_KEY_2='JERUEHtcve...';
Mettez à jour le code pour vous connecter à Snowflake. Spécifiez la nouvelle clé privée.
Snowflake vérifie la bonne clé publique active pour l’authentification sur la base de la clé privée soumise avec vos informations de connexion.
Retirez l’ancienne clé publique du profil utilisateur à l’aide de la commande ALTER USER.
ALTER USER jsmith UNSET RSA_PUBLIC_KEY;