Meilleures pratiques pour la migration de l’authentification à facteur simple¶
Cette section présente aux clients les meilleures pratiques sur la façon d’exploiter les capacités de Snowflake pour mettre en œuvre une authentification forte et atténuer les risques de vol d’identifiants. Utilisez ces informations en conjonction avec Planifier l’abandon de la connexion par mot de passe à facteur unique, qui présente les dernières stratégies de Snowflake pour s’affranchir de l’authentification par mot de passe uniquement.
Les exemples de requêtes présentés dans ce guide ont pour but d’aider les clients de Snowflake et ne sont pas destinés à être mis en œuvre dans des environnements de production.
Introduction¶
Comme mentionné dans cet article, Snowflake se concentre sur trois piliers clés qui facilitent la sécurisation de vos comptes :
Inviter : encouragez les utilisateurs qui n’utilisent pas les meilleures pratiques de sécurité à les adopter (par exemple, configurer une authentification multifactorielle (MFA).
Appliquer : facilitez l’application de la sécurité par défaut par les administrateurs (par exemple, imposer aux utilisateurs humains d’utiliser la MFA).
Surveiller : fournissez une visibilité sur le respect des politiques de sécurité (par exemple, vérifier quels utilisateurs n’ont pas configuré la MFA).
Les informations suivantes portent principalement sur les meilleures pratiques de surveillance à l’aide de Snowflake Centre de confiance, et sur les étapes d’application qui utilisent les politiques d’authentification et réseau.
Cycle de vie d’une session de connexion Snowflake¶
Les connexions à Snowflake commencent par des pilotes, des connecteurs ou Snowsight, comme le montre le diagramme suivant :

Lorsqu’un utilisateur ou un service se connecte à Snowflake, il se passe ce qui suit :
Si elle est configurée, la politique réseau s’applique. N’oubliez pas que les politiques réseau de niveau utilisateur prévalent sur les politiques réseau de niveau compte.
Si elle est configurée, la politique d’authentification s’applique. N’oubliez pas que les politiques d’authentification de niveau utilisateur prévalent sur les politiques d’authentification de niveau compte.
Si un utilisateur ou un service utilise l’authentification par mot de passe native de Snowflake, la politique de mot de passe s’applique si elle est configurée.
Si l’utilisateur ou le service est autorisé par les contrôles ci-dessus, les politiques de session s’appliquent pour contrôler la manière dont un utilisateur se réauthentifie après une période d’inactivité. Les politiques de session de niveau utilisateur prévalent sur les politiques de session de niveau compte.
Politiques de réseau et d’authentification : lignes directrices générales¶
Tenez compte des lignes directrices suivantes dans tous les cas. Pour plus d’informations, voir Phase 3 : Protection.
Snowflake recommande vivement de configurer et d’appliquer :
L’attribut TYPE d’utilisateur pour différencier PERSON (humain), SERVICE, et LEGACY_SERVICE.
PERSON : pour l’authentification interactive par des utilisateurs humains où la MFA est appliquée. Par défaut, au moment de la rédaction de ce document, il a la valeur NULL, ce qui indique un traitement de type PERSON du point de vue de l’application de la MFA.
SERVICE : pour l’authentification de service à service qui utilise l’accès programmatique. Il indique une exemption de l’application de la MFA, mais ces utilisateurs ne prennent plus en charge l’authentification par mot de passe. Ces utilisateurs ne prennent alors en charge que OAuth ou la paire de clés.
LEGACY_SERVICE : Il s’agit du seul type d’utilisateur qui prend en charge l’authentification par mot de passe uniquement (exempté de l’application de la MFA). Il s’agit uniquement d’un outil de migration, et les clients doivent protéger ces utilisateurs au moyen de politiques réseau et les surveiller à l’aide des fonctions de protection contre les fuites de mots.
Note
LEGACY_SERVICE doit être utilisé comme un outil de migration et sera obsolète en novembre 2025.
SCIM pour le provisionnement automatique et la définition du type d’utilisateur via les attributs du client
Des politiques réseau pour s’assurer que vos utilisateurs et vos services proviennent uniquement de sources autorisées et fiables, chaque fois que cela est possible.
Politiques d’authentification visant à mettre en œuvre des méthodes d’authentification forte qui s’appuient sur des identifiants de courte durée tels que OAuth et SAML.
Politiques de mot de passe pour appliquer les politiques de mot de passe de l’organisation.
Politiques de session pour limiter les temps d’inactivité des sessions.
Pour les utilisateurs de services, les clients sont encouragés à utiliser des identifiants de courte durée, tels que OAuth, dans la mesure du possible. Pour les identifiants à plus long terme, tels que les paires de clés, il est conseillé aux clients de procéder à une rotation régulière de ces clés et de les associer, dans la mesure du possible, à des politiques de réseau.
Pour les utilisateurs humains interactifs, les clients doivent intégrer leurs comptes Snowflake avec les fournisseurs d’identité de leur organisation, en s’appuyant sur leur propre authentification fédérée SAML avec leur propre fournisseur d’identité, et avec leur propre MFA.
Pour les cas d’utilisation d’urgence et les clients utilisant des mots de passe natifs, Snowflake recommande vivement l’utilisation de la MFA native de Snowflake pour ces utilisateurs d’urgence.
Les clients doivent procéder à une rotation régulière de leurs identifiants, conformément à leur politique de sécurité interne.
Les clients doivent toujours utiliser le site Centre de confiance pour surveiller leurs utilisateurs à risque et intégrer leurs comptes Snowflake au centre d’opérations de sécurité de leur organisation.
Snowflake North Star pour une authentification plus forte¶
En 2025, Snowflake prendra en charge des fonctionnalités supplémentaires pour aider les clients.
Au cours du premier semestre 2025¶
Améliorer notre prise en charge de la MFA native pour aller au-delà de l’exclusivité de DUO et aller vers la prise en charge de clés d’accès et d’applications d’authentificateur (objectif d’avant-première privée visant une disponibilité générale vers la fin avril 2025).
Prise en charge de OAuth native dans nos pilotes et connecteurs pour simplifier la configuration et l’adoption de OAuth.
Les nouvelles capacités du Trust Center, telles que :
Notifications par courriel (l’avant-première publique est prévue pour la fin avril 2025).
Extensions avec nos partenaires et paquets de scanners personnalisés (en avant-première privée actuellement, objectif de la disponibilité générale vers la fin du mois de juillet 2025).
Trust Center au niveau de l’organisation du client (en avant-première privée pour fin avril 2025).
Plus tard en 2025¶
Améliorer le Trust Center pour qu’il utilise la détection d’anomalies par machine-learning.
Améliorer l’expérience de l’utilisateur avec SAML, OAuth avec Snowsight.
Prendre en charge l’identité de la charge de travail et OIDC où les clients peuvent utiliser les identités CSP natives telles que l’identité gérée Azure, les rôles AWS, et les comptes de service GCP pour connecter leurs charges de travail à Snowflake facilement sans identifiants.
Prendre en charge mTLS dans les deux sens, en entrée vers Snowflake et en sortie de Snowflake, vers les ressources du client qui prennent en charge mTLS.
Snowflake se réserve le droit de mettre à jour et de modifier la liste et les délais ci-dessus si l’entreprise le juge nécessaire ; nous vous donnerons plus de détails ultérieurement.
Meilleures pratiques pour l’application des politiques d’authentification et de réseau¶
Snowflake recommande de suivre les quatre étapes suivantes pour migrer vers une posture d’authentification plus forte :
Détectez les utilisateurs à risque.
Planifiez votre migration pour minimiser les perturbations.
Protégez vos utilisateurs dans Snowflake.
Surveillez en permanence les utilisateurs à risque.

Phase 1 : Détection¶
Snowflake a introduit deux fonctionnalités principales :
Paquet de scanners Threat Intelligence : Ce scanner identifie les utilisateurs à risque sur la base de la logique du diagramme suivant. Cette section comprend également un exemple de requête permettant de dresser la liste des utilisateurs à risque et d’expliquer pourquoi ils le sont.
Protection contre les fuites de mots de passe : Cette fonction vérifie et désactive automatiquement les mots de passe des utilisateurs découverts sur le dark web. Cela offre une protection intégrée contre les fuites de mots de passe et contribue à limiter les possibilités d’exfiltration de données. Les utilisateurs compromis peuvent contacter les administrateurs de compte pour réinitialiser leurs mots de passe.
Les clients doivent activer le scanner Threat Intelligence et personnaliser la fréquence d’analyse. En général, ce scanner doit être exécuté une fois par semaine pour rendre compte de la situation actuelle des utilisateurs à risque. Les résultats de tous les scanners trust sont stockés dans le schéma SNOWFLAKE.TRUST_CENTER
. Les clients peuvent exploiter les alertes natives de Snowflake pour avertir automatiquement les administrateurs de la sécurité ou même prendre des actions en cas de détection d’un utilisateur à risque.
Exemples de requêtes pour des listes d’utilisateurs à risque¶
Snowflake a récemment ajouté deux nouveaux scanners : un pour les utilisateurs personne et un pour les utilisateurs service. Cela permet aux clients d’avoir des listes distinctes d’utilisateurs utilisant la connexion par mot de passe à facteur unique, en fonction du type d’utilisateur.
Vous pouvez renvoyer une liste des utilisateurs à risque pour chaque type.
Liste des utilisateurs humains à risque¶
SELECT *
FROM SNOWFLAKE.TRUST_CENTER.FINDINGS
WHERE event_id =
(SELECT event_id FROM SNOWFLAKE.TRUST_CENTER.FINDINGS
WHERE scanner_id = 'THREAT_INTELLIGENCE_NON_MFA_PERSON_USERS'
ORDER BY event_id DESC LIMIT 1) AND total_at_risk_count != 0
;
Liste des utilisateurs services à risque¶
SELECT *
FROM SNOWFLAKE.TRUST_CENTER.FINDINGS
WHERE event_id =
(SELECT event_id FROM SNOWFLAKE.TRUST_CENTER.FINDINGS
WHERE scanner_id = 'THREAT_INTELLIGENCE_PASSWORD_SERVICE_USERS'
ORDER BY event_id DESC LIMIT 1 ) and total_at_risk_count != 0
;
Répartition des utilisateurs selon le TYPE et la méthode d’authentification utilisée¶
En plus de la requête précédente, il est utile de dresser la liste de la répartition des utilisateurs en fonction des types d’utilisateurs et des méthodes d’authentification utilisées. Cela aide les clients à élaborer des stratégies de migration des utilisateurs vers des méthodes d’authentification plus fortes telles que SAML et OAuth. Par exemple, si un utilisateur apparaît comme risqué (parce qu’il a un mot de passe dans Snowflake) mais que cet utilisateur n’utilise que l’authentification SAML, il est conseillé de supprimer ce mot de passe de Snowflake dès que possible.
WITH users AS (
SELECT DISTINCT
user_id
, name
, login_name
, type
, email
FROM
SNOWFLAKE.ACCOUNT_USAGE.USERS
WHERE
DELETED_ON IS NULL)
SELECT
u.user_id
, a.event_timestamp
, a.user_name
, u.type
, a.reported_client_type
, a.first_authentication_factor
, a.second_authentication_factor
FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY AS a
JOIN USERS u ON a.user_name = u.name
;
Phase 2 : Planification de la migration¶
La planification de la migration commence par Phase 1 : Détection. Après avoir identifié les utilisateurs à risque, commencez la planification afin de suivre les Politiques de réseau et d’authentification : lignes directrices générales. Dans la mesure du possible, vous devez abandonner les identifiants statiques tels que les mots de passe et les paires de clés, et utiliser l’authentification unique (authentification fédérée), telle que SAML pour les utilisateurs interactifs et OAuth pour les utilisateurs programmatiques (SERVICE) et interactifs (PERSON).
Si vous êtes contraint d’utiliser des identifiants statiques (paires de clés ou mots de passe) pour prendre en charge certaines applications anciennes, tenez compte des éléments suivants dans votre planification :
Utilisez les politiques réseau dans la mesure du possible.
Effectuez une rotation de ces identifiants statiques en fonction des politiques de votre organisation.
Considérations relatives à la migration¶
Voici quelques éléments à prendre en compte lorsque vous planifiez votre migration :
Tout d’abord, définissez les types d’utilisateurs (cette opération peut être automatisée via SCIM).
Deuxièmement, vérifiez les méthodes d’authentification prises en charge par vos applications : Snowflake prend en charge une variété de méthodes d’authentification, telles que OAuth, SAML, paire de clés, MFA, etc. Cependant, l’application qui se connecte à Snowflake doit également prendre en charge des méthodes d’authentification forte. Il y a deux cas d’utilisation :
L’application prend déjà en charge SAML et/ou OAuth. Nous vous encourageons à migrer vers cette authentification dès que possible.
L’application est ancienne et ne prend pas en charge les méthodes d’authentification forte telles que SAML ou OAuth ; elle ne prend en charge que les mots de passe. Dans ce cas, il vous est conseillé de mettre à jour votre ancienne application. En attendant, vous pouvez utiliser les politiques réseau, la rotation des mots de passe et les fonctions de protection contre les fuites de mots de passe jusqu’à la mise à jour de l’application.
Ensuite, les clients doivent prendre en compte les éléments suivants pour les utilisateurs locaux (créés manuellement dans Snowflake et qui n’ont pas accès à SAML ou OAuth) :
Pour une application qui prend en charge SSO, passez l’utilisateur local en utilisateur compatible SSOet tenez compte des temps d’arrêt lorsque du changement.
Pour passer les utilisateurs locaux en utilisateurs compatibles SSO, assurez-vous que ces utilisateurs existent dans votre IdP et qu’ils sont ensuite provisionnés dans Snowflake manuellement, ou de préférence automatiquement, via SCIM.
Désactivez les utilisateurs locaux non utilisés.
Snowflake prend en charge les politiques d’authentification, les politiques réseau et les politiques de mot de passe au niveau de l’utilisateur et du compte. Considérez d’abord les politiques de niveau utilisateur afin de procéder à une migration progressive (les politiques de niveau utilisateur sont prioritaires par rapport aux politiques de niveau compte) :
Snowflake recommande des politiques réseau de niveau utilisateur pour les applications qui on recours à des utilisateurs service (TYPE = SERVICE ou LEGACY_SERVICE).
Pour les utilisateurs humains (TYPE = PERSON ou NULL), vous pouvez commencer par des politiques réseau au niveau de l’utilisateur, puis appliquer des politiques réseau au niveau du compte pour protéger toutes les populations d’utilisateurs qui n’ont pas de politiques spécifiques au niveau utilisateur.
Le même concept avec les politiques de MFA commence par des politiques de niveau utilisateur.
Si vous disposez d’une application ancienne qui ne prend pas en charge l’authentification unique, Snowflake recommande d’utiliser les jetons d’accès programmatique (PATs), qui sont par défaut liés à des rôles spécifiques, nécessitent une politique réseau et sont limités dans le temps.
Phase 3 : Protection¶
Le diagramme suivant vous aide à naviguer entre les meilleures pratiques recommandées en matière d’authentification. Comme vous pouvez le constater, Snowflake recommande toujours d’utiliser d’abord l’authentification et l’autorisation fédérées.

Veuillez suivre les étapes suivantes pour réduire le risque de compromission de compte Snowflake :
Supprimer les mots de passe locaux lorsqu’ils ne sont pas nécessaires.
Créer des politiques d’authentification pour les utilisateurs service.
Créez des politiques d’authentification pour appliquer la MFA aux utilisateurs humains.
Appliquer des politiques de mot de passe et de session au niveau du compte.
Définir le type d’utilisateur¶
La première étape de la phase de protection consiste à définir les types d’utilisateurs automatiquement via SCIM ou manuellement :
ALTER USER svc_user1 SET TYPE = SERVICE;
ALTER USER user1@example.COM SET TYPE = PERSON;
-- LEGACY APPLICATION ONLY
En outre, vous pouvez désormais définir le type d’utilisateur administrateur lors de la création d’un compte :
CREATE ACCOUNT <name> [ ADMIN_USER_TYPE = PERSON | SERVICE | LEGACY_SERVICE | NULL ];
Astuce
De nombreux clients ont généralement un modèle dans leurs noms d’utilisateurs de service (par exemple local_svc_user1
). Vous pouvez utiliser ce modèle de dénomination pour définir le type SERVICE à l’échelle.
Supprimer les mots de passe locaux lorsqu’ils ne sont pas nécessaires¶
Exploitez les requêtes sous Répartition des utilisateurs selon TYPE et la méthode AuthN utilisés et Liste des utilisateurs à risque, sur la base des résultats du Trust Center, pour commencer à nettoyer tout mot de passe dans Snowflake pour un utilisateur qui utilise déjà SAML, OAuth, ou une paire de clés exclusivement.
Créer des politiques d’authentification pour les utilisateurs service¶
Snowflake recommande l’utilisation de OAuth pour les utilisateurs de services programmatiques, et vous pouvez l’appliquer avec des politiques d’authentification :
CREATE AUTHENTICATION POLICY PROGRAMMATIC_ACCESS_USER_AUTH
CLIENT_TYPES = ('DRIVERS', 'SNOWSQL')
AUTHENTICATION_METHODS = ('OAUTH')
SECURITY_INTEGRATIONS = ('<OAUTH SECURITY INTEGRATIONS>');
ALTER USER <SERVICE_USER> SET AUTHENTICATION POLICY PROGRAMMATIC_ACCESS_USER_AUTH;
Les clients peuvent toujours utiliser des paires de clés pour l’authentification avec les utilisateurs SERVICE, mais ils doivent combiner cela avec les politiques réseau et procéder à une rotation régulière de leurs clés.
Note
Si vous disposez d’un ancien système qui ne prend pas en charge les paires de clés ou OAuth, et que vous devez utiliser un mot de passe pour l’authentification, créez une politique d’authentification supplémentaire avec la méthode d’authentification PASSWORD
et appliquez-la à cet utilisateur programmatique spécifique. Combinez cette approche avec Politiques de réseau et d’authentification : lignes directrices générales.
Créez des politiques d’authentification pour appliquer la MFA aux utilisateurs humains¶
Snowflake recommande à ses clients d’utiliser leurs propres fournisseurs d’identité SAML (IdPs) avec toute solution MFA prise en charge par leur IdP. L’exemple de politique d’authentification suivant aide les clients à :
Appliquer la MFA native de Snowflake à tout utilisateur humain qui utilise des mots de passe natifs de Snowflake.
Compter sur le IdP SAML du client pour imposer la MFA aux utilisateurs de l’authentification unique.
CREATE AUTHENTICATION POLICY HUMAN_ACCESS_ACCOUNT_ENFORCE_MFA
AUTHENTICATION_METHODS = ('SAML', 'PASSWORD')
SECURITY_INTEGRATIONS = ('<SAML SECURITY INTEGRATIONS>')
MFA_AUTHENTICATION_METHODS = ('PASSWORD'); -- enforce Snowflake MFA for native passwords only
MFA_ENROLLMENT = 'REQUIRED';
Les clients doivent prendre en considération une situation d’urgence au cas où le IdP du client serait hors ligne afin que leurs administrateurs de compte puissent toujours se connecter à leurs comptes Snowflake.
CREATE AUTHENTICATION POLICY ACCOUNTADMIN_BREAKGLASS_MFA
AUTHENTICATION_METHODS = ('PASSWORD')
MFA_AUTHENTICATION_METHODS = ('PASSWORD') -- enforce Snowflake MFA for native passwords only
MFA_ENROLLMENT = 'REQUIRED';
MFA sur SSO¶
Note
Pour des politiques plus strictes, vous pouvez créer des politiques d’application MFA supplémentaires et les appliquer directement au niveau utilisateur : par exemple, lorsque le IdP du client ne prend pas en charge la MFA, pour appliquer la MFA de Snowflake à un utilisateur indépendamment de la mise en œuvre de la MFA au niveau du IdP. (Certains clients peuvent utiliser cette option pour une double MFA pour les utilisateurs hautement privilégiés, tels que les administrateurs de comptes)
CREATE AUTHENTICATION POLICY ACCOUNTADMIN_DOUBLE_MFA
AUTHENTICATION_METHODS = ('PASSWORD', 'SAML')
SECURITY_INTEGRATIONS = ('<SAML SECURITY INTEGRATIONS>')
MFA_AUTHENTICATION_METHODS = ('PASSWORD', 'SAML') -- double MFA
MFA_ENROLLMENT = 'REQUIRED';
Créer une politique de mot de passe¶
Dans le cas d’un ancien système ou d’une situation d’urgence où vous devez utiliser des mots de passe natifs de Snowflake, veuillez utiliser les politiques de mot de passe de Snowflake pour correspondre aux politiques de mot de passe de l’organisation, si elles sont différentes des politiques par défaut.
CREATE PASSWORD POLICY password_policy_account
PASSWORD_MIN_LENGTH = 32
-- PASSWORD_MAX_LENGTH = <integer>
PASSWORD_MIN_UPPER_CASE_CHARS = 6
PASSWORD_MIN_LOWER_CASE_CHARS = 6
PASSWORD_MIN_NUMERIC_CHARS = 4
PASSWORD_MIN_SPECIAL_CHARS = 8
PASSWORD_MIN_AGE_DAYS = 10
PASSWORD_MAX_AGE_DAYS = 30
PASSWORD_MAX_RETRIES = 3
PASSWORD_LOCKOUT_TIME_MINS = 30
PASSWORD_HISTORY = 24
COMMENT = '<string_literal>';
Créer une politique de session¶
Snowflake vous recommande de créer des politiques de session pour appliquer la réauthentification après une période d’inactivité spécifique. Il ne s’agit là que d’un exemple ; vous pouvez personnaliser les politiques au niveau de chaque utilisateur.
CREATE SESSION POLICY session_policy_account
SESSION_IDLE_TIMEOUT_MINS = 240 -- Snowflake clients and programmatic clients
SESSION_UI_IDLE_TIMEOUT_MINS = 20 -- For the Snowflake web interface
COMMENT = '<string_literal>';
Créer des politiques réseau pour les utilisateurs service¶
En général, les utilisateurs services ou d’accès programmatique doivent provenir d’adresses IP autorisées (ou VPCE ID, LinkID, et ainsi de suite, dans le cas d’une connectivité privée).
Snowflake recommande de créer des politiques réseau de niveau utilisateur service pour restreindre l’accès à ces utilisateurs d’accès programmatique à partir de sources autorisées et fiables. Les clients doivent envisager d’appliquer des règles réseau dans les zones de préparation internes également.
Note
Les règles de réseau pour les zones de préparation internes sont prises en charge dans Snowflake dans les régions AWS uniquement ; dans le cas d’Azure, vous pouvez envisager de bloquer l’accès public, et pour GCP avec des contrôles de service, contactez le support Snowflake.
Dans certains cas, en raison de la nature dynamique du Cloud, certains fournisseurs de Cloud ne peuvent pas fournir des plages d’adresses IP à inscrire dans les politiques réseau de Snowflake. Pour de tels scénarios, veuillez suivre les lignes directrices générales des politiques réseau et d’authentification. Vous pouvez également envisager une connectivité privée si votre outil le permet.
Les connexions peuvent provenir de réseaux privés ou publics, selon que le client utilise ou non une connectivité privée. N’oubliez pas que vous pouvez autoriser la connectivité publique et privée en même temps en ajoutant plusieurs règles de réseau qui incluent les IPs (publiques ou privées) et/ou le balises CSP (telles que VPCE ID, LinkIDs).
-- ACCESS FROM PUBLIC IP ADDRESSES
CREATE NETWORK RULE PROGRAMMATIC_ACCESS_USER_NET_RULE_PUBLIC
TYPE = IPV4
VALUE_LIST = ( 'PUBLIC IP1' , 'XX.XX.XX.XX/24' [ , ... ] )
MODE = INGRESS
;
-- ACCESS FROM PRIVATE NETWORK
CREATE NETWORK RULE PROGRAMMATIC_ACCESS_USER_NET_RULE_PL
TYPE = AWSVPCEID
VALUE_LIST = ( 'VPCE-123ABC3420C1931' , 'VPCE-123ABC3420C1932' )
MODE = INGRESS
;
-- RESTRICT ACCESS TO INTERNAL STAGE USING VPCE ID
CREATE NETWORK RULE PROGRAMMATIC_ACCESS_USER_NET_RULE_INTERNAL_STAGE
TYPE = AWSVPCEID
VALUE_LIST = ( 'VPCE-123ABC3420C1933' )
MODE = INTERNAL_STAGE
;
CREATE NETWORK POLICY PROGRAMMATIC_ACCESS_USER_NET_POLICY
ALLOWED_NETWORK_RULE_LIST =
(
'PROGRAMMATIC_ACCESS_USER_NET_RULE_PUBLIC',
'PROGRAMMATIC_ACCESS_USER_NET_RULE_PL',
'PROGRAMMATIC_ACCESS_USER_NET_RULE_INTERNAL_STAGE'
)
--BLOCKED_NETWORK_RULE_LIST = ( 'OPTIONAL BLOCKED LIST OF IPS' )
;
Créer des politiques réseau au niveau compte¶
Les politiques de niveau compte fonctionnent comme des politiques réseau de sécurité par défaut pour les utilisateurs auxquels aucune politique réseau n’est directement appliquée. La meilleure pratique consiste à garder ces politiques aussi restrictives et courtes que possible tout en utilisant des politiques au niveau de l’utilisateur pour répondre aux besoins spécifiques de l’utilisateur.
Snowflake ne recommande pas d’élaborer d’énormes politiques réseau de niveau compte pour répondre à tous les besoins de l’organisation ; au lieu de cela, activez des politiques de niveau utilisateur pour avoir des contrôles plus granulaires.
Comme pour les politiques réseau de niveau utilisateur, les connexions peuvent provenir de réseaux privés ou publics, selon que le client utilise ou non une connectivité privée. N’oubliez pas que vous pouvez autoriser la connectivité publique et privée en même temps en ajoutant plusieurs règles de réseau qui incluent les IPs (publiques ou privées) et/ou le balises CSP (telles que VPCE ID, LinkIDs).
-- ACCESS FROM PUBLIC IP ADDRESSES
CREATE NETWORK RULE HUMAN_ACCESS_ACCOUNT_NET_RULE_PUBLIC
TYPE = IPV4
VALUE_LIST = ( 'PUBLIC IP1' , 'XX.XX.XX.XX/24' [ , ... ] )
MODE = INGRESS
;
-- ACCESS FROM PRIVATE NETWORK
CREATE NETWORK RULE HUMAN_ACCESS_ACCOUNT_NET_RULE_PL
TYPE = AWSVPCEID
VALUE_LIST = ( 'VPCE-123ABC3420C1934' , 'VPCE-123ABC3420C1936' )
MODE = INGRESS
;
-- RESTRICT ACCESS TO INTERNAL STAGE USING VPCE ID
CREATE NETWORK RULE HUMAN_ACCESS_ACCOUNT_NET_RULE_INTERNAL_STAGE
TYPE = AWSVPCEID
VALUE_LIST = ( 'VPCE-123ABC3420C1937')
MODE = INTERNAL_STAGE
;
CREATE NETWORK POLICY ACCOUNT_LEVEL_NET_POLICY
ALLOWED_NETWORK_RULE_LIST =
(
'HUMAN_ACCESS_ACCOUNT_NET_RULE_PUBLIC',
'HUMAN_ACCESS_ACCOUNT_NET_RULE_PL',
'HUMAN_ACCESS_ACCOUNT_NET_RULE_INTERNAL_STAGE'
)
--BLOCKED_NETWORK_RULE_LIST = ( 'OPTIONAL BLOCKED LIST OF IPS' )
;
Protéger les utilisateurs service¶
Les utilisateurs disposant de TYPE=SERVICE
sont exemptés des politiques d’application de MFA au niveau du compte et disposent de restrictions permettant d’améliorer la sécurité des cas d’utilisation non interactifs. Notamment, les utilisateurs de type SERVICEne peuvent pas se connecter à l’aide d’un mot de passe ou de SSO SAML. Voir l’avertissement ci-dessous.
-- FOR EVERY SERVICE PROGRAMMATIC ACCESS USER
ALTER USER SERVICE_USER_1 SET
TYPE = SERVICE
NETWORK_POLICY = PROGRAMMATIC_ACCESS_USER_NET_POLICY
AUTHENTICATION POLICY = PROGRAMMATIC_ACCESS_USER_AUTH;
Utilisateurs service pour les applications existantes¶
Si vous disposez d’une application ancienne qui ne prend pas en charge OAuth, utilisez des jetons d’accès programmatique (PATs) au lieu d’utiliser des mots de passe avec LEGACY_SERIVCE.
Les PATs ont de nombreuses restrictions pour améliorer votre sécurité : lorsque vous générez un PAT, il est lié à des rôles spécifiques, limité dans le temps et lié à une politique réseau appliquée à cet utilisateur spécifique (au niveau du compte ou de l’utilisateur).
Vous pouvez copier le PAT et l’utiliser dans le champ du mot de passe de votre ancienne application ; il n’est pas nécessaire d’utiliser LEGACY_SERVICE ou l’authentification par mot de passe uniquement pour ces anciennes applications.
Prudence
Comme les utilisateurs de type SERVICEne peuvent pas utiliser de mot de passe comme méthode d’authentification, il est conseillé aux clients des systèmes existants qui ne prennent pas en charge une forme d’authentification plus forte d’utiliser plutôt un PAT.
Note
N’oubliez pas que LEGACY_SERVICE sera obsolète en novembre 2025.
Appliquer des politiques de mot de passe et de session au niveau du compte¶
L’administrateur de la sécurité de Snowflake doit appliquer des politiques de base en matière de mots de passe et de sessions au niveau du compte, puis remplacer ces politiques par des politiques de niveau utilisateur, le cas échéant.
ALTER ACCOUNT SET
SESSION POLICY = SESSION_POLICY_ACCOUNT;
PASSWORD POLICY = PASSWORD_POLICY_ACCOUNT;
Tester les utilisateurs service¶
À ce stade, des politiques de mot de passe et de session sont appliquées au compte ; les utilisateurs programmatiques du service sont exemptés de MFA; ils disposent de leurs propres politiques d’authentification spécifiques et de politiques réseau qui garantissent que les connexions sont établies à partir de sources fiables et utilisent les méthodes d’authentification recommandées, telles que OAuth ou une paire de clés.
L’administrateur de sécurité doit tester quelques utilisateurs service pour s’assurer du bon déroulement des opérations et pour confirmer que les connexions proviennent de sources fiables et qu’elles utilisent des méthodes d’authentification appropriées. Les administrateurs doivent utiliser LOGIN_HISTORY, en plus du Trust Center, pour confirmer que les utilisateurs service sont protégés par les politiques réseau.
SELECT *
FROM TABLE(INFORMATION_SCHEMA.LOGIN_HISTORY(TIME_RANGE_START =>
DATEADD('HOURS',-1,CURRENT_TIMESTAMP()),CURRENT_TIMESTAMP()))
ORDER BY EVENT_TIMESTAMP;
Protéger le compte avec la mise en œuvre de la MFA¶
Pour appliquer la MFA à tous les utilisateurs qui ne sont pas de typeSERVICE, appliquez la politique d’application MFA au niveau du compte.
Ces politiques permettent de garantir que tous les utilisateurs interactifs humains activent la MFA soit à partir de leur propre IdP, soit à partir de la MFA native de Snowflake.
ALTER ACCOUNT SET
AUTHENTICATION POLICY = HUMAN_ACCESS_ACCOUNT_ENFORCE_MFA;
Si vous souhaitez appliquer la double MFA à vos utilisateurs hautement privilégiés, tels que les administrateurs de comptes, appliquez la MFA à ce niveau d’utilisateur. Toutefois, vous devez trouver un équilibre entre les procédures d’urgence en cas de défaillance de votre IdP et vos exigences en matière de sécurité.
ALTER USER SUPER_PROTECTED_ACCOUNTADMIN_1
AUTHENTICATION POLICY = ACCOUNTADMIN_DOUBLE_MFA;
Pour une situation d’urgence :
ALTER USER BREAKGLASS_ACCOUNTADMIN_1
AUTHENTICATION POLICY = ACCOUNTADMIN_BREAKGLASS_MFA;
Appliquer des politiques réseau de niveau compte¶
Pour finir, il est temps d’appliquer des politiques réseau au niveau du compte afin de protéger tous les autres utilisateurs qui ne disposent pas de politiques réseau explicites.
ALTER ACCOUNT SET
NETWORK_POLICY = ACCOUNT_LEVEL_NET_POLICY;
Désactiver les utilisateurs inactifs¶
Le scanner CIS du Trust Center (1.8) surveille les utilisateurs qui n’ont pas été actifs au cours des 90 derniers jours. Comme le montre le diagramme suivant, vous pouvez cliquer sur Open a Worksheet pour afficher la requête qui répertorie les utilisateurs inactifs :
SELECT
F.VALUE:ENTITY_ID::VARCHAR AS ENTITY_ID,
F.VALUE:ENTITY_NAME::VARCHAR AS ENTITY_NAME,
F.VALUE:ENTITY_OBJECT_TYPE::VARCHAR AS ENTITY_OBJECT_TYPE,
F.VALUE:ENTITY_DETAIL AS ENTITY_DETAIL
FROM
SNOWFLAKE.TRUST_CENTER.FINDINGS,
LATERAL FLATTEN(INPUT => AT_RISK_ENTITIES) AS F;
Snowflake vous recommande vivement de désactiver ces utilisateurs.
Phase 4 : Surveillance continue¶
Utilisez le paquet de scanner Threat Intelligence de Trust Center pour surveiller votre MFA et l’application de la politique réseau. Grâce à la fonction de protection contre les fuites de mots de passe, Snowflake surveille le dark web à la recherche d’identifiants volés et désactive tout utilisateur dont le hachage du mot de passe correspond à celui trouvé sur le dark web. Vous pouvez également exploiter les alertes natives de Snowflake, ainsi que les requêtes personnalisées pour créer des alertes d’hygiène supplémentaires pour :
des utilisateurs dont le type n’a pas été défini de manière spécifique,
une application avec des identifiants statiques tels que des mots de passe ou des paires de clés,
un nouvel utilisateur avec LEGACY_SERVICE ajouté,
accéder régulièrement aux applications existantes pour une mise à niveau vers une autorisation plus forte.