Comment sécuriser l’accès à Snowflake ?
Snowflake, c’est quoi ?
En quelques mots, Snowflake est un entrepôt de données (Data Warehouse) hébergé dans le cloud et capable de gérer des gros volumes de données.
Doté d’une architecture brevetée, Snowflake combine les possibilités d’un entrepôt de données et la flexibilité permise par le cloud.
Il est particulièrement simple d’utilisation pour ceux qui maîtrisent le langage SQL et propose une solution concrète au déferlement des données dans les organisations.
Sécuriser Snowflake en 4 étapes
Il existe plusieurs méthodes pour se connecter de manière sécurisée sur Snowflake
- Le SSO (single sign-on ou authentification unique) qui permet d’accéder à plusieurs applications via une seule authentification
- La connexion identifiant/mot de passe auquel que l’on peut renforcer avec l’ajout d’un second appareil pour validation (Smartphone, par exemple).
- Les clés de chiffrage
C’est cette dernière que nous allons développer ici, car c’est celle que nous trouvons la plus adaptée et la plus sécurisée à nos projets et ceux de nos clients.
Chez Effidic, nous privilégions en effet les clés de chiffrage pour les besoins de connexion technique et de communication entre Snowflake et d’autres outils tels que les ETL ou les ELT.
Voici les principales étapes à suivre pour générer une connexion sécurisée à Snowflake :
1. Générer des Clés SSL avec l’outil OpenSSL
La sécurisation se fait par paires de clés (clé publique et clé privée). Ces clés peuvent être chiffrées via une « passphrase » (mot de passe plus long, qui peut prendre la forme d’une phrase).
Cette première étape permet ainsi de générer :
a. Un fichier privé
La ligne de commande à lancer est la suivante (sous linux, ou dans un terminal ubuntu disponible dans le Windows Store) :
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -v1 PBE-SHA1-RC4-128 -out rsa_key.p8
NB : Le choix de l’algorithme est ici spécifique (non décrit dans la documentation officielle Snowflake) pour une compatibilité jdk 8, utile notamment pour Talend ou DBeaver.
b. Un fichier public
La ligne de commande à lancer est la suivante (sous linux, ou dans un terminal ubuntu disponible dans le Windows Store) :
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
c. Une passphrase pour déchiffrer le fichier privé
2. Affecter la clé publique sur le user identifié
Cette manipulation permettra au user Snowflake de faire le lien avec la clé privée qui lui sera envoyé par les outils tiers.
alter user xxxxx set rsa_public_key=’xxxxxxxxxxxxxxxxxxxxxxxxxxx’ ;
PS: Enlever les retours à la ligne de la clé publique
3. Désactiver l’accès login/mot de passe
alter user xxxxx unset password;
4. Fournir la clé privée au sein de l’outil externe
Cette clé est fournie dans l’outil de manipulation des données (ETL / ELT, outil de requêtage type DBeaver, etc.), soit sous forme de fichier, soit la clé directement. La passphrase pour pouvoir déchiffrer cette clé est également fournie à ce moment-là.