Catégories :

Utilisateur et sécurité DDL (Intégrations de services tiers)

CREATE SECURITY INTEGRATION

Crée une nouvelle intégration de sécurité dans le compte ou remplace une intégration existante. Une intégration est un objet Snowflake qui fournit une interface entre Snowflake et des services tiers.

Une intégration de sécurité 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.

Voir aussi :

ALTER SECURITY INTEGRATION , DROP INTEGRATION , SHOW INTEGRATIONS

Dans ce chapitre :

Syntaxe

OAuth externe

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = EXTERNAL_OAUTH
  ENABLED = { TRUE | FALSE }
  EXTERNAL_OAUTH_TYPE = { OKTA | AZURE | PING_FEDERATE | CUSTOM }
  EXTERNAL_OAUTH_ISSUER = '<string_literal>'
  EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = '<string_literal>' | ('<string_literal>', '<string_literal>' [ , ... ] )
  EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME | EMAIL_ADDRESS'
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' ] -- For OKTA | PING_FEDERATE | CUSTOM
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' | ('<string_literal>' [ , '<string_literal>' ... ] ) ] -- For Azure
  [ EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( '{role_name}' [ , '{role_name}' , ... ] ) ]
  [ EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( '{role_name}' [ , '{role_name}' , ... ] ) ]
  [ EXTERNAL_OAUTH_RSA_PUBLIC_KEY = <public_key1> ]
  [ EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = <public_key2> ]
  [ EXTERNAL_OAUTH_AUDIENCE_LIST = ('<string_literal>') ]
  [ EXTERNAL_OAUTH_ANY_ROLE_MODE = DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE ]
  [ EXTERNAL_OAUTH_SCOPE_DELIMITER = '<string_literal>' ] -- Only for EXTERNAL_OAUTH_TYPE = CUSTOM

SAML2

CREATE [ OR REPLACE ] SECURITY INTEGRATION [ IF NOT EXISTS ]
    TYPE = SAML2
    ENABLED = TRUE | FALSE
    SAML2_ISSUER = '<string_literal>'
    SAML2_SSO_URL = '<string_literal>'
    SAML2_PROVIDER = '<string_literal>'
    SAML2_X509_CERT = '<string_literal>'
    [ SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = '<string_literal>' ]
    [ SAML2_ENABLE_SP_INITIATED = TRUE | FALSE ]
    [ SAML2_SNOWFLAKE_X509_CERT = '<string_literal>' ]
    [ SAML2_SIGN_REQUEST = TRUE | FALSE ]
    [ SAML2_REQUESTED_NAMEID_FORMAT = '<string_literal>' ]
    [ SAML2_POST_LOGOUT_REDIRECT_URL = '<string_literal>' ]
    [ SAML2_FORCE_AUTHN = TRUE | FALSE ]
    [ SAML2_SNOWFLAKE_ISSUER_URL = '<string_literal>' ]
    [ SAML2_SNOWFLAKE_ACS_URL = '<string_literal>' ]

SCIM

CREATE [ OR REPLACE ] SECURITY INTEGRATION [ IF NOT EXISTS ]
    <name>
    TYPE = SCIM
    SCIM_CLIENT = 'OKTA' | 'AZURE' | 'CUSTOM'
    RUN_AS_ROLE = 'OKTA_PROVISIONER' | 'AAD_PROVISIONER' | 'GENERIC_SCIM_PROVISIONER'
    [ NETWORK_POLICY = '<network_policy>' ]
    [ SYNC_PASSWORD = TRUE | FALSE ]
    [ COMMENT = '<string_literal>' ]

Snowflake OAuth pour les applications partenaires

