CREATE SECURITY INTEGRATION (Snowflake OAuth)¶
Crée une nouvelle intégration de sécurité OAuth Snowflake dans le compte ou remplace une intégration existante. Une intégration de sécurité OAuth Snowflake permet aux clients qui prennent en charge OAuth de rediriger les utilisateurs vers une page d’autorisation et de générer des jetons d’accès (et éventuellement des jetons d’actualisation) pour accéder à Snowflake.
Pour des informations sur la création d’autres types d’intégrations de sécurité (par exemple, OAuth externe), voir CREATE SECURITY INTEGRATION.
Syntaxe¶
Snowflake OAuth pour les applications partenaires
CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
<name>
TYPE = OAUTH
OAUTH_CLIENT = <partner_application>
OAUTH_REDIRECT_URI = '<uri>' -- Required when OAUTH_CLIENT=LOOKER
[ ENABLED = { TRUE | FALSE } ]
[ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
[ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
[ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
[ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
Snowflake OAuth pour les clients personnalisés
CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
<name>
TYPE = OAUTH
OAUTH_CLIENT = CUSTOM
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' | 'PUBLIC'
OAUTH_REDIRECT_URI = '<uri>'
[ ENABLED = { TRUE | FALSE } ]
[ OAUTH_ALLOW_NON_TLS_REDIRECT_URI = TRUE | FALSE ]
[ OAUTH_ENFORCE_PKCE = TRUE | FALSE ]
[ OAUTH_USE_SECONDARY_ROLES = IMPLICIT | NONE ]
[ PRE_AUTHORIZED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
[ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
[ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
[ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
[ NETWORK_POLICY = '<network_policy>' ]
[ OAUTH_CLIENT_RSA_PUBLIC_KEY = <public_key1> ]
[ OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = <public_key2> ]
[ COMMENT = '<string_literal>' ]
Paramètres obligatoires (tous les clients OAuth)¶
name
Chaîne spécifiant l’identificateur (c’est-à-dire le nom) de l’intégration ; elle doit être unique sur votre compte.
De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex.
"My object"
). Les identificateurs entre guillemets doubles sont également sensibles à la casse.Pour plus de détails, voir Exigences relatives à l’identificateur.
TYPE = OAUTH
Spécifiez le type d’intégration :
OAUTH
: crée une interface de sécurité entre Snowflake et un client prenant en charge OAuth.
OAUTH_CLIENT = { CUSTOM | partner_application }
Spécifiez le type de client :
CUSTOM
: crée une interface OAuth entre Snowflake et un client personnalisé.partner_application
: crée une interface OAuth entre Snowflake et une application partenaire. Valeurs prises en charge :TABLEAU_DESKTOP
: Tableau Desktop version 2019.1 ou supérieure.TABLEAU_SERVER
: Tableau Online ou Tableau Server. Si Tableau Server se connecte à Snowflake en utilisant la connectivité privée au service Snowflake, veillez à spécifierOAUTH_CLIENT = CUSTOM
à la place.LOOKER
: l’outil de Business Intelligence Looker.
OAUTH_REDIRECT_URI = 'uri'
Spécifie l’URI du client. Une fois l’utilisateur authentifié, le navigateur Web est redirigé vers cette URI.
Ce paramètre est nécessaire lorsque
OAUTH_CLIENT = LOOKER
. Pour plus de détails, voir l’exemple dans la documentation Looker.
Paramètres obligatoires supplémentaires (clients personnalisés)¶
Requis uniquement lorsque OAUTH_CLIENT = CUSTOM (c’est-à-dire lors de la création d’une intégration pour un client personnalisé)
OAUTH_CLIENT_TYPE = { 'CONFIDENTIAL' | 'PUBLIC' }
Spécifie le type de client en cours d’enregistrement. Snowflake prend en charge les clients confidentiels et publics. Les clients confidentiels peuvent stocker un secret. Ils fonctionnent dans une zone protégée à laquelle les utilisateurs finaux ne peuvent pas accéder. Par exemple, un service sécurisé déployé sur le Cloud peut être un client confidentiel. Un client fonctionnant sur un ordinateur de bureau ou distribué via un magasin d’applications peut être un client public.
OAUTH_REDIRECT_URI = 'uri'
Spécifie l’URI du client. Une fois l’utilisateur authentifié, le navigateur Web est redirigé vers cette URI. L’URI doit être protégée par TLS (Transport Layer Security) sauf si le paramètre facultatif
OAUTH_ALLOW_NON_TLS_REDIRECT_URI
est défini surTRUE
.Ne pas inclure les paramètres de requête envoyés avec l’URI de redirection dans la requête vers le point de terminaison d’autorisation. Par exemple, si la valeur du paramètre de requête
redirect_uri
dans la requête adressée au point de terminaison d’autorisation esthttps://www.example.com/connect?authType=snowflake
, assurez-vous que le paramètre OAUTH_REDIRECT_URI est défini surhttps://www.example.com/connect
.
Paramètres facultatifs (tous les clients OAuth)¶
ENABLED = { TRUE | FALSE }
Spécifie s’il faut initier le fonctionnement de l’intégration ou le suspendre.
TRUE
permet l’intégration.FALSE
désactive l’intégration de la maintenance. Toute intégration entre Snowflake et un service tiers échoue.
Par défaut :
FALSE
. Si une intégration de sécurité est créée sans définir ce paramètre surTRUE
, Snowflake définit le paramètre surFALSE
.
Paramètres facultatifs supplémentaires (applications partenaires)¶
Valable lorsque OAUTH_CLIENT = <application_partenaire> (c’est-à-dire lors de la création d’une intégration pour une application partenaire)
OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }
Booléen qui spécifie s’il faut autoriser le client à échanger un jeton d’actualisation contre un jeton d’accès lorsque le jeton d’accès actuel a expiré. Si défini sur
FALSE
, aucun jeton d’actualisation n’est émis, quelle que soit la valeur entière définie dansOAUTH_REFRESH_TOKEN_VALIDITY
. Le consentement de l’utilisateur est révoqué et l’utilisateur doit confirmer l’autorisation à nouveau.Par défaut :
TRUE
Note
Si ce paramètre est défini sur
FALSE
et que l’intégration de sécurité a égalementENABLED = TRUE
, le flux OAuth Snowflake se répète, un jeton d’accès non configurable est émis et le jeton d’accès est valide pendant 600 secondes (10 minutes). Une fois ce jeton d’accès expiré, l’utilisateur doit à nouveau s’authentifier.Si vous définissez ce paramètre sur
FALSE
etENABLED = FALSE
, aucun jeton n’est émis et l’intégration est désactivée.OAUTH_REFRESH_TOKEN_VALIDITY = integer
Entier qui spécifie la durée pendant laquelle les jetons d’actualisation doivent être valides (en secondes). Cela peut être utilisé pour entraîner l’expiration périodique du jeton d’actualisation. Notez que OAUTH_ISSUE_REFRESH_TOKENS doit être défini sur
TRUE
.Lorsqu’un jeton d’actualisation expire, l’application doit rediriger l’utilisateur à travers le flux d’autorisation pour obtenir un nouveau jeton d’actualisation.
Les valeurs minimale, maximale et par défaut prises en charge sont les suivantes :
Application
Minimum
Maximum
Par défaut
Tableau Desktop
60
(1 minute)36000
(10 heures)36000
(10 heures)Tableau Server ou Tableau Online
60
(1 minute)7776000
90 jours7776000
90 joursClient personnalisé
3600
(1 heure)7776000
90 jours7776000
90 joursSi votre entreprise a besoin de réduire la valeur minimale ou d’augmenter la valeur maximale, demandez à votre administrateur de compte d’envoyer une demande au support Snowflake.
OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
IMPLICIT
: les rôles secondaires définis par défaut dans les propriétés de l’utilisateur sont activés par défaut dans la session en cours d’ouverture.NONE
: les rôles secondaires par défaut ne sont pas pris en charge dans la session en cours d’ouverture.
Par défaut :
NONE
BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )
Liste des rôles Snowflake séparés par des virgules qu’un utilisateur ne peut pas accepter explicitement d’utiliser après l’authentification (par exemple,
'BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2')
).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
.COMMENT = 'string_literal'
Spécifie un commentaire pour l’intégration.
Par défaut : aucune valeur
Paramètres facultatifs supplémentaires (clients personnalisés)¶
Valable lorsque OAUTH_CLIENT = CUSTOM (c’est-à-dire lors de la création d’une intégration pour un client personnalisé)
OAUTH_ALLOW_NON_TLS_REDIRECT_URI = { TRUE | FALSE }
Si
TRUE
, autorise le paramétrage deOAUTH_REDIRECT_URI
sur une URI non protégée par TLS. Nous vous recommandons vivement d’utiliser TLS pour empêcher les redirections man-in-the-middle OAuth utilisées lors des attaques de hameçonnage.Par défaut :
FALSE
OAUTH_ENFORCE_PKCE = { TRUE | FALSE }
Booléen qui spécifie si la clé de vérification pour l’échange de code (PKCE) doit être requise pour l’intégration.
Par défaut, PKCE est facultatif et n’est appliqué que si les paramètres
code_challenge
etcode_challenge_method
sont tous deux inclus dans l’URL du point de terminaison d’autorisation. Cependant, nous conseillons vivement à votre client d’exiger PKCE pour toutes les autorisations afin de sécuriser davantage le flux de données OAuth. Pour plus d’informations, voir Configurer Snowflake OAuth pour les clients personnalisés.Par défaut :
FALSE
OAUTH_USE_SECONDARY_ROLES = { IMPLICIT | NONE }
IMPLICIT
: les rôles secondaires définis par défaut dans les propriétés de l’utilisateur sont activés par défaut dans la session en cours d’ouverture.NONE
: les rôles secondaires par défaut ne sont pas pris en charge dans la session en cours d’ouverture.
Par défaut :
NONE
PRE_AUTHORIZED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )
Liste des rôles Snowflake séparés par des virgules qu’un utilisateur n’a pas besoin d’accepter explicitement d’utiliser après l’authentification (par exemple
PRE_AUTHORIZED_ROLES_LIST = ('custom_role1', 'custom_role2')
). Notez que les rôles ACCOUNTADMIN, ORGADMIN et SECURITYADMIN ne peuvent pas être inclus dans cette liste.Note
Ce paramètre est pris en charge pour les clients confidentiels uniquement.
BLOCKED_ROLES_LIST = ( 'role_name' [ , 'role_name' , ... ] )
Liste des rôles Snowflake séparés par des virgules qu’un utilisateur ne peut pas accepter explicitement d’utiliser après l’authentification (par exemple,
BLOCKED_ROLES_LIST = ('custom_role1', 'custom_role2')
).Notez que les rôles ACCOUNTADMIN, ORGADMIN, et SECURITYADMIN sont inclus par défaut dans cette liste. Toutefois, si ces rôles doivent être supprimés pour votre compte, demandez à votre administrateur de compte d’envoyer une demande au support Snowflake.
OAUTH_ISSUE_REFRESH_TOKENS = { TRUE | FALSE }
Booléen qui spécifie s’il faut autoriser le client à échanger un jeton d’actualisation contre un jeton d’accès lorsque le jeton d’accès actuel a expiré. Si défini sur
FALSE
, aucun jeton d’actualisation n’est émis. Le consentement de l’utilisateur est révoqué et l’utilisateur doit confirmer l’autorisation à nouveau.Par défaut :
TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = integer
Entier qui spécifie la durée pendant laquelle les jetons d’actualisation doivent être valides (en secondes). Cela peut être utilisé pour entraîner l’expiration périodique du jeton d’actualisation. Notez que OAUTH_ISSUE_REFRESH_TOKENS doit être défini sur
TRUE
.Notez que si votre entreprise souhaite que les valeurs minimales ou maximales soient abaissées ou augmentées, respectivement, demandez à votre administrateur de compte d’envoyer une demande au support Snowflake.
- Valeurs:
86400
(1 jour) à7776000
(90 jours)- Par défaut:
7776000
NETWORK_POLICY = 'network_policy'
Spécifie une politique réseau existante. Cette politique réseau contrôle le trafic réseau qui tente d’échanger un code d’autorisation contre un jeton d’accès ou d’actualisation ou d’utiliser un jeton d’actualisation pour obtenir un nouveau jeton d’accès.
Si des politiques réseau sont également définies pour le compte ou l’utilisateur, voir Priorité de la politique réseau.
OAUTH_CLIENT_RSA_PUBLIC_KEY = public_key1
Spécifie une clé publique RSA.
OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = public_key2
Spécifie une seconde clé publique RSA. Utilisée pour la rotation des clés.
COMMENT = 'string_literal'
Spécifie un commentaire pour l’intégration.
Par défaut : aucune valeur
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :
Privilège |
Objet |
Remarques |
---|---|---|
CREATE INTEGRATION |
Compte |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
Notes sur l’utilisation¶
Concernant les métadonnées :
Attention
Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.
Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.
Exemples¶
Exemple 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_CLIENT = tableau_desktop OAUTH_REFRESH_TOKEN_VALIDITY = 36000 BLOCKED_ROLES_LIST = ('SYSADMIN');
Exemple Tableau Online ou Tableau Server¶
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');
Exemple de client personnalisé¶
L’exemple suivant crée une intégration OAuth qui utilise l’authentification par paire de clés. L’intégration permet d’actualiser les jetons, qui expirent après 1 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 oauth_kp_int TYPE = oauth ENABLED = true OAUTH_CLIENT = custom OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' OAUTH_REDIRECT_URI = 'https://localhost.com' OAUTH_ISSUE_REFRESH_TOKENS = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 86400 PRE_AUTHORIZED_ROLES_LIST = ('MYROLE') BLOCKED_ROLES_LIST = ('SYSADMIN');