Aperçu de OAuth Snowflake

Snowflake OAuth utilise le service intégré OAuth de Snowflake pour fournir une authentification basée sur OAuth.

Cette rubrique décrit Snowflake OAuth et comment utiliser Snowflake en tant que ressource OAuth et serveur d’autorisation pour accéder aux données Snowflake en toute sécurité.

Snowflake OAuth utilise le service OAuth intégré de Snowflake et prend en charge les applications suivantes :

Flux d’autorisation OAuth Snowflake

Le flux d’autorisation OAuth est le suivant :

Flux de travail OAuth Snowflake
  1. Dans le client, l’utilisateur tente de se connecter à Snowflake en utilisant OAuth.

    L’application envoie une demande d’autorisation au serveur d’autorisation Snowflake, qui affiche à son tour un écran d’autorisation demandant à l’utilisateur d’autoriser l’accès.

  2. L’utilisateur soumet le nom d’utilisateur et le mot de passe Snowflake. Un écran de consentement lui est alors présenté pour permettre au client d’accéder à Snowflake en utilisant un rôle spécifique dans une session utilisateur (par exemple SYSADMIN ou CUSTOM_ROLE1).

    L’utilisateur soumet son consentement à utiliser le rôle spécifique dans une session.

    Le serveur d’autorisation Snowflake renvoie un code d’autorisation au client.

  3. Le client renvoie le code d’autorisation au serveur d’autorisation Snowflake pour demander un jeton d’accès et, éventuellement, un jeton d’actualisation permettant au client d’obtenir de nouveaux jetons d’accès.

    Le serveur d’autorisation Snowflake accepte le code d’autorisation et fournit au client un jeton d’accès spécifique aux ressources utilisateur du serveur de ressources Snowflake. En fonction des paramètres de la demande d’autorisation, le serveur d’autorisation émet un jeton d’actualisation pour obtenir de nouveaux jetons d’accès liés à la ressource spécifique.

  4. Le client envoie le jeton d’accès au serveur de ressources Snowflake.

    Le serveur de ressources reconnaît le jeton d’accès valide et crée une session utilisateur avec le rôle autorisé. Le client a maintenant accès aux ressources Snowflake limitées par le rôle spécifié par le jeton d’accès.

    Par défaut, Snowflake empêche les rôles ACCOUNTADMIN, ORGADMIN, et SECURITYADMIN de s’authentifier. Pour permettre à ces rôles privilèges de s’authentifier, utilisez la commande ALTER ACCOUNT pour définir le paramètre de compte OAUTH_ADD_PRIVILEGED_ROLES_TO_BLOCKED_LIST sur FALSE.

Les jetons d’accès ont une vie courte ; en général 10 minutes. Lorsque le jeton d’accès arrive à expiration, le client peut envoyer un jeton d’actualisation pour obtenir de nouveaux jetons d’accès. Un jeton d’actualisation est envoyé au serveur d’autorisation Snowflake pour demander un nouveau jeton d’accès à chaque expiration du jeton d’accès actuel (étapes 3 à 6). Si l’intégration est configurée pour empêcher l’envoi de jetons d’actualisation, l’utilisateur doit répéter les étapes ci-dessus pour réautoriser le client.

Applications partenaires

Pour configurer la prise en charge, reportez-vous à Configurer Snowflake OAuth pour les applications partenaires.

Pour savoir comment utiliser OAuth sans passer par l’Internet public, reportez-vous à Applications partenaires.

Clients personnalisés

Snowflake prend en charge les clients personnalisés configurés par votre organisation. Pour configurer la prise en charge, reportez-vous à Configurer Snowflake OAuth pour les clients personnalisés.

Politiques réseau

Vous pouvez intégrer une politique réseau dédiée avec Snowflake OAuth uniquement. L’intégration de sécurité External OAuth ne prend pas en charge la définition d’une politique réseau distincte, mais vous pouvez néanmoins utiliser une politique réseau générale qui s’applique à l’ensemble du compte Snowflake.

L’intégration de sécurité OAuth de Snowflake possède un paramètre network_policy afin que l’intégration OAuth de Snowflake puisse authentifier et autoriser les utilisateurs sans ajouter ces adresses IP pour un accès utilisateur normal.

