Paramètres de configuration et de connexion ODBC

Le pilote ODBC de Snowflake utilise des paramètres de configuration et de connexion. Les procédures de réglage des paramètres sont différentes selon l’environnement dans lequel le pilote est installé.

Dans ce chapitre :

Réglage des paramètres dans Windows

Dans Windows :

  • Les paramètres de configuration sont définis dans le registre Windows à l’aide de regedit et du chemin de registre suivant :

    [HKEY_LOCAL_MACHINE\SOFTWARE\Snowflake\Driver]
    
  • Les paramètres de connexion sont définis dans les noms de source de données (DSNs) :

    • Les DSNs sont généralement créés et modifiés à l’aide de l’outil Windows Data Source Administration.

    • Si vous le souhaitez, les clés de registre pour les DSNs peuvent être éditées directement dans le registre Windows en utilisant regedit. Le chemin de registre vers les clés est différent selon que vous utilisez Windows 64 bits ou 32 bits, et que vous éditez un DSN d’utilisateur ou système :

      • Windows 64 bits :

        [HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\<DSN_NAME>]
        
        [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\<DSN_NAME>]
        
      • Windows 32 bits :

        [HKEY_CURRENT_USER\SOFTWARE\WOW6432NODE\ODBC\ODBC.INI\<DSN_NAME>]
        
        [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\ODBC\ODBC.INI\<DSN_NAME>]
        

      Pour ajouter un paramètre de connexion à l’aide de regedit, ajoutez une nouvelle String Value, double-cliquez sur la valeur que vous avez créée, puis saisissez le paramètre ODBC en tant que Value name et la valeur du paramètre en tant que Value data.

Définition des paramètres dans macOS ou Linux

Sous macOS ou Linux :

  • Les paramètres de configuration sont définis dans le fichier de configuration (simba.snowflake.ini).

  • Les paramètres de connexion sont définis dans le fichier du nom de source de données (DSN) (odbc.ini).

Paramètres de configuration

LogLevel

Indique le niveau de détail enregistré pour les clients qui utilisent le pilote ODBC :

0 = Off
1 = Fatal
2 = Error
3 = Warning
4 = Info
5 = Debug
6 = Trace
LogPath

Indique l’emplacement des fichiers de journal Snowflake pour les clients qui utilisent le pilote ODBC.

CURLVerboseMode

Défini sur true pour activer la connexion « verbose » cURL. Le fichier de journal snowflake_odbc_curl.dmp est créé et mis à jour. Le pilote Snowflake ODBC utilise cURL comme bibliothèque HTTP et SSL. Ce paramètre est utile pour diagnostiquer les problèmes réseau.

Proxy

Indique un serveur de proxy sous la forme de port <hôte>:<port> pour les clients qui utilisent le pilote ODBC.

Note

Sous Windows, des entrées pour LogLevel et LogPath sont créées et renseignées avec des valeurs par défaut lorsque le pilote ODBC est installé. Cependant, une entrée pour Proxy n’est pas créée pendant l’installation. Pour spécifier un proxy à utiliser avec le pilote, vous devez ajouter manuellement l’entrée à la clé de registre de pilote.

Pour contourner le proxy pour une ou plusieurs adresses IP ou URLs, ajoutez le paramètre NoProxy.

NoProxy

Indique les modèles de nom d’hôte servant à contourner le serveur proxy (par exemple .amazonaws.com pour contourner l’accès Amazon S3).

Note

Le pilote ODBC Snowflake transmet la valeur NoProxy à l’option curl CURLOPT_NOPROXY. Le format de la valeur NoProxy se trouve ici.

CABundleFile

Définissez l’emplacement du fichier bundle de l’autorité de certification (CA). Doit faire référence à un fichier qui inclut une liste valide de certificats CA.

Pour Linux, les programmes d’installation RPM et DEB copient automatiquement le fichier et définissent ce paramètre.

Pour Mac, le programme d’installation PKG copie le fichier et définit ce paramètre.

Pour Windows, le programme d’installation MSI copie le fichier et définit ce paramètre.

Une installation manuelle nécessite de télécharger le fichier depuis https://curl.haxx.se/docs/caextract.html et de définir l’emplacement du fichier.

