Aperçu de Snowflake OAuth¶
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 de Snowflake¶
Le flux d’autorisation OAuth est le suivant :
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.
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.
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.
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.
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. La politique réseau OAuth de Snowflake n’affecte pas les autres politiques réseau du compte et les autres politiques réseau du compte n’affectent pas la politique réseau OAuth de Snowflake. Par conséquent, la politique réseau OAuth de Snowflake permet l’authentification et l’autorisation des utilisateurs comme prévu.
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>;
Pour annuler la politique réseau OAuth de Snowflake, utilisez cette commande :
ALTER SECURITY INTEGRATION <oauth_integration> UNSET <oauth_network_policy>;
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 à 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 |
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 |
|
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. |