La configuration d’une politique réseau spécifique à l’intégration OAuth de Snowflake permet à la politique réseau OAuth de Snowflake d’être distincte des autres politiques réseau qui peuvent s’appliquer au compte Snowflake. Par conséquent, la politique réseau OAuth de Snowflake permet l’authentification et l’autorisation des utilisateurs comme prévu.

Une politique réseau appliquée à une intégration OAuth Snowflake est prioritaire sur une politique réseau appliquée à l’ensemble du compte Snowflake, mais elle n’est pas prise en compte par une politique réseau appliquée à un utilisateur.

Important

Si une politique réseau par utilisateur ou compte est définie et que vous utilisez un service qui s’exécute dans un emplacement différent (par exemple, le service Microsoft Power BI), vous ne pourrez pas vous connecter à Snowflake.

Après avoir créé l’intégration de sécurité OAuth de Snowflake, définissez la politique réseau OAuth à l’aide de cette commande :

ALTER SECURITY INTEGRATION <oauth_integration> SET NETWORK_POLICY = <oauth_network_policy>;
Copy

Pour annuler la politique réseau OAuth de Snowflake, utilisez cette commande :

ALTER SECURITY INTEGRATION <oauth_integration> UNSET <oauth_network_policy>;
Copy

Où :

<oauth_integration>

Spécifie le nom de l’intégration de sécurité OAuth de Snowflake.

<oauth_network_policy>

Spécifie la politique réseau OAuth de Snowflake dans Snowflake.

Pour plus d’informations, reportez-vous à Contrôle du trafic réseau avec des politiques réseau et à ALTER SECURITY INTEGRATION.

Codes d’erreur

Reportez-vous au tableau ci-dessous pour les descriptions des codes d’erreur associés à Snowflake OAuth :

Code d’erreur

Erreur

Description

390302

OAUTH_CONSENT_INVALID

Problème générant ou validant le consentement pour un utilisateur donné.

390303

OAUTH_ACCESS_TOKEN_INVALID

Le jeton d’accès fourni utilisé lors de la tentative de création d’une session Snowflake est arrivé à expiration ou n’est pas valide.

390304

OAUTH_AUTHORIZE_INVALID_RESPONSE_TYPE

Un response_type non valide a été fourni en tant que paramètre du point de terminaison d’autorisation (il devrait très probablement s’agir d’un code)

390305

OAUTH_AUTHORIZE_INVALID_STATE_LENGTH

Le paramètre d’état fourni en tant que paramètre du point de terminaison d’autorisation dépasse 2 048 caractères.

390306

OAUTH_AUTHORIZE_INVALID_CLIENT_ID

L’intégration associée à un identifiant client fourni n’existe pas.

390307

OAUTH_AUTHORIZE_INVALID_REDIRECT_URI

redirect_uri donné en tant que paramètre de point de terminaison d’autorisation ne correspond pas à redirect_uri de l’intégration associée à client_id fourni ou redirect_uri n’est pas formaté correctement.

390308

OAUTH_AUTHORIZE_INVALID_SCOPE

Soit la portée demandée n’est pas une portée valide, soit les portées demandées ne peuvent pas être entièrement accordées à l’utilisateur.

390309

OAUTH_USERNAMES_MISMATCH

L’utilisateur que vous avez essayé d’authentifier diffère de l’utilisateur lié au jeton d’accès.

390311

OAUTH_AUTHORIZE_INVALID_CODE_CHALLENGE_PARAMS

Le défi de code ou la méthode de défi de code est manquant, non valide, ou non pris en charge.

De plus, les erreurs suivantes proviennent du RFC et sont renvoyées dans le blob JSON créé lors d’une demande ou d’un échange de jetons infructueux :

Erreur

Description

invalid_client

Une erreur d’authentification du client est survenue. Le client est inconnu, le secret du client ne correspond pas, etc.

invalid_grant

L’octroi d’autorisation ou le jeton d’actualisation fourni n’est pas valide, a expiré, a été révoqué, ne correspond pas à l’URI de redirection utilisée dans la demande d’autorisation ou a été émis vers un autre client.

unsupported_grant_type

Un type d’octroi fourni actuellement n’est pas pris en charge par Snowflake (« jeton_actualisation » et « code_autorisation » sont les deux seuls types d’octrois pris en charge pour le moment).

invalid_request

La requête était mal formée ou n’a pas pu être traitée.