DisableOCSPCheck

Réglez sur true pour désactiver la vérification du statut de révocation du certificat TLS/SSL par le « Online Certificate Status Protocol » (OCSP). Dans des circonstances normales, cet indicateur ne doit pas être activé. Mais si le problème de disponibilité de OCSP persiste, l’application pourrait régler temporairement ce paramètre afin de débloquer les problèmes de connectivité et le supprimer lorsque le problème de disponibilité de OCSP est résolu.

KeepLeadingTrailingZeros

Détermine la façon dont les zéros de début et de fin correspondant à des nombres au format de valeurs de chaîne sont traités. Par défaut, le paramètre est réglé sur true, ce qui signifie que le pilote conserve tous les zéros de début ou de fin. Réglez le paramètre sur false pour supprimer les zéros de tête ou de fin, par exemple :

  • 0.23 est modifié en .23

  • 7.00 est modifié en 7

NoExecuteInSQLPrepare

Définissez sur true pour configurer le pilote ODBC afin qu’il utilise le comportement ODBC standard lors de la transmission d’instructions DDL (telles que CREATE et DROP) à SQLPrepare() et SQLExecute().

Dans Snowflake, par défaut, lorsque vous transmettez une instruction DDL à SQLPrepare(), le pilote ODBC envoie l’instruction à la source de données pour exécution (pas pour la préparation). Lorsque vous transmettez une instruction DDL à SQLExecute(), le pilote ODBC n’envoie pas l’instruction à la source de données.

Si vous définissez NoExecuteInSQLPrepare sur true, le pilote ODBC suit le comportement standard ODBC. L’appel de SQLPrepare() envoie l’instruction à la source de données pour la préparation (pas l’exécution). L’appel de SQLExecute() envoie l’instruction à la source de données pour l’exécution.

Dans la version 2.21.6 du pilote ODBC, ce paramètre a été introduit.

Paramètres de connexion

Paramètres de connexion requis

<nom> (source de données)

Spécifie le nom de votre DSN.

uid (utilisateur)

Indique le nom de connexion de l’utilisateur Snowflake à authentifier.

pwd (mot de passe)

Un mot de passe est requis pour se connecter à Snowflake. Cependant, pour des raisons de sécurité et d’authentification, Snowflake déconseille fortement le stockage des identifiants de mot de passe directement dans toute définition DSN.

Généralement, les informations d’identification sont transmises au pilote par programmation par l’application client qui tente de se connecter à Snowflake.

Note

Sous Windows, le pilote ODBC affiche un champ Password dans l’outil Data Source Administration. Cependant, le pilote ne stocke pas les valeurs saisies dans le champ. À la place, le pilote nécessite que les informations d’identification soient fournies au moment de la connexion.

server (serveur)

Spécifie le nom d’hôte de votre compte au format suivant :

nom_compte.snowflakecomputing.com

Cependant, notez que votre nom de compte complet peut inclure des segments supplémentaires identifiant la région et la plate-forme Cloud où votre compte est hébergé.

Exemples de noms de compte par région

Si votre nom de compte est xy12345 :

Plate-forme Cloud/Région

Nom de compte complet

AWS

US Ouest (Oregon)

xy12345

US Est (Ohio)

xy12345.us-east-2.aws

US Est (Virginie du Nord)

xy12345.us-east-1

US Est (Gouvernement commercial - Virginie du Nord)

xy12345.us-east-1-gov.aws

Canada (Centre)

xy12345.ca-central-1.aws

EU (Irlande)

xy12345.eu-west-1

EU (Francfort)

xy12345.eu-central-1

Asie-Pacifique (Tokyo)

xy12345.ap-northeast-1.aws

Asie Pacifique (Mumbai)

xy12345.ap-south-1.aws

Asie-Pacifique (Singapour)

xy12345.ap-southeast-1

Asie-Pacifique (Sydney)

xy12345.ap-southeast-2

GCP

US Central1 (Iowa)

xy12345.us-central1.gcp

Europe Ouest2 (Londres)

xy12345.europe-west2.gcp

