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é.
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 |
Important
Actuellement, Tableau prend en charge OAuth uniquement lorsque la technologie de Tableau peut accéder à l’Internet public.
De même, Looker prend en charge OAuth uniquement lorsque les Instances hébergées par Looker peuvent accéder à l’Internet public. Notez que cette limitation n’affecte pas les implémentations de Looker hébergées par le client (c’est-à-dire les implémentations on-premises).
Par conséquent, les clients utilisant AWS PrivateLink ou Azure Private Link peuvent rencontrer des problèmes s’ils tentent d’utiliser OAuth et Tableau ou OAuth et Looker avec Snowflake. Veuillez contacter Tableau ou Looker, respectivement, pour des questions ou plus de détails.
Dans ce chapitre :
Étape 1. Configuration d’une intégration OAuth¶
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.
Note
Seuls les administrateurs de compte (utilisateurs dotés du rôle 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 lors de l’utilisation de 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 d’administrateur de compte (c’est-à-dire les utilisateurs avec le rôle système ACCOUNTADMIN) et d’administrateur de sécurité (c’est-à-dire les utilisateurs avec le rôle système SECURITYADMIN) sont inclus dans cette liste et ne peuvent pas être supprimés. Si votre entreprise a besoin d’autoriser des utilisateurs à utiliser OAuth avec ces rôles et que votre équipe de sécurité est à l’aise pour le permettre, 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.
Gestion des politiques réseau¶
Snowflake prend en charge les politiques réseau pour OAuth. Pour plus d’informations, voir OAuth et politiques réseau.
Exemples¶
Tableau Desktop
L’exemple suivant crée une intégration OAuth 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 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');
Tableau Server ou Tableau Online
L’exemple suivant crée une intégration OAuth 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 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');
Étape 2. Connexion à Snowflake à partir d’une application partenaire¶
Tableau¶
Suivez les instructions fournies par Tableau pour vous connecter à Snowflake à l’aide de Snowflake OAuth.
Important
Actuellement, les applications Tableau peuvent uniquement autoriser le rôle par défaut pour un utilisateur ; en revanche, si aucun rôle par défaut n’est défini, le rôle PUBLIC est utilisé en tant que rôle actif pour la session.
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.
Gérer le 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¶
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 AUTHORIZATION.
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 AUTHORIZATION
FROM SECURITY INTEGRATION <integration_name>
Où :
nom_utilisateur
Spécifie l’utilisateur pour qui vous révoquez le consentement.
nom_intégration
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 nom_rôle
dans l’instruction :
ALTER USER <username> REMOVE DELEGATED AUTHORIZATION
OF ROLE <role_name>
FROM SECURITY INTEGRATION <integration_name>
Où :
nom_rôle
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.