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 :

Moyens de se connecter à Snowflake en toute sécurité

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 :

  1. Détectez les utilisateurs à risque.

  2. Planifiez votre migration pour minimiser les perturbations.

  3. Protégez vos utilisateurs dans Snowflake.

  4. Surveillez en permanence les utilisateurs à risque.

Les quatre phases de la migration vers la MFA

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
;
Copy
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
;
Copy

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
;
Copy

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.

Meilleures pratiques en matière d'authentification

Veuillez suivre les étapes suivantes pour réduire le risque de compromission de compte Snowflake :

  1. Définir le type d’utilisateur.

  2. Supprimer les mots de passe locaux lorsqu’ils ne sont pas nécessaires.

  3. Créer des politiques d’authentification pour les utilisateurs service.

  4. Créez des politiques d’authentification pour appliquer la MFA aux utilisateurs humains.

  5. Créer une politique de mot de passe.

  6. Créer une politique de session.

  7. Créer des politiques réseau pour les utilisateurs service.

  8. Créer des politiques réseau au niveau compte.

  9. Protéger les utilisateurs service.

  10. Appliquer des politiques de mot de passe et de session au niveau du compte.

  11. Tester les utilisateurs service.

  12. Protéger le compte avec la mise en œuvre de la MFA.

  13. Appliquer des politiques réseau de niveau compte.

  14. Désactiver les utilisateurs inactifs.

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
Copy

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 ];
Copy

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;
Copy

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';
Copy

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';
Copy
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';
Copy

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>';
Copy

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>';
Copy

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' )
;
Copy

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' )
;
Copy

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;
Copy
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;
Copy

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;
Copy

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;
Copy

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;
Copy

Pour une situation d’urgence :

ALTER USER BREAKGLASS_ACCOUNTADMIN_1
AUTHENTICATION POLICY = ACCOUNTADMIN_BREAKGLASS_MFA;
Copy

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;
Copy

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;
Copy

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.