Europe Ouest4 (Pays-Bas)

xy12345.europe-west4.gcp

Azure

Ouest US 2 (Washington)

xy12345.west-us-2.azure

Est US 2 (Virginie)

xy12345.east-us-2.azure

US Gov Virginia

xy12345.us-gov-virginia.azure

Canada Central (Toronto)

xy12345.canada-central.azure

Europe de l’Ouest (Pays-Bas)

xy12345.west-europe.azure

Suisse Nord (Zurich)

xy12345.switzerland-north.azure

Asie du Sud-Est (Singapour)

xy12345.southeast-asia.azure

Australie Est (Nouvelle-Galles du Sud)

xy12345.australia-east.azure

Important

Si l’une des conditions suivantes est remplie, le nom de votre compte est différent de la structure décrite dans cet exemple :

  • Si votre édition Snowflake est VPS, contactez le support Snowflake pour obtenir des détails sur le nom de votre compte.

  • Si AWS PrivateLink est activé pour votre compte, le nom de votre compte nécessite un segment privatelink supplémentaire. Pour plus de détails, voir AWS PrivateLink et Snowflake.

port (Port)

Spécifie le port sur lequel le pilote écoute la communication Snowflake.

Note

Vous n’avez pas besoin de changer la valeur par défaut Port de 443.

Paramètres de connexion facultatifs

database (base de données)

Indique la base de données par défaut à utiliser pour les sessions lancées par le pilote.

schema (schéma)

Indique le schéma par défaut à utiliser pour les sessions lancées par le pilote.

La valeur par défaut est public.

warehouse (entrepôt)

Indique l’entrepôt par défaut à utiliser pour les sessions lancées par le pilote.

role (rôle)

Indique le rôle par défaut à utiliser pour les sessions lancées par le pilote. Le rôle indiqué doit être un rôle qui a été affecté à l’utilisateur spécifié pour le pilote. Si le rôle spécifié ne correspond à aucun des rôles affectés à l’utilisateur, les sessions lancées par le pilote n’ont pas de rôle au départ. Toutefois, un rôle peut toujours être spécifié depuis la session.

tracing (traçage)

Le niveau de détail à enregistrer dans les fichiers de trace de pilote :

0 = Désactiver le traçage

1 = Uniquement traçage des erreurs fatales

2 = Traçage des erreurs

3 = Traçage des avertissements

4 = Traçage des informations

5 = Traçage des débogages

6 = Traçage détaillé

Paramètres de connexion supplémentaires

Note

Sous Windows, ces paramètres de connexion supplémentaires peuvent être définis dans le registre Windows à l’aide de la commande regedit.

Sous macOS ou Linux, ils sont définis dans le fichier odbc.ini, comme les autres paramètres de connexion.

application

Pour partenaire Snowflake uniquement : spécifie le nom d’une application partenaire à connecter via ODBC.

Ce paramètre peut également être défini en appelant la fonction SQLSetConnectAttr(). Pour plus d’informations, reportez-vous à la section relative au comportement de la fonction SQLSetConnectAttr, spécifique à Snowflake.

authenticator

Spécifie l’authentifiant à utiliser pour vérifier les informations d’identification d’utilisateur :

  • snowflake (par défaut) pour utiliser l’authentificateur interne Snowflake.

  • externalbrowser to use your web browser to authenticate with Okta, ADFS, or any other SAML 2.0-compliant identity provider (IdP) that has been defined for your account.

  • https://<votre_nom_compte_okta>.okta.com (c.-à-d. le point de terminaison d’URL pour Okta) pour vous authentifier via Okta (uniquement pris en charge si votre IdP est Okta).

  • oauth pour vous authentifier à l’aide de OAuth. Lorsque OAuth est spécifié comme authentificateur, vous devez également définir le paramètre token pour spécifier le jeton OAuth (voir ci-dessous).

La valeur par défaut est snowflake.

Pour plus d’informations sur l’authentification, voir Gestion/utilisation de l’authentification fédérée et OAuth avec les clients, les pilotes et les connecteurs.

token=<chaîne>