CREATE [ OR REPLACE ] SECURITY INTEGRATION [IF NOT EXISTS]
  <name>
  TYPE = OAUTH
  OAUTH_CLIENT = <partner_application>
  [ 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

OAuth externe

Paramètres OAuth externe requis

nom

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 = EXTERNAL_OAUTH

Distingue l’intégration OAuth externe d’une intégration Snowflake OAuth.

ENABLED = TRUE | FALSE

Spécifie s’il faut initier le fonctionnement de l’intégration ou le suspendre.

  • TRUE permet l’exécution de l’intégration en fonction des paramètres spécifiés dans la définition de canal.

  • FALSE suspend l’intégration pour la maintenance. Toute intégration entre Snowflake et un service tiers échoue.

EXTERNAL_OAUTH_TYPE = OKTA | AZURE | PING_FEDERATE | CUSTOM

Indique que le serveur d’autorisation OAuth 2.0 doit être Okta, Microsoft Azure AD, Ping Identity PingFederate ou un serveur d’autorisation personnalisé OAuth 2.0.

EXTERNAL_OAUTH_ISSUER = 'litéral_chaine'

Spécifie l’URL pour définir le serveur d’autorisation OAuth 2.0.

EXTERNAL_OAUTH_TOKEN_USER_MAPPING_CLAIM = 'litéral_chaine' | ('litéral_chaine', 'litéral_chaine' [ , ... ] )

Spécifie la ou les revendications de jeton d’accès qui peuvent être utilisées pour mapper le jeton d’accès à un enregistrement utilisateur Snowflake.

Le type de données de la revendication doit être une chaîne ou une liste de chaînes.

EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME | EMAIL_ADDRESS'

Indique quel attribut d’enregistrement utilisateur Snowflake doit être utilisé pour mapper le jeton d’accès à un enregistrement utilisateur Snowflake.

Paramètres facultatifs OAuth externe

EXTERNAL_OAUTH_JWS_KEYS_URL = 'litéral_chaine'

Spécifie le point de terminaison à partir duquel télécharger les clés publiques ou les certificats pour valider un jeton d’accès External OAuth.

Cette syntaxe s’applique aux intégrations de sécurité où EXTERNAL_OAUTH_TYPE = OKTA | PING_FEDERATE | CUSTOM

EXTERNAL_OAUTH_JWS_KEYS_URL = 'littéral_chaine' | ('littéral_chaine' [ , 'littéral_chaine' ... ] )

Spécifie le point de terminaison ou une liste de points de terminaison à partir desquels télécharger les clés publiques ou les certificats pour valider un jeton d’accès External OAuth. Le nombre maximum d’URLs qui peuvent être spécifiées dans la liste est 3.

Cette syntaxe s’applique aux intégrations de sécurité où EXTERNAL_OAUTH_TYPE = AZURE

EXTERNAL_OAUTH_RSA_PUBLIC_KEY = clé_publique1

Spécifie une clé publique RSA d’encodage Base64, sans les en-têtes -----BEGIN PUBLIC KEY----- et -----END PUBLIC KEY-----.

EXTERNAL_OAUTH_RSA_PUBLIC_KEY_2 = clé_publique2

Spécifie une deuxième clé publique RSA, sans les en-têtes -----BEGIN PUBLIC KEY----- et -----END PUBLIC KEY-----. Utilisé pour la rotation des clés.

EXTERNAL_OAUTH_BLOCKED_ROLES_LIST = ( 'nom_rôle' [ , 'nom_rôle' , ... ] )

Spécifie la liste des rôles qu’un client ne peut pas définir comme rôle principal.

Un rôle de cette liste ne peut pas être utilisé lors de la création d’une session Snowflake basée sur le jeton d’accès du serveur d’autorisation OAuth externe.

EXTERNAL_OAUTH_ALLOWED_ROLES_LIST = ( 'nom_rôle' [ , 'nom_rôle' , ... ] )

Spécifie la liste des rôles que le client peut définir comme rôle principal.

Un rôle de cette liste peut être utilisé lors de la création d’une session Snowflake basée sur le jeton d’accès du serveur d’autorisation externe OAuth.

Prudence

Ce paramètre prend en charge les rôles système ACCOUNTADMIN et SECURITYADMIN.

Faites preuve de prudence lorsque vous créez une session Snowflake avec ces rôles à hauts privilèges définis comme rôle principal.

EXTERNAL_OAUTH_AUDIENCE_LIST = ('littéral_chaine')

Spécifie des valeurs supplémentaires qui peuvent être utilisées pour la validation de l’audience du jeton d’accès en plus de l’utilisation de l’URL du compte Snowflake du client (c’est-à-dire, <identificateur_de_compte>.snowflakecomputing.com). Pour plus d’informations, voir Identificateurs de compte.

Actuellement, plusieurs URLs d’audience ne peuvent être spécifiées que pour les clients externes OAuth personnalisés. Chaque URL doit être placée entre guillemets simples, avec une virgule séparant chaque URL. Par exemple :

external_oauth_audience_list = ('https://example.com/api/v2/', 'https://example.com')
EXTERNAL_OAUTH_ANY_ROLE_MODE = DISABLE | ENABLE | ENABLE_FOR_PRIVILEGE

Spécifie si le client ou l’utilisateur OAuth peut utiliser un rôle qui n’est pas défini dans le jeton d’accès OAuth.

  • DISABLE n’autorise pas le client ou l’utilisateur OAuth à changer de rôle (c’est-à-dire use role <rôle>;). Par défaut.

  • ENABLE permet au client ou à l’utilisateur OAuth de changer de rôle.

  • ENABLE_FOR_PRIVILEGE permet au client ou à l’utilisateur OAuth de changer de rôle uniquement pour un client ou un utilisateur avec le privilège USE_ANY_ROLE. Ce privilège peut être accordé et révoqué à un ou plusieurs rôles disponibles pour l’utilisateur. Par exemple :

Notez que la valeur peut éventuellement être placée entre guillemets simples (par exemple, DISABLE ou 'DISABLE').

grant USE_ANY_ROLE on integration external_oauth_1 to role1;
revoke USE_ANY_ROLE on integration external_oauth_1 from role1;
EXTERNAL_OAUTH_SCOPE_DELIMITER = 'littéral_chaine'

Spécifie le délimiteur de champ d’application dans le jeton d’autorisation.

Le délimiteur peut être un caractère unique quelconque, tel qu’une virgule (',') ou un espace (' ').

Cette propriété d’intégration de la sécurité est facultative et peut être utilisée pour remplacer la virgule de délimitation par défaut. Notez que cette propriété n’est prise en charge que pour les intégrations External OAuth personnalisées, où :

EXTERNAL_OAUTH_TYPE = CUSTOM

Contactez le support Snowflake pour activer cette propriété dans votre compte Snowflake.

SAML2

Paramètres SAML2 requis

nom

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 = SAML2

Spécifiez le type d’intégration :

  • SAML2 : crée une interface de sécurité entre Snowflake et le fournisseur d’identité.

ENABLED = TRUE | FALSE

Booléen qui spécifie s’il faut initier le fonctionnement de l’intégration ou le suspendre.

  • TRUE permet l’exécution de l’intégration en fonction des paramètres spécifiés dans la définition de canal.

  • FALSE suspend l’intégration pour la maintenance. Toute intégration entre Snowflake et un service tiers échoue.

SAML2_ISSUER = 'litéral_chaine'

La chaîne contenant l’IdP EntityID / Issuer.

SAML2_SSO_URL = 'litéral_chaine'

La chaîne contenant l’URL SSO de l’IdP, où l’utilisateur doit être redirigé par Snowflake (le fournisseur de services) avec un message AuthnRequest SAML.

SAML2_PROVIDER = 'litéral_chaine'

La chaîne décrivant l’IdP.

L’un des éléments suivants : OKTA, ADFS, personnalisé.

SAML2_X509_CERT = 'litéral_chaine'

Le certificat de signature IdP encodé en Base64 sur une seule ligne sans les marqueurs -----BEGIN CERTIFICATE----- de début et -----END CERTIFICATE----- de fin.

Paramètres SAML2 facultatifs

SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'litéral_chaine'

Chaîne contenant l’étiquette à afficher après le bouton Log In With sur la page de connexion.

SAML2_ENABLE_SP_INITIATED = TRUE | FALSE

Le booléen indiquant si le bouton Log In With sera affiché sur la page de connexion.

  • TRUE affiche le bouton Log in With sur la page de connexion.

  • FALSE n’affiche pas le bouton Log in With sur la page de connexion.

SAML2_SNOWFLAKE_X509_CERT = 'litéral_chaine'

Le certificat auto-signé encodé en Base64 généré par Snowflake pour une utilisation avec Chiffrement des assertions SAML et Demandes SAML signées.

Vous devez avoir au moins une de ces fonctionnalités (assertions SAML chiffrées ou réponses SAML signées) activée dans votre compte Snowflake pour accéder à la valeur du certificat.

SAML2_SIGN_REQUEST = TRUE | FALSE

Le booléen indiquant si les demandes SAML sont signées.

  • TRUE permet la signature de demandes SAML.

  • FALSE n’autorise pas la signature de demandes SAML.

SAML2_REQUESTED_NAMEID_FORMAT = 'litéral_chaine'

Le format SAML NameID permet à Snowflake de définir une attente de l’attribut identifiant de l’utilisateur (c’est-à-dire le sujet SAML) dans l’assertion SAML de l” IdP pour assurer une authentification valide dans Snowflake. Si aucune valeur n’est spécifiée, Snowflake envoie la valeur urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress dans la requête d’authentification à l” IdP.

En option.

Si vous choisissez de spécifier le format SAML NameID, utilisez l’une des valeurs suivantes :

  • urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified

  • urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

  • urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName

  • urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName

  • urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos

  • urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

  • urn:oasis:names:tc:SAML:2.0:nameid-format:transient

SAML2_POST_LOGOUT_REDIRECT_URL = '<string_literal>'

Le point de terminaison vers lequel Snowflake redirige les utilisateurs après avoir cliqué sur le bouton Log Out dans l”classic web interface.

Snowflake met fin à la session Snowflake en se redirigeant vers le point de terminaison spécifié.

SAML2_FORCE_AUTHN = TRUE | FALSE

Le booléen indiquant si les utilisateurs, lors du flux d’authentification initial, sont obligés de s’authentifier à nouveau pour accéder à Snowflake. Lorsqu’il est défini sur TRUE, Snowflake définit le paramètre ForceAuthn SAML sur TRUE dans la requête sortante de Snowflake vers le fournisseur d’identité.

  • TRUE oblige les utilisateurs à s’authentifier à nouveau pour accéder à Snowflake, même si une session valide avec le fournisseur d’identité existe.

  • FALSE n’oblige pas les utilisateurs à s’authentifier à nouveau pour accéder à Snowflake.

Par défaut : FALSE.

SAML2_SNOWFLAKE_ISSUER_URL = '<string_literal>'

La chaîne contenant EntityID / Issuer pour le fournisseur de services Snowflake.

Si une valeur incorrecte est spécifiée, Snowflake renvoie un message d’erreur indiquant les valeurs acceptables à utiliser.

SAML2_SNOWFLAKE_ACS_URL = '<string_literal>'

La chaîne contenant l’URL Snowflake Assertion Consumer Service à laquelle l’IdP enverra sa réponse d’authentification SAML à Snowflake.

Cette propriété sera définie dans la demande d’authentification SAML générée par Snowflake lors du lancement d’une opération SAML SSO avec l’IdP.

Si une valeur incorrecte est spécifiée, Snowflake renvoie un message d’erreur indiquant les valeurs acceptables à utiliser.

Par défaut : https://<localisateur_compte>.<région>.snowflakecomputing.com/fed/login

Pour plus d’informations, voir :

SCIM

Paramètres SCIM requis

nom

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 = SCIM

Spécifiez le type d’intégration :

  • SCIM : crée une interface de sécurité entre Snowflake et un client prenant en charge SCIM.

SCIM_CLIENT = 'OKTA' | 'AZURE' | 'CUSTOM'

Spécifiez le client SCIM.

RUN_AS_ROLE = 'OKTA_PROVISIONER' | 'AAD_PROVISIONER' | 'GENERIC_SCIM_PROVISIONER'

Spécifiez le rôle SCIM dans Snowflake qui possède les utilisateurs et les rôles importés du fournisseur d’identité dans Snowflake à l’aide de SCIM.

  • Les valeurs OKTA_PROVISIONER, AAD_PROVISIONER et GENERIC_SCIM_PROVISIONER sont sensibles à la casse et doivent toujours être mises en majuscule.

Paramètres SCIM facultatifs

NETWORK_POLICY = 'politique_réseau'

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.

SYNC_PASSWORD = TRUE | FALSE

Indique s’il faut activer ou désactiver la synchronisation des mots de passe des utilisateurs à partir d’un client SCIM Okta dans le cadre de la requête API vers Snowflake.

  • TRUE active la synchronisation des mots de passe.

  • FALSE désactive la synchronisation des mots de passe.

Par défaut : TRUE. Si une intégration de sécurité est créée sans définir ce paramètre, Snowflake définit ce paramètre sur TRUE.

Si les mots de passe des utilisateurs ne doivent pas être synchronisés du client vers Snowflake, assurez-vous que la valeur de cette propriété est définie sur FALSE et désactivez la synchronisation des mots de passe dans le client.

Notez que cette propriété est prise en charge pour les intégrations SCIM Okta et personnalisées. Les intégrations SCIM Azure ne sont pas prises en charge, car Microsoft Azure ne prend pas en charge la synchronisation des mots de passe. Pour demander de l’assistance, veuillez contacter Microsoft Azure.

Pour plus de détails, voir Gestion des utilisateurs et des groupes avec SCIM.

COMMENT

Chaîne (littéral) qui spécifie un commentaire pour l’intégration.

Par défaut : aucune valeur

Snowflake OAuth

Paramètres OAuth Snowflake requis

nom

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 | application_partenaire

Spécifiez le type de client :

  • CUSTOM : crée une interface OAuth entre Snowflake et un client personnalisé.

  • application_partenaire : 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.

    • 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 facultatifs OAuth Snowflake

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 sur TRUE, Snowflake définit le paramètre sur FALSE.

Paramètres client personnalisés OAuth Snowflake

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 sur TRUE.

Paramètres d’application du partenaire OAuth Snowflake — Facultatif

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 dans OAUTH_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 également ENABLED = 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 et ENABLED = false, aucun jeton n’est émis et l’intégration est désactivée.

OAUTH_REFRESH_TOKEN_VALIDITY = entier

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 jours

7776000 90 jours

Client personnalisé

3600 (1 heure)

7776000 90 jours

7776000 90 jours

Si 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 = ( 'nom_rôle' [ , 'nom_rôle' , ... ] )

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 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 = 'littéral_chaine'

Chaîne (littéral) qui spécifie un commentaire pour l’intégration.

Par défaut : aucune valeur

Paramètres client personnalisés OAuth Snowflake — Facultatif

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 de OAUTH_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 et code_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 = '(nom_rôle', 'nom_rôle')

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 = ( 'nom_rôle' [ , 'nom_rôle' , ... ] )

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 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 = entier

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 = 'politique_réseau'

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 = clé_publique1

