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 :

  1. Configurer l’authentification par paire de clés

  2. Générer un jeton JWT

Configurer l’authentification par paire de clés

Pour utiliser l’authentification par paire de clés, suivez ces étapes :

  1. Configurez l’authentification par paire de clés.

    Dans le cadre de ce processus, vous devez :

    1. 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).

    2. 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.

  2. 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
    
    Copy

    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 :

  1. 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.

  2. 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 et user 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)

  3. Dans chaque requête API que vous envoyez, définissez les en-têtes suivants :

    • Authorization: Bearer JWT

      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 :

  1. 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.

  2. 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>
    
    Copy
    • Pour les systèmes Windows

    $ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token="<oauth_token>"
    
    Copy
  3. Dans chaque requête d’API que vous envoyez, définissez les en-têtes suivants :

    • Authorization: Bearer oauth_token

      oauth_token est le jeton OAuth généré.

    • X-Snowflake-Authorization-Token-Type: OAUTH