Spécifie le jeton OAuth à utiliser pour l’authentification, où <chaîne> est le jeton. Ce paramètre est requis uniquement lorsque le paramètre authenticator=oauth est défini.

La valeur par défaut est aucun.

passcode

Spécifie le code à utiliser pour l’authentification multifactorielle.

Pour plus d’informations sur l’authentification multifactorielle, voir Authentification multifactorielle (MFA).

passcodeInPassword

Indique si le code pour l’authentification multifactorielle est ajouté au mot de passe :

  • on (ou true) spécifie que le code est ajouté.

  • off (ou false) ou toute autre valeur spécifie que le code n’est pas ajouté.

La valeur par défaut est off.

login_timeout

Indique le temps d’attente pour l’obtention d’une réponse lors de la connexion au service Snowflake avant de renvoyer une erreur d’échec de connexion.

La valeur par défaut est 60 secondes.

network_timeout

Indique le temps d’attente pour l’obtention d’une réponse lors d’une interaction avec le service Snowflake avant de renvoyer une erreur. Zéro (0) indique qu’aucun délai d’attente réseau n’est défini.

La valeur par défaut est 0 seconde.

query_timeout

Indique le temps d’attente pour qu’une requête se termine avant de renvoyer une erreur. Zéro (0) indique une attente indéfinie.

La valeur par défaut est 0 seconde.

odbc_use_standard_timestamp_columnsize

Ce paramètre booléen a une incidence sur la largeur de colonne (en caractères) renvoyée pour SQL_TYPE_TIMESTAMP. Lorsque ce paramètre est défini sur True, le pilote renvoie 29, en suivant la norme ODBC. Lorsque ce paramètre est défini sur False, le pilote renvoie 35, ce qui laisse de la place pour le décalage de fuseau horaire (par exemple, « -08:00 »).

Cette valeur peut être définie via non seulement le fichier odbc.ini (linux ou macOS) ou le registre MS-Windows, mais également la chaîne de connexion.

La valeur par défaut est False.

proxy

Indique l’URL de serveur de proxy au format http://<nom_hôte>:<port>/ ou <nom_hôte>:<numéro_port> pour que toutes les communications depuis ODBC utilisent le serveur de proxy.

Note

Ce paramètre est appliqué au processus. Si une autre connexion partage le même processus, le paramètre de proxy doit être identique ou le comportement n’est pas prévisible.

no_proxy

Spécifie les terminaisons de nom d’hôte qui doivent être autorisées à ignorer le serveur proxy. Par exemple, no_proxy=.amazonaws.com signifie que l’accès d’Amazon S3 n’a pas besoin de passer par le proxy.

Ce paramètre ne prend pas en charge les caractères génériques. Chaque valeur spécifiée doit être l’une des suivantes :

  • La fin d’un nom d’hôte (ou d’un nom d’hôte complet), par exemple :

    • .amazonaws.com

    • xy12345.snowflakecomputing.com

  • Une adresse IP, par exemple :

    • 192.196.1.15

Si plusieurs valeurs sont spécifiées, elles doivent être séparées par des virgules, par exemple :

no_proxy=localhost,.my_company.com,xy12345.snowflakecomputing.com,192.168.1.15,192.168.1.16

Note

Ce paramètre est appliqué au processus. Si une autre connexion partage le même processus, le paramètre de proxy doit être identique ou le comportement n’est pas prévisible.

Vérification de la connexion réseau à Snowflake avec SnowCD

Après avoir configuré votre pilote, vous pouvez évaluer et dépanner votre connectivité réseau à Snowflake en utilisant SnowCD.

Vous pouvez utiliser SnowCD pendant le processus de configuration initiale et à la demande à tout moment pour évaluer et dépanner votre connexion réseau à Snowflake.

Connexion via un serveur de proxy

Les instructions de configuration d’une connexion au serveur de proxy dépendent de votre système d’exploitation et de la version du pilote :

Système d’exploitation

Version du pilote

Instructions prises en charge

Linux

2.16.0 (du 3 mai 2018) ou ultérieur

2.13.18 (du 7 février 2018) - 2.15.0 (du 30 avril 2018)

Utilisation de variables d’environnement

2.13.17 ou antérieur

