Configuration de Snowflake pour l’utilisation de l’authentification fédérée¶
Cette rubrique décrit comment configurer Snowflake pour l’authentification fédérée en utilisant une intégration de sécurité SAML2. Cette rubrique suppose que vous avez déjà configuré votre IdP pour l’utiliser avec Snowflake.
Note
Une intégration de sécurité SAML2 remplace le paramètre de compte SAML_IDENTITY_PROVIDER obsolète.
Si vous avez une implémentation SSO existante qui utilise ce paramètre de compte obsolète, migrez vers une intégration de sécurité SAML avant de continuer à configurer Snowflake pour l’authentification fédérée.
Snowflake continuera à prendre en charge le paramètre de compte obsolète aussi longtemps que des implémentations l’utiliseront.
Dans ce chapitre :
Créer une intégration de sécurité SAML2¶
Snowflake utilise une intégration de sécurité SAML2 pour s’intégrer avec les IdP que vous utilisez pour mettre en œuvre l’authentification fédérée. Utilisez la commande CREATE SECURITY INTEGRATION pour commencer à configurer Snowflake pour SSO.
Important
Lorsque vous configurez un IdP pour SSO, il vous faut fournir une URL pour le compte Snowflake. Le format de cette URL doit correspondre aux URLs des propriétés SAML2_SNOWFLAKE_ISSUER_URL
et SAML2_SNOWFLAKE_ACS_URL
de l’intégration de sécurité.
Si vous ne définissez pas ces propriétés lors de la création de l’intégration de sécurité, elles auront par défaut l’URL héritée du compte.
Par exemple, pour créer une intégration de sécurité qui utilise un nom de compte URL avec une connectivité privée, exécutez la commande SQL suivante :
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 = 'MIICr...'
SAML2_SNOWFLAKE_ISSUER_URL = 'https://<orgname>-<account_name>.privatelink.snowflakecomputing.com'
SAML2_SNOWFLAKE_ACS_URL = 'https://<orgname>-<account_name>.privatelink.snowflakecomputing.com/fed/login';
Notez que /fed/login
est ajouté à l’URL pour la propriété SAML2_SNOWFLAKE_ACS_URL
. Pour plus de détails sur les formats d’URL des comptes Snowflake, voir Connexion avec une URL.
Après avoir configuré une intégration de sécurité SAML2, vous pouvez utiliser l’intégration de sécurité pour effectuer ce qui suit :
Chiffrer des assertions SAML.
Envoyer des requêtes SAML signées
Spécifier le format SAMLNameID.
Exporter des métadonnées d’intégration de sécurité SAML2.
Forcer la ré-authentification dans la procédure de Snowflake
Note
Vous pouvez utiliser une intégration de sécurité SAML2 avec Client Redirect si votre compte est une version Business Critical Edition ou supérieure.
Pour plus d’informations, voir Rediriger les connexions du client.
Configurer la connexion SSO pour les utilisateurs¶
Après avoir créé une intégration de sécurité SAML2, vous pouvez configurer si l’utilisateur démarre sa connexion SSO à partir du IdP ou de Snowflake.
Un SSO initié par IdP ne nécessite pas de configuration dans Snowflake. Il vous suffit d’informer vos utilisateurs sur la manière d’accéder à Snowflake (par exemple, en utilisant un portail interne).
La propriété SAML2_ENABLE_SP_INITIATED
active le SSO initié par Snowflake. La propriété SAML2_SP_INITIATED_LOGIN_PAGE_LABEL
définit une chaîne qui identifie l’IdP. Cette chaîne apparaît sur la page de connexion de Snowflake afin que les utilisateurs puissent accéder à l’IdP.
Utilisez la commande ALTER SECURITY INTEGRATION
pour définir ces propriétés :
ALTER SECURITY INTEGRATION my_idp SET SAML2_ENABLE_SP_INITIATED = true;
ALTER SECURITY INTEGRATION my_idp SET SAML2_SP_INITIATED_LOGIN_PAGE_LABEL = 'My IdP';
Pour plus d’informations sur la manière dont les clients se connectent à Snowflake après avoir configuré la connexion SSO pour les utilisateurs, voir Utilisation de SSO avec des applications clientes qui se connectent à Snowflake
Chiffrer des assertions SAML¶
La propriété SAML2_SNOWFLAKE_X509_CERT
garantit que les assertions SAML2 sont cryptées à l’aide du certificat public de Snowflake, sécurisant ainsi le trafic lorsque les utilisateurs accèdent à Snowflake par le biais de l’authentification fédérée.
Lors de la réception des assertions chiffrées de l’IdP du client, Snowflake déchiffre les assertions chiffrées à l’aide de sa clé privée. Snowflake n’exporte jamais sa clé privée et ne la rend jamais disponible.
Pour chiffrer les assertions SAML, consultez les sections ci-dessous.
Exporter le certificat public de Snowflake¶
Après avoir créé une intégration de sécurité SAML2, suivez les étapes ci-dessous :
Exécutez l’instruction SQL suivante sur l’intégration SAML2.
DESC SECURITY INTEGRATION my_idp;
Trouvez la valeur
SAML2_SNOWFLAKE_X509_CERT
dans la ligne 7, qui est le certificat public au format PEM.Enregistrez la valeur en veillant à inclure les délimiteurs
BEGIN CERTIFICATE
etEND CERTIFICATE
. Par exemple, le bloc de code ci-dessous contient un certificat tronqué au format PEM :-----BEGIN CERTIFICATE----- MIICr... -----END CERTIFICATE-----
Créer une demande de signature de certificat (CSR) — Facultatif¶
Par défaut, une intégration de sécurité SAML2 dans Snowflake utilise un certificat auto-signé pour l’IdP SAML pour chiffrer les assertions SAML. Si votre organisation requiert l’utilisation d’un certificat émis par une autorité de certification (CA), procédez comme suit :
Générez une demande de signature de certificat (CSR) à partir de Snowflake à l’aide de la fonction système SYSTEM$GENERATE_SAML_CSR.
Fournissez le CSR au CA de votre choix afin que le certificat puisse être émis.
Téléchargez le certificat encodé en base64 dans l’intégration SAML à l’aide de l’instruction ALTER suivante, sans les délimiteurs
BEGIN CERTIFICATE
etEND CERTIFICATE
.ALTER SECURITY INTEGRATION my_idp SET SAML2_SNOWFLAKE_X509_CERT = 'AX2bv...';
Exécutez la commande DESCRIBE INTEGRATION pour voir l’intégration de sécurité mise à jour :
DESC SECURITY INTEGRATION my_idp;
Vous pouvez ensuite télécharger le certificat pour cette clé privée à l’aide du CSR généré par la fonction dans Snowflake.
Configurer votre IdP SAML¶
Téléchargez le certificat enregistré au format PEM dans l’IdP de votre organisation en tant que certificat de chiffrement SAML.
Configurez votre IdP pour chiffrer des assertions SAML pour le fournisseur de services Snowflake (SP).
Envoyer des requêtes SAML signées¶
Vous pouvez envoyer une demande SAML signée de Snowflake au IdP pour vérifier que Snowflake est bien un fournisseur de services authentique. Pour effectuer cette vérification, vous pouvez configurer votre IdP afin d’utiliser le certificat stocké dans l’intégration de sécurité SAML2 pour vous assurer que la demande SAML provient bien de Snowflake, et non d’un tiers qui usurpe l’identité de Snowflake.
Définir la propriété SAML2_SIGN_REQUEST¶
Si vous créez une intégration de sécurité SAML2 pour la première fois, assurez-vous de définir la propriété SAML2_SIGN_REQUEST.
Si vous avez créé une intégration de sécurité SAML2 sans définir la propriété SAML2_SIGN_REQUEST
_, suivez les étapes ci-dessous :
Exécutez la commande ALTER SECURITY INTEGRATION en tant qu’utilisateur avec un rôle ACCOUNTADMIN pour mettre à jour l’intégration de la sécurité :
ALTER SECURITY INTEGRATION my_idp SET SAML2_SIGN_REQUEST = true;
Exécutez la commande DESCRIBE INTEGRATION pour voir l’intégration de sécurité mise à jour :
DESC SECURITY INTEGRATION my_idp;
Configurer votre IdP pour accepter les requêtes signées¶
Configurez votre IdP pour accepter les demandes signées de Snowflake. Pendant la configuration, votre IdP doit avoir le certificat stocké dans la propriété SAML2_SNOWFLAKE_X509_CERT. Votre IdP utilise ce certificat pour vérifier que la demande SAML provient de Snowflake.
Note
Snowflake n’est pas responsable de la configuration de votre IdP. Pour obtenir de l’aide sur la configuration de votre IdP, veuillez consulter votre administrateur de sécurité interne.
Exécutez la commande DESCRIBE INTEGRATION :
DESC SECURITY INTEGRATION my_idp;
Enregistrez la valeur de la propriété SAML2_SNOWFLAKE_X509_CERT dans la ligne 7 pour l’utiliser dans vos paramètres IdP.
Spécifier le format NameID
SAML¶
Snowflake prend en charge la possibilité pour l’administrateur (c’est-à-dire l’utilisateur ayant le rôle ACCOUNTADMIN) de spécifier le format SAML NameID
qui sera demandé dans la requête d’authentification SAML sortante envoyée depuis Snowflake vers l” IdP.
La spécification du 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.
Le format SAML NameID
peut être intégré à l’intégration de sécurité SAML2. Vous pouvez spécifier SAML NameID
dans l’intégration de sécurité à l’aide de 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
Si le format SAML NameID
n’est pas spécifié, Snowflake utilise la valeur suivante :
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
Définir la propriété SAML2_REQUESTED_NAMEID_FORMAT¶
Si vous créez une intégration de sécurité SAML2 pour la première fois, assurez-vous de définir la propriété SAML2_REQUESTED_NAMEID_FORMAT.
Si vous avez créé une intégration de sécurité SAML2 sans définir la propriété SAML2_REQUESTED_NAMEID_FORMAT
_, suivez les étapes ci-dessous :
Exécutez la commande ALTER SECURITY INTEGRATION en tant qu’utilisateur avec un rôle ACCOUNTADMIN pour spécifier le format SAML
NameId
:ALTER SECURITY INTEGRATION my_idp SET SAML2_REQUESTED_NAMEID_FORMAT = '<string_literal>';
Exécutez la commande DESCRIBE INTEGRATION pour voir l’intégration de sécurité mise à jour :
DESC SECURITY INTEGRATION my_idp;
Configurer votre IdP pour spécifier NameID
¶
Configurez votre IdP pour spécifier le format SAML NameID
dans les assertions SAML.
Note
Snowflake n’est pas responsable de la configuration de votre IdP. Pour obtenir de l’aide sur la configuration de votre IdP, veuillez consulter votre administrateur de sécurité interne.
Exporter les métadonnées d’intégration de sécurité SAML2¶
Snowflake fournit des métadonnées SAML 2.0 pour l’intégration de sécurité SAML2 afin de faciliter la configuration du fournisseur de services Snowflake dans votre IdP.
Les métadonnées SAML 2.0 sont contenues dans la propriété SAML2_SNOWFLAKE_METADATA
et peuvent être obtenues en exécutant une commande DESCRIBE INTEGRATION sur l’intégration de sécurité SAML2. Par exemple :
DESC SECURITY INTEGRATION my_idp;
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
property | property_type | property_value | property_default |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
SAML2_X509_CERT | String | MIICr... | |
SAML2_PROVIDER | String | OKTA | |
SAML2_ENABLE_SP_INITIATED | Boolean | false | false |
SAML2_SP_INITIATED_LOGIN_PAGE_LABEL | String | my_idp | |
SAML2_SSO_URL | String | https://okta.com/sso | |
SAML2_ISSUER | String | https://okta.com | |
SAML2_SNOWFLAKE_X509_CERT | String | MIICr... | |
SAML2_REQUESTED_NAMEID_FORMAT | String | urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress | |
SAML2_SNOWFLAKE_ACS_URL | String | https://example.snowflakecomputing.com/fed/login | |
SAML2_SNOWFLAKE_ISSUER_URL | String | https://example.snowflakecomputing.com | |
SAML2_SNOWFLAKE_METADATA | String | <md:EntityDescriptor entityID="https://example.snowflakecomputing.com"> ... | |
SAML2_DIGEST_METHODS_USED | String | http://www.w3.org/2001/04/xmlenc#sha256 | |
SAML2_SIGNATURE_METHODS_USED | String | http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 | |
------------------------------------+---------------+-----------------------------------------------------------------------------+------------------+
À titre d’exemple représentatif, les métadonnées SAML 2.0 XML formatées de la propriété SAML2_SNOWFLAKE_METADATA
sont présentées ci-dessous. Notez que les valeurs X509certificate
pour signing
et encryption
sont tronquées.
<md:EntityDescriptor xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" entityID="https://example.snowflakecomputing.com">
<md:SPSSODescriptor AuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<dsig:KeyInfo>
<dsig:X509Data>
<dsig:X509Certificate>MIICr...</dsig:X509Certificate>
</dsig:X509Data>
</dsig:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<dsig:KeyInfo>
<dsig:X509Data>
<dsig:X509Certificate>MIICr...</dsig:X509Certificate>
</dsig:X509Data>
</dsig:KeyInfo>
</md:KeyDescriptor>
<md:AssertionConsumerService index="0" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://example.snowflakecomputing.com/fed/login" />
</md:SPSSODescriptor>
</md:EntityDescriptor>
Pour référence, la table suivante mappe les balises de métadonnées XML aux propriétés d’intégration de sécurité SAML2 Snowflake.
Sortie XML |
Propriété d’intégration de sécurité SAML2 |
---|---|
entityID |
SAML2_SNOWFLAKE_ISSUER_URL |
AuthnRequestsSigned |
SAML2_SIGN_REQUEST |
Certificat de signature |
SAML2_SNOWFLAKE_X509_CERT |
Certificat de chiffrement |
SAML2_SNOWFLAKE_X509_CERT |
Service consommateur d’assertion URL |
SAML2_SNOWFLAKE_ACS_URL |
Forcer la réauthentification dans Snowflake¶
Snowflake prend en charge la configuration de votre intégration de sécurité SAML2 pour exiger que l’utilisateur qui s’authentifie se ré-authentifie pour accéder à Snowflake pendant le flux d’authentification initial SSO ou lorsqu’une session Snowflake en cours expire.
Lorsque cette fonction est activée dans l’intégration de sécurité Snowflake SAML2, Snowflake règle la spécification SAML de la propriété ForceAuthn
sur True
dans la requête SAML sortante de Snowflake vers l’IdP. Une fois que l’IdP reçoit la requête avec la propriété ForceAuthn
réglée sur True
, l’IdP envoie une demande à Snowflake, qui invite les utilisateurs à saisir à nouveau leurs identifiants de connexion d’authentification (par exemple, nom d’utilisateur, mot de passe) pour accéder à Snowflake.
Cette fonction offre une sécurité accrue grâce à une deuxième authentification. En outre, l’invite de ré-authentification permet aux utilisateurs de saisir un ensemble d’identifiants de connexion différent de ceux utilisés pour lancer SSO afin d’accéder à Snowflake.
Important
Avant de mettre en œuvre cette fonctionnalité, vérifiez que votre IdP accepte le changement d’identités pendant un flux d’authentification SSO.
Si cette fonctionnalité est mise en œuvre dans Snowflake et que votre IdP ne prend pas en charge le changement d’identités pendant le flux d’authentification SSO initial, les utilisateurs peuvent ne pas être en mesure d’accéder à Snowflake en utilisant les différents ensembles d’identifiants de connexion fournis dans l’invite de ré-authentification.
Si vous créez une intégration de sécurité SAML2 pour la première fois, assurez-vous de définir la propriété SAML2_FORCE_AUTHN.
Pour mettre à jour une intégration de sécurité SAML2 existante afin de prendre en charge la ré-authentification forcée pour accéder à Snowflake, effectuez les étapes suivantes :
Exécutez la commande ALTER SECURITY INTEGRATION pour mettre à jour l’intégration de la sécurité :
ALTER SECURITY INTEGRATION my_idp SET SAML2_FORCE_AUTHN = true;
Exécutez la commande DESCRIBE INTEGRATION pour voir l’intégration de sécurité mise à jour :
DESC SECURITY INTEGRATION my_idp;
Où :
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’elle est définie sur
TRUE
, Snowflake définit la propriétéForceAuthn
SAML surTRUE
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
.
Point de terminaison de déconnexion personnalisé¶
Snowflake permet de définir une URL de point de terminaison personnalisé vers laquelle les utilisateurs sont redirigés après s’être déconnectés de Snowflake. Le point de terminaison est défini par la propriété SAML2_POST_LOGOUT_REDIRECT_URL
dans l’intégration de sécurité SAML2.
Une fois activé pour les utilisateurs qui accèdent à Snowflake par SSO SAML, le fait de cliquer sur le bouton Log Out dans l”Classic Console a pour effet de mettre fin à la session Snowflake et de rediriger les utilisateurs vers le point de terminaison spécifié.
Important
Ce comportement ne s’applique pas à Snowsight.
La définition d’un point de terminaison de déconnexion permet aux administrateurs de contrôler où les utilisateurs sont redirigés après s’être déconnectés de Snowflake. Par exemple, un point de terminaison personnalisé pourrait déclencher un script pour mettre fin simultanément à la session IdP. L’avantage de cette mise en œuvre est que les sessions Snowflake et IdP sont toutes deux terminées, ce qui oblige les utilisateurs à se ré-authentifier par rapport à l’IdP pour accéder à Snowflake.
Si vous créez une intégration de sécurité SAML2 pour la première fois, assurez-vous de définir la propriété SAML2_POST_LOGOUT_REDIRECT_URL.
Si vous avez créé une intégration de sécurité SAML2 sans définir la propriété SAML2_POST_LOGOUT_REDIRECT_URL
, exécutez la commande ALTER SECURITY INTEGRATION pour configurer le point de terminaison de déconnexion personnalisé :
ALTER SECURITY INTEGRATION my_idp SET SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
Gérer votre intégration de sécurité SAML2¶
Vous pouvez utiliser une commande ALTER SECURITY INTEGRATION pour gérer l’intégration de sécurité SAML2. Par exemple :
Téléchargez le certificat X.509 sous forme de chaîne dans une intégration de sécurité SAML2 existante.
ALTER SECURITY INTEGRATION my_idp SET SAML2_X509_CERT = 'AX2bv...';
Si vous êtes un client qui configure votre IdP pour vérifier les signatures des requêtes SAML ou chiffrer les réponses SAML, vous pouvez écraser votre clé privée et votre certificat auto-signé existants et générer une nouvelle clé privée et un nouveau certificat auto-signé :
Générer une nouvelle clé privée :
Prudence
Après avoir exécuté la commande ci-dessous, l’authentification SAML ne fonctionne plus, car votre IdP utilise toujours votre ancien certificat
SAML2_SNOWFLAKE_X509_CERT
. Pour réduire les perturbations, il est préférable d’exécuter la commande ci-dessous lorsque les utilisateurs ne sont pas aussi actifs.ALTER SECURITY INTEGRATION my_idp REFRESH SAML2_SNOWFLAKE_PRIVATE_KEY;
Récupérer la valeur de la propriété
SAML2_SNOWFLAKE_X509_CERT
dans votre intégration de sécurité :DESCRIBE SECURITY INTEGRATION my_idp; SELECT "property_value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID())) WHERE "property" = 'SAML2_SNOWFLAKE_X509_CERT';
Téléchargez la valeur récupérée dans votre IdP pour remplacer votre ancien certificat par votre nouveau certificat dans votre IdP.
Activez les requêtes signées.
ALTER SECURITY INTEGRATION my_idp SET SAML2_SIGN_REQUEST = true;
Spécifiez le format
NameID
.ALTER SECURITY INTEGRATION my_idp SET SAML2_REQUESTED_NAMEID_FORMAT = 'urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified';
Mettez à jour une intégration de sécurité existante pour permettre une réauthentification forcée.
ALTER SECURITY INTEGRATION my_idp SET SAML2_FORCE_AUTHN = true;
Mettez à jour une intégration de sécurité existante pour désactiver la réauthentification forcée.
ALTER SECURITY INTEGRATION my_idp UNSET SAML2_FORCE_AUTHN;
Mettez à jour le point de terminaison de déconnexion personnalisé.
ALTER SECURITY INTEGRATION my_idp SET SAML2_POST_LOGOUT_REDIRECT_URL = 'https://logout.example.com';
Pour plus d’informations, voir ALTER SECURITY INTEGRATION.
Réplication de la configuration SSO¶
Snowflake prend en charge la réplication et le basculement/la restauration de l’intégration de sécurité SAML2 d’un compte source à un compte cible.
Pour plus de détails, voir Réplication des intégrations de sécurité et des politiques réseau sur plusieurs comptes.