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 requis (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 auservice Snowflake, veillez à spécifier
OAUTH_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
.
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 optionnels 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,
'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.
COMMENT = 'string_literal'
Chaîne (littéral) qui spécifie un commentaire pour l’intégration.
Par défaut : aucune valeur
Paramètres optionnels 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
'custom_role1', 'custom_role2'
). Notez que les rôles ACCOUNTADMIN 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,
'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 stratégie réseau existante active pour votre compte. La stratégie réseau restreint la liste des adresses IP des utilisateurs lors de l’échange d’un code d’autorisation contre un jeton d’accès ou d’actualisation et lors de l’utilisation d’un jeton d’actualisation pour obtenir un nouveau jeton d’accès. Si ce paramètre n’est pas défini, la politique réseau du compte (le cas échéant) est utilisée à la place.
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'
Chaîne (littéral) qui 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. Autrement dit, lorsque l’objet est remplacé, la suppression de l’ancien objet et la création du nouvel objet sont traitées en une seule transaction.
Exemples¶
Exemple avec 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 avec 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 avec un 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');