Utilisation des paramètres de configuration

macOS

2.16.0 (du 3 mai 2018) ou ultérieur

2.14.0 (du 28 mars 2018) - 2.15.0 (du 30 avril 2018)

Utilisation de variables d’environnement

2.13.21 ou antérieur

Utilisation des paramètres de configuration

Windows

2.16.0 (du 3 mai 2018) ou ultérieur

2.15.0 (du 30 avril 2018)

Utilisation de variables d’environnement

2.14.0 ou antérieur

Utilisation des paramètres de configuration

Note

Les dernières versions du pilote ODBC , indiquées ci-dessus, prennent en charge toutes les options de configuration répertoriées. Les options sont répertoriées dans l’ordre de priorité. Si plus d’une option est définie, le paramètre ayant la priorité la plus élevée est appliqué.

Utilisation des paramètres de connexion

Pour se connecter via un serveur de proxy, ajoutez les paramètres de connexion suivants au DSN :

  • proxy

  • no_proxy

Par exemple :

[connection]
Description = SnowflakeDB
Driver      = SnowflakeDSIIDriver
Locale      = en-US
server      = account.snowflakecomputing.com
proxy       = http://proxyserver.company:80
no_proxy    = .amazonaws.com

Voir Paramètres de connexion pour la description des paramètres.

Utilisation des paramètres de configuration

Note

Ces paramètres sont obsolètes (c’est-à-dire qu’ils ne sont plus pris en charge) dans les versions récentes du pilote ODBC. Voir le tableau des options prises en charge dans Connexion via un serveur de proxy. Lorsque vous mettez à niveau votre pilote, configurez les paramètres de votre serveur de proxy en utilisant les variables d’environnement ou les paramètres de connexion.

Pour vous connecter via un serveur de proxy, ajoutez les paramètres de configuration suivants :

  • Proxy

  • NoProxy

Voir Paramètres de configuration pour la description des paramètres.

Utilisation de variables d’environnement

Pour vous connecter via un serveur de proxy, configurez les variables d’environnement suivantes :

  • http_proxy

  • https_proxy

  • no_proxy

Note

Ces variables d’environnement sont sensibles à la casse pour Linux et macOS, et doivent être définies en minuscules. Pour Windows, les variables d’environnement sont insensibles à la casse.

Par exemple :

  • Linux ou macOS :

    export http_proxy=http://proxyserver.company.com:80
    export https_proxy=http://proxyserver.company.com:80
    

    Si le serveur proxy nécessite un nom d’utilisateur et un mot de passe, indiquez les informations d’identification, par exemple :

    export https_proxy=http://username:password@proxyserver.company.com:80
    
  • Windows :

    set http_proxy=http://proxyserver.company.com:80
    set https_proxy=http://proxyserver.company.com:80
    

    Si le serveur proxy nécessite un nom d’utilisateur et un mot de passe, indiquez les informations d’identification, par exemple :

    set https_proxy=http://username:password@proxyserver.company.com:80
    

En option, vous pouvez définir no_proxy pour contourner le proxy pour des communications spécifiques (par exemple no_proxy=.amazonaws.com pour contourner l’accès Amazon S3).

Utilisation de la connexion unique (SSO) pour l’authentification

Si vous avez configuré Snowflake pour utiliser la connexion unique (SSO), vous pouvez configurer votre application cliente pour utiliser SSO pour l’authentification. Voir Utilisation de SSO avec des applications clientes qui se connectent à Snowflake pour plus de détails.

Utilisation de l’authentification par paire de clés

Snowflake utilise l’authentification par paire de clés plutôt que l’authentification par nom d’utilisateur/mot de passe typique. Cette méthode d’authentification nécessite une paire de clés de 2048 bits (minimum) RSA. Générez la paire de clés publiques-privées via OpenSSL. La clé publique est attribuée à l’utilisateur Snowflake qui utilisera le client Snowflake.

Astuce

Snowflake recommande d’utiliser un mot de passe long et complexe basé sur les normes PCI DSS pour protéger la clé privée générée localement.

