Configurer Snowflake OAuth pour les applications partenaires¶
Ce chapitre explique comment configurer l’accès OAuth à Snowflake pour les applications partenaires Snowflake prises en charge. Ce processus nécessite la création d’une intégration, un objet Snowflake de première classe qui définit l’interface entre Snowflake et une application ou un service tiers.
Important
Lors de la connexion à Snowflake à l’aide d’une application tierce, Snowflake vous recommande de vérifier que le flux d’intégration utilisé par l’application répond à vos exigences de sécurité internes. Vous pouvez contacter directement le partenaire pour obtenir des détails sur son flux de bout en bout utilisé pour cette fonctionnalité.
Note
Le changement de rôle en cours de session vers des rôles secondaires n’est pas pris en charge par Snowflake OAuth.
Si ce comportement est nécessaire avec votre flux de travail OAuth, utilisez plutôt OAuth externe.
Pour plus d’informations, voir Utilisation de rôles secondaires avec External OAuth.
Actuellement, Snowflake OAuth prend en charge les applications suivantes :
Client |
Version client requise |
Type de client |
---|---|---|
2019.1 ou supérieur |
Public |
|
6.20 ou supérieur |
||
Voir la documentation de l’Alation |
||
Voir la documentation ThoughtSpot |
||
Voir la documentation Collibra |
Dans ce chapitre :
Configuration d’une intégration OAuth Snowflake¶
Créez une intégration à l’aide de la commande CREATE SECURITY INTEGRATION. Une intégration est un objet Snowflake qui fournit une interface entre Snowflake et des services tiers, tels qu’un client prenant en charge OAuth de Snowflake.
Note
Seuls les administrateurs de compte (c’est-à-dire les utilisateurs dotés du rôle système ACCOUNTADMIN) ou un rôle disposant du privilège global CREATE INTEGRATION peuvent exécuter cette commande SQL.
CREATE [ OR REPLACE ] SECURITY INTEGRATION [ IF NOT EXISTS ]
<name>
TYPE = OAUTH
ENABLED = { TRUE | FALSE }
OAUTH_CLIENT = <partner_application>
oauthClientParams
[ COMMENT = '<string_literal>' ]
Où :
oauthClientParams
oauthClientParams ::= [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ] [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ] [ BLOCKED_ROLES_LIST = ('<role_name>', '<role_name>') ]
Blocage de rôles spécifiques pour les empêcher d’utiliser l’intégration¶
Le paramètre BLOCKED_ROLES_LIST facultatif vous permet de répertorier les rôles Snowflake qu’un utilisateur ne peut pas consentir explicitement d’utiliser avec l’intégration.
Par défaut, les rôles ACCOUNTADMIN, SECURITYADMIN, et ORGADMIN sont inclus dans cette liste et ne peuvent pas être supprimés. Si votre entreprise a besoin d’autoriser des utilisateurs à utiliser OAuth de Snowflake avec ces rôles et que votre équipe de sécurité le permet, contactez le support de Snowflake pour demander que ces rôles soient autorisés pour votre compte.
Contrôle de la fréquence de connexion¶
Lorsqu’un utilisateur s’est authentifié avec succès, l’application partenaire peut utiliser le jeton d’actualisation émis pour demander de nouveaux jetons d’accès de courte durée et ne pas inviter l’utilisateur à répéter le processus de connexion jusqu’à l’expiration du jeton d’actualisation. Le paramètre facultatif OAUTH_REFRESH_TOKEN_VALIDITY spécifie la durée pendant laquelle un jeton d’actualisation est valide (en secondes). Ce paramètre peut être utilisé pour entraîner l’expiration périodique du jeton d’actualisation, forçant l’utilisateur à répéter le processus de connexion.
Les valeurs minimale, maximale et par défaut prises en charge pour le paramètre OAUTH_REFRESH_TOKEN_VALIDITY sont les suivantes :
Application |
Minimum |
Maximum |
Par défaut |
---|---|---|---|
Tableau Desktop |
|
|
|
Tableau Server ou Tableau Online |
|
|
|
Si votre entreprise a besoin de réduire la valeur minimale ou d’augmenter la valeur maximale, veuillez contacter le support Snowflake pour demander la modification de votre compte.
Utilisation de la redirection des clients avec Snowflake OAuth pour les applications partenaires¶
Snowflake prend en charge l’utilisation de la redirection des clients avec OAuth de Snowflake pour les applications partenaires, y compris l’utilisation de la redirection des clients et OAuth de Snowflake avec les clients Snowflake pris en charge.
Pour plus d’informations, voir Rediriger les connexions du client.
Gestion des politiques réseau¶
Snowflake prend en charge les politiques réseau pour OAuth de Snowflake. Pour plus d’informations, voir Politiques réseau.
Exemples¶
Tableau Desktop
L’exemple suivant crée une intégration de OAuth de Snowflake avec les paramètres par défaut :
CREATE SECURITY INTEGRATION td_oauth_int1 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_DESKTOP;Afficher les paramètres d’intégration à l’aide de DESCRIBE INTEGRATION :
DESC SECURITY INTEGRATION td_oauth_int1;L’exemple suivant crée une intégration OAuth de Snowflake avec des jetons d’actualisation expirant après 10 heures (36 000 secondes). L’intégration empêche les utilisateurs de démarrer une session avec SYSADMIN comme rôle actif :
CREATE SECURITY INTEGRATION td_oauth_int2 TYPE = OAUTH ENABLED = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 36000 BLOCKED_ROLES_LIST = ('SYSADMIN') OAUTH_CLIENT = TABLEAU_DESKTOP;
Tableau Server ou Tableau Online
L’exemple suivant crée une intégration de OAuth de Snowflake avec les paramètres par défaut :
CREATE SECURITY INTEGRATION ts_oauth_int1 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_SERVER;Afficher les paramètres d’intégration à l’aide de DESCRIBE INTEGRATION :
DESC SECURITY INTEGRATION ts_oauth_int1;L’exemple suivant crée une intégration OAuth de Snowflake avec des jetons d’actualisation expirant après un jour (86 400 secondes). L’intégration empêche les utilisateurs de démarrer une session avec SYSADMIN comme rôle actif :
CREATE SECURITY INTEGRATION ts_oauth_int2 TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = TABLEAU_SERVER OAUTH_REFRESH_TOKEN_VALIDITY = 86400 BLOCKED_ROLES_LIST = ('SYSADMIN');
Connexion à Snowflake à partir d’une application partenaire¶
Tableau¶
Suivez les instructions fournies par Tableau pour vous connecter à Snowflake à l’aide de Snowflake OAuth.
Looker¶
Suivez les étapes fournies par Looker pour vous connecter à Snowflake à l’aide de Snowflake OAuth.
Alation¶
Accédez à la communauté Alation et suivez les instructions fournies par Alation pour vous connecter à Snowflake en utilisant Snowflake OAuth.
ThoughtSpot¶
Accédez à la documentation ThoughtSpot et suivez les instructions pour créer une connexion à Snowflake, qui comprend une étape sur la façon de configurer Snowflake OAuth.
Collibra¶
Accédez à la documentation Collibra et suivez les instructions fournies par Collibra pour vous connecter à Snowflake en utilisant Snowflake OAuth.
Gestion du consentement de l’utilisateur¶
Cette section explique comment gérer les autorisations déléguées, c’est-à-dire que le consentement de l’utilisateur est donné à un ou plusieurs clients associés aux intégrations Snowflake.
Afficher les consentements OAuth Snowflake¶
Répertoriez les autorisations déléguées actives pour lesquelles vous avez des privilèges d’accès, en utilisant SHOW DELEGATED AUTHORIZATIONS :
SHOW DELEGATED AUTHORIZATIONS;
+-------------------------------+-----------+-----------+-------------------+--------------------+
| created_on | user_name | role_name | integration_name | integration_status |
|-------------------------------+-----------+-----------+-------------------+--------------------|
| 2018-11-27 07:43:10.914 -0800 | JSMITH | PUBLIC | MY_OAUTH_INT | ENABLED |
+-------------------------------+-----------+-----------+-------------------+--------------------+
Répertoriez les autorisations déléguées actives pour un utilisateur spécifié. Les utilisateurs peuvent répertorier leurs propres autorisations déléguées ; sinon, cette variante de commande nécessite le privilège OWNERSHIP sur l’utilisateur.
SHOW DELEGATED AUTHORIZATIONS
BY USER <username>;
Répertoriez les autorisations déléguées actives pour une intégration spécifiée. Cette variante de commande nécessite le privilège OWNERSHIP sur l’intégration (c’est-à-dire le rôle ACCOUNTADMIN) :
SHOW DELEGATED AUTHORIZATIONS
TO SECURITY INTEGRATION <integration_name>;
Révoquer le consentement¶
Un utilisateur peut révoquer le consentement d’une intégration spécifiée. Cela a pour effet de révoquer tout jeton d’accès associé à l’intégration.
Pour révoquer le consentement de l’utilisateur pour une intégration donnée, exécutez la commande ALTER USER … REMOVE DELEGATED AUTHORIZATIONS.
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 exécuter cette commande SQL.
ALTER USER <username> REMOVE DELEGATED AUTHORIZATIONS
FROM SECURITY INTEGRATION <integration_name>
Où :
username
Spécifie l’utilisateur pour qui vous révoquez le consentement.
integration_name
Spécifie l’intégration associée aux jetons d’accès pour un client spécifique.
Pour révoquer le consentement de l’utilisateur associé à un rôle spécifique, incluez le paramètre OF ROLE role_name
dans l’instruction :
ALTER USER <username> REMOVE DELEGATED AUTHORIZATION
OF ROLE <role_name>
FROM SECURITY INTEGRATION <integration_name>
Où :
role_name
Spécifie le rôle associé au jeton d’accès.
Tous les jetons d’accès associés au rôle sont révoqués.
Codes d’erreur¶
Voir les Codes d’erreur pour une liste de codes d’erreur associés à OAuth, ainsi que les erreurs qui sont renvoyées dans le blob JSON, pendant le flux d’autorisation, la demande ou l’échange de jetons, ou lors de la création d’une session Snowflake après avoir terminé le flux OAuth.