Spécifie une clé publique RSA. Pour plus d’informations, voir OAuth.

OAUTH_CLIENT_RSA_PUBLIC_KEY_2 = clé_publique2

Spécifie une seconde clé publique RSA. Utilisée pour la rotation des clés.

COMMENT = 'littéral_chaine'

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 Contrôle d’accès dans Snowflake.

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.

Exemples

OAuth externe

Exemple OAuth externe Microsoft Azure AD

L’exemple suivant crée une intégration de sécurité OAuth externe pour un serveur d’autorisation Microsoft Azure AD OAuth 2.0.

create security integration external_oauth_azure_1
    type = external_oauth
    enabled = true
    external_oauth_type = azure
    external_oauth_issuer = '<AZURE_AD_ISSUER>'
    external_oauth_jws_keys_url = '<AZURE_AD_JWS_KEY_ENDPOINT>'
    external_oauth_token_user_mapping_claim = 'upn'
    external_oauth_snowflake_user_mapping_attribute = 'login_name';

Afficher les paramètres d’intégration à l’aide de DESCRIBE INTEGRATION :

DESC SECURITY INTEGRATION external_oauth_azure_1;

Exemple OAuth externe et Okta

L’exemple suivant crée une intégration de sécurité OAuth externe pour un serveur d’autorisation Okta OAuth 2.0.