Suivez ces étapes pour générer un mot de passe long et complexe basé sur les normes PCI DSS :

  1. Accédez à la bibliothèque de documents des normes de sécurité PCI.

  2. Pour PCI DSS, sélectionnez la version la plus récente et la langue de votre choix.

  3. Remplissez le formulaire pour accéder au document.

  4. 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, vous trouverez probablement cette phrase dans une section intitulée Requirement 8: Identify and authenticate access to system components (ou un nom similaire).

Pour configurer la paire de clés publiques/privées :

  1. Depuis la ligne de commande d’une fenêtre de terminal, 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 -inform PEM -out rsa_key.p8
    

    Il est généralement plus sûr de générer une version chiffrée.

    Si vous utilisez la deuxième commande pour chiffrer la clé privée, OpenSSL vous invite à indiquer une phrase secrète utilisée pour chiffrer le fichier de clé privée. Nous vous recommandons d’utiliser une phrase de chiffrement forte pour protéger la clé privée. Enregistrez cette phrase secrète dans un emplacement sécurisé. Vous l’entrerez lorsque vous vous connecterez à Snowflake. Notez que la phrase de chiffrement n’est utilisée que pour protéger la clé privée et ne sera jamais envoyée à Snowflake.

    Exemple de clé privée PEM

    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIIE6TAbBgkqhkiG9w0BBQMwDgQILYPyCppzOwECAggABIIEyLiGSpeeGSe3xHP1
    wHLjfCYycUPennlX2bd8yX8xOxGSGfvB+99+PmSlex0FmY9ov1J8H1H9Y3lMWXbL
    ...
    -----END ENCRYPTED PRIVATE KEY-----
    
  2. Depuis la ligne de commande, générez la clé publique en faisant référence à la clé privée :

    En supposant que la clé privée soit contenue dans le fichier nommé « rsa_key.p8 », utilisez la commande suivante :

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

    Exemple de clé publique PEM

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy+Fw2qv4Roud3l6tjPH4
    zxybHjmZ5rhtCz9jppCV8UTWvEXxa88IGRIHbJ/PwKW/mR8LXdfI7l/9vCMXX4mk
    ...
    -----END PUBLIC KEY-----
    
  3. 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 de chiffrement 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é.

  4. Attribuez la clé publique à l’utilisateur Snowflake en utilisant ALTER USER. Par exemple :

    ALTER USER jsmith SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
    

    Note

    • Seuls les administrateurs de sécurité (c’est-à-dire les utilisateurs ayant le rôle SECURITYADMIN) ou ayant un rôle supérieur peuvent modifier un utilisateur.

    • Excluez l’en-tête et le pied de page de la clé publique dans l’instruction SQL.

    Vérifiez l’empreinte de la clé publique de l’utilisateur en utilisant DESCRIBE USER :

    DESC USER jsmith;
    +-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------+
    | property                      | value                                               | default | description                                                                   |
    |-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------|
    | NAME                          | JSMITH                                              | null    | Name                                                                          |
    ...
    ...
    | RSA_PUBLIC_KEY_FP             | SHA256:nvnONUsfiuycCLMXIEWG4eTp4FjhVUZQUQbNpbSHXiA= | null    | Fingerprint of user's RSA public key.                                         |
    | RSA_PUBLIC_KEY_2_FP           | null                                                | null    | Fingerprint of user's second RSA public key.                                  |
    +-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------+
    

    Note

    La propriété RSA_PUBLIC_KEY_2_FP est décrite dans Rotation de clé (dans ce chapitre).

  5. Modifiez les entrées du nom de source de données (DSN) pour le pilote. Pour plus d’informations sur les entrées DSN, voir la rubrique correspondant à votre système d’exploitation :

    Ajoutez les paramètres suivants (sensibles à la casse) :

    AUTHENTICATOR = SNOWFLAKE_JWT

    Spécifie d’authentifier la connexion Snowflake à l’aide d’une authentification avec une paire de clés et un jeton Web JSON (JWT).

    JWT_TIME_OUT = entier

    En option. Spécifie la durée pendant laquelle Snowflake attend de recevoir le JWT (en secondes) avant l’expiration du délai. Si cela se produit, l’authentification échoue et le pilote renvoie une erreur Invalid JWT token. Pour résoudre les occurrences répétées de l’erreur, augmentez la valeur du paramètre. Par défaut : 30

    PRIV_KEY_FILE = chemin/rsa_key.p8

    Spécifie le chemin d’accès local au fichier de clé privée que vous avez créé (c’est-à-dire rsa_key.p8).

    La valeur définie dans DSN peut être remplacée en appelant la fonction SQLSetConnectAttr(). Pour plus d’informations, reportez-vous à la section relative au comportement de la fonction SQLSetConnectAttr, spécifique à Snowflake.

    PRIV_KEY_FILE_PWD = <password>

    Spécifie le code d’authentification pour décoder le fichier de clé privée.

    Ce paramètre ne doit être défini que si le paramètre PRIV_KEY_FILE est également défini.

    La valeur définie dans DSN peut être remplacée en appelant la fonction SQLSetConnectAttr(). Pour plus d’informations, reportez-vous à la section relative au comportement de la fonction SQLSetConnectAttr, spécifique à Snowflake.

  6. Enregistrez les paramètres.

