Authentification d”Snowflake REST APIs avec Snowflake¶
Cette rubrique décrit comment s’authentifier auprès du serveur lors de l’utilisation de Snowflake REST APIs.
Lorsque vous envoyez une requête, celle-ci doit inclure des informations d’authentification utilisant l’un ou l’autre des éléments suivants :
Utilisation de l’authentification par paire de clés¶
Lorsque vous utilisez l’authentification par paire de clés, vous devez effectuer les tâches suivantes :
Configurer l’authentification par paire de clés¶
Pour utiliser l’authentification par paire de clés, suivez ces étapes :
Configurez l’authentification par paire de clés.
Dans le cadre de ce processus, vous devez :
Générer une paire de clés publique-privée. La clé privée générée doit se trouver dans un fichier (par exemple, nommé
rsa_key.p8
).Attribuez la clé publique à votre utilisateur Snowflake. Après avoir attribué la clé à l’utilisateur, exécutez la commande DESCRIBE USER. Dans la sortie, la propriété
RSA_PUBLIC_KEY_FP
doit être définie comme l’empreinte de la clé publique attribuée à l’utilisateur.
Pour des instructions sur la façon de générer la paire de clés et d’attribuer une clé à un utilisateur, voir Authentification par paire de clés et rotation de paires de clés.
Utilisez SnowSQL pour vérifier que vous pouvez utiliser la clé privée générée pour vous connecter à Snowflake :
$ snowsql -a <account_identifier> -u <user> --private-key-path <path>/rsa_key.p8
Si vous avez généré une clé privée cryptée, SnowSQL vous invite à saisir la phrase secrète que vous avez créée lors de la génération de la clé.
Générer un jeton JWT¶
Pour générer un jeton JWT dans votre code d’application, procédez comme suit :
Générez l’empreinte digitale (un hachage SHA-256) de la clé publique de l’utilisateur. Préfixez l’empreinte digitale avec
SHA256:
.Par exemple :
SHA256:hash
Vous pouvez également exécuter la commande SQL DESCRIBE USER pour obtenir la valeur de la propriété RSA_PUBLIC_KEY_FP.
Générez un jeton Web JSON (JWT) avec les champs suivants dans la charge utile :
Champ
Description
Exemple
iss
Émetteur du JWT. Réglez-le sur la valeur suivante :
account_identifier.user.SHA256:public_key_fingerprint
où :
account_identifier
est votre identificateur de compte Snowflake.Si vous utilisez le localisateur de compte, excluez toute information sur la région du localisateur de compte.
user
est votre nom d’utilisateur Snowflake.SHA256:public_key_fingerprint
est l’empreinte de la clé que vous avez générée à l’étape précédente.
Note
Les valeurs
account_identifier
etuser
doivent utiliser tous les caractères majuscules.MYORGANIZATION-MYACCOUNT.MYUSER.SHA256:public_key_fingerprint
sub
Objet pour le JWT. Réglez-le sur la valeur suivante :
account_identifier.user
MYORGANIZATION-MYACCOUNT.MYUSER
iat
Heure d’émission pour les JWT au format UTC. Définissez la valeur de l’heure actuelle en secondes ou en millisecondes.
1615370644
(secondes) .1615370644000
(millisecondes)exp
Heure d’expiration pour les JWT au format UTC. Vous pouvez spécifier la valeur en secondes ou en millisecondes.
Note
Le JWT est valide au maximum une heure après l’émission du jeton, même si vous spécifiez un délai d’expiration plus long.
1615374184
(secondes) .1615374184000
(millisecondes)Dans chaque requête API que vous envoyez, définissez les en-têtes suivants :
Authorization: Bearer JWT
où
JWT
est le jeton que vous avez généré.X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT
Utilisation de OAuth¶
Pour utiliser OAuth, suivez les étapes suivantes :
Configurez OAuth pour l’authentification.
Voir Introduction à OAuth pour plus de détails sur la façon de configurer OAuth et d’obtenir un jeton OAuth.
Utilisez SnowSQL pour vérifier que vous pouvez utiliser un jeton OAuth généré pour vous connecter à Snowflake :
Pour les systèmes Linux et MacOS
$ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token=<oauth_token>
Pour les systèmes Windows
$ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token="<oauth_token>"
Dans chaque requête d’API que vous envoyez, définissez les en-têtes suivants :
Authorization: Bearer oauth_token
où
oauth_token
est le jeton OAuth généré.X-Snowflake-Authorization-Token-Type: OAUTH