create security integration external_oauth_okta_1
    type = external_oauth
    enabled = true
    external_oauth_type = okta
    external_oauth_issuer = '<OKTA_ISSUER>'
    external_oauth_jws_keys_url = '<OKTA_JWS_KEY_ENDPOINT>'
    external_oauth_token_user_mapping_claim = 'sub'
    external_oauth_snowflake_user_mapping_attribute = 'login_name';

Afficher les paramètres d’intégration à l’aide de DESCRIBE INTEGRATION :

DESC SECURITY INTEGRATION external_oauth_okta_1;

SAML2

Exemple SAML2

L’exemple suivant crée une intégration de sécurité Microsoft Active Directory Federation Services (ADFS) avec les deux paramètres facultatifs :

create security integration my_idp
    type = saml2
    enabled = true
    saml2_issuer = 'https://example.com'
    saml2_sso_url = 'http://myssoprovider.com'
    saml2_provider = 'ADFS'
    saml2_x509_cert='my_x509_cert'
    saml2_sp_initiated_login_page_label = 'my_idp'
    saml2_enable_sp_initiated = false
    ;

Afficher les paramètres d’intégration à l’aide de DESCRIBE INTEGRATION :

DESC SECURITY INTEGRATION my_idp;

SCIM

Exemple avec SCIM et Microsoft Azure AD

L’exemple suivant crée une intégration AD SCIM avec les paramètres par défaut :

create or replace security integration okta_provisioning
    type=scim
    scim_client='azure'
    run_as_role='AAD_PROVISIONER';

Afficher les paramètres d’intégration à l’aide de DESCRIBE INTEGRATION :

DESC SECURITY INTEGRATION aad_provisioning;

Exemple SCIM et Okta

L’exemple suivant crée une intégration Okta SCIM avec les paramètres par défaut :

create or replace security integration okta_provisioning
    type=scim
    scim_client='okta'
    run_as_role='OKTA_PROVISIONER';

Afficher les paramètres d’intégration à l’aide de DESCRIBE INTEGRATION :

DESC SECURITY INTEGRATION okta_provisioning;

Snowflake OAuth

Exemple Snowflake OAuth 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_REFRESH_TOKEN_VALIDITY = 36000
  BLOCKED_ROLES_LIST = ('SYSADMIN');

Exemple Snowflake OAuth 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 Snowflake OAuth avec 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')
  OAUTH_CLIENT_RSA_PUBLIC_KEY='
  MIIBI
  ...
  ';
Revenir au début