Rotation de clé

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.

Pour faire tourner vos clés :

  1. Effectuez les étapes de la section Utilisation de l’authentification par paire de clés pour :

    • 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 RSA_PUBLIC_KEY_2 (la valeur de la clé qui n’est pas actuellement utilisée). Par exemple :

      alter user jsmith set rsa_public_key_2='JERUEHtcve...';
      
  2. 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.

  3. Retirez l’ancienne clé publique du profil utilisateur. Par exemple :

    alter user jsmith unset rsa_public_key;
    

Vérification de la version du connecteur ou du pilote OCSP

Snowflake utilise OCSP pour évaluer la chaîne de certificats lors d’une connexion à Snowflake. La version du pilote ou du connecteur et sa configuration déterminent le comportement OCSP. Pour plus d’informations sur la version du pilote ou du connecteur, leur configuration et le comportement de OCSP, voir Configuration d’OCSP.

Serveur de cache de réponse OCSP

Note

Le serveur de cache de réponse OCSP est actuellement pris en charge par le pilote Snowflake ODBC 2.15.0 et supérieur.

Les clients Snowflake initient chaque connexion à un point de terminaison de service Snowflake avec un « handshake » qui établit une connexion sécurisée avant de transférer les données. Dans le cadre du « handshake », un client authentifie le certificat TLS/SSL pour le point de terminaison de service. Le statut de révocation du certificat est vérifié en envoyant une demande de certificat client à l’un des serveurs OCSP (Online Certificate Status Protocol) pour le CA (autorité de certification).

Une défaillance de connexion se produit lorsque la réponse du serveur OCSP est retardée au-delà d’un délai raisonnable. Les caches suivants persistent le statut de révocation, ce qui permet de limiter ces problèmes :

  • La mémoire cache, qui continue d’exister durant la vie du processus.

  • Le cache de fichier, qui continue d’exister jusqu’à ce que le répertoire de cache (par exemple ~/.cache/snowflake ou ~/.snowsql/ocsp_response_cache) soit purgé.

  • Le serveur de cache de réponse OCSP Snowflake qui collecte toutes les heures les réponses OCSP des serveurs OCSP du CA et les stocke pendant 24 heures. Les clients peuvent alors interroger le statut de validation d’un certificat Snowflake donné à partir de ce cache serveur.

    Important

    Si votre politique de serveur refuse l’accès à la plupart ou à la totalité des adresses IP et sites Web externes, vous devez ajouter l’adresse du serveur de cache à la liste blanche pour permettre le fonctionnement normal du service. Le nom d’hôte du serveur de cache est ocsp*.snowflakecomputing.com:80.

    Si vous avez besoin de désactiver le serveur de cache pour une raison quelconque, réglez la variable d’environnement SF_OCSP_RESPONSE_CACHE_SERVER_ENABLED sur false. Notez que la valeur est sensible à la casse et doit être en minuscules.

Si aucune des couches du cache ne contient la réponse OCSP, le client tente alors de récupérer le statut de validation directement depuis le serveur OCSP du CA.