Catégories :

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

ALTER SECURITY INTEGRATION

Modifie les propriétés d’une intégration de sécurité existante.

Voir aussi :

CREATE SECURITY INTEGRATION , DROP INTEGRATION , SHOW INTEGRATIONS

Dans ce chapitre :

Syntaxe

OAuth externe

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name> SET
  [ 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>' ]
  [ EXTERNAL_OAUTH_SNOWFLAKE_USER_MAPPING_ATTRIBUTE = 'LOGIN_NAME | EMAIL_ADDRESS' ]
  [ EXTERNAL_OAUTH_JWS_KEYS_URL = '<string_literal>' ]
  [ 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 ]

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name>  UNSET {
                                                           ENABLED                      |
                                                           EXTERNAL_OAUTH_AUDIENCE_LIST
                                                           }
                                                           [ , ... ]

SAML2

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name> SET
    [ 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>' ]

SCIM

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name> SET
    [ TYPE = SCIM ]
    [ SCIM_CLIENT = 'OKTA' | 'AZURE' | 'CUSTOM' ]
    [ RUN_AS_ROLE = 'OKTA_PROVISIONER' | 'AAD_PROVISIONER' | 'GENERIC_SCIM_PROVISIONER' ]
    [ NETWORK_POLICY  = '<network_policy>' ]

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name>  UNSET {
                                                           ENABLED        |
                                                           NETWORK_POLICY
                                                           }
                                                           [ , ... ]

Snowflake OAuth pour les applications partenaires

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name> SET
  [ ENABLED = { TRUE | FALSE } ]
  [ OAUTH_ISSUE_REFRESH_TOKENS = TRUE | FALSE ]
  [ OAUTH_REFRESH_TOKEN_VALIDITY = <integer> ]
  [ BLOCKED_ROLES_LIST = ( '<role_name>' [ , '<role_name>' , ... ] ) ]
  [ COMMENT = '<string_literal>' ]

Snowflake OAuth pour les clients personnalisés

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name> SET
  [ ENABLED = { TRUE | FALSE } ]
  [ OAUTH_REDIRECT_URI = '<uri>' ]
  [ OAUTH_ALLOW_NON_TLS_REDIRECT_URI = TRUE | FALSE ]
  [ OAUTH_ENFORCE_PKCE = TRUE | FALSE ]
  [ 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}' ]

ALTER [ SECURITY ] INTEGRATION [ IF EXISTS ] <name>  UNSET {
                                                           ENABLED                       |
                                                           NETWORK_POLICY                |
                                                           OAUTH_CLIENT_RSA_PUBLIC_KEY   |
                                                           OAUTH_CLIENT_RSA_PUBLIC_KEY_2
                                                           }
                                                           [ , ... ]

Paramètres

nom

Identificateur pour l’intégration à modifier. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Paramètres OAuth externe

SET ...

Spécifie un (ou plusieurs) paramètre(s)/propriété(s) à définir pour l’intégration (séparés par des espaces, des virgules ou de nouvelles lignes) :

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'

Spécifie la revendication de jeton d’accès à utiliser pour mapper le jeton d’accès à un enregistrement utilisateur Snowflake. Le type de la revendication doit être une chaîne ou un tableau de chaînes avec une seule entrée.

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.

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 OAuth externe.

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ée pour la rotation des clés.

EXTERNAL_OAUTH_AUDIENCE_LIST = ('litéral_chaîne')

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, <compte>.<région>.snowflakecomputing.com).

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 :

    grant USE_ANY_ROLE on integration external_oauth_1 to role1;
    
    revoke USE_ANY_ROLE on integration external_oauth_1 from role1;
    
UNSET ...

Spécifie une (ou plusieurs) propriété(s)/paramètres à désactiver pour l’intégration de sécurité, ce qui les réinitialise à leurs valeurs par défaut :

  • ENABLED

  • EXTERNAL_OAUTH_AUDIENCE_LIST

Paramètres SAML 2.0

SET ...

Spécifie un (ou plusieurs) paramètre(s)/propriété(s) à définir pour l’intégration (séparés par des espaces, des virgules ou de nouvelles lignes) :

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

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.

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

Paramètres SCIM

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.

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.

UNSET ...

Spécifie une (ou plusieurs) propriété(s)/paramètres à désactiver pour l’intégration de sécurité, ce qui les réinitialise à leurs valeurs par défaut :

  • ENABLED

  • NETWORK_POLICY

Paramètres d’application du partenaire OAuth Snowflake

Valable lorsque OAUTH_CLIENT = <application_partenaire> (c’est-à-dire lors de la création d’une intégration pour une application partenaire)

SET ...

Spécifie un (ou plusieurs) paramètre(s)/propriété(s) à définir pour l’intégration (séparés par des espaces, des virgules ou de nouvelles lignes) :

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.

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 expirer périodiquement le jeton d’actualisation.

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

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

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

Paramètres client personnalisés OAuth Snowflake

Valable lorsque OAUTH_CLIENT = CUSTOM (c’est-à-dire lors de la création d’une intégration pour un client personnalisé)

SET ...

Spécifie un (ou plusieurs) paramètre(s)/propriété(s) à définir pour l’intégration (séparés par des espaces, des virgules ou de nouvelles lignes) :

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.

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.

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 une clé de vérification pour l’échange de code (PKCE) doit être requise pour l’intégration.

Par défaut : FALSE

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 expirer périodiquement le jeton d’actualisation.

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é

86400 (1 jour)

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.

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

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

UNSET ...

Spécifie une (ou plusieurs) propriété(s)/paramètres à désactiver pour l’intégration de sécurité, ce qui les réinitialise à leurs valeurs par défaut :

  • ENABLED

  • NETWORK_POLICY

  • OAUTH_CLIENT_RSA_PUBLIC_KEY

  • OAUTH_CLIENT_RSA_PUBLIC_KEY_2

Exemples

L’exemple suivant lance l’opération d’une intégration suspendue :

ALTER SECURITY INTEGRATION myint SET ENABLED = TRUE;