Politiques d’authentification

Les politiques d’authentification vous permettent de contrôler la manière dont un client ou un utilisateur s’authentifie en vous permettant de spécifier :

Vous pouvez définir des politiques d’authentification sur le compte ou les utilisateurs du compte. Si vous définissez une politique d’authentification sur le compte, celle-ci s’applique à tous les utilisateurs du compte. Si vous définissez une politique d’authentification à la fois sur un compte et sur un utilisateur, la politique d’authentification au niveau de l’utilisateur prévaut sur la politique d’authentification au niveau du compte.

Note

Si vous avez déjà accès au flux de connexion avec identificateur d’abord, vous devez migrer votre compte du paramètre de compte SAML_IDENTITY_PROVIDER non pris en charge via la fonction SYSTEM$MIGRATE_SAML_IDP_REGISTRATION.

Cas d’utilisation

La liste suivante décrit des cas d’utilisation non exhaustifs des politiques d’authentification :

  • Vous souhaitez contrôler les flux de connexion utilisateur lorsqu’il existe plusieurs options de connexion.

  • Vous souhaitez contrôler les méthodes d’authentification, des types de clients spécifiques et les intégrations de sécurité disponibles pour certains utilisateurs ou pour tous les utilisateurs.

  • Vous avez des clients qui basent des services sur Snowflake en utilisant des pilotes Snowflake, mais ces clients ne veulent pas que leurs utilisateurs accèdent à Snowflake via Snowsight ou Classic Console.

  • Vous souhaitez proposer plusieurs fournisseurs d’identité comme options d’authentification à des utilisateurs spécifiques.

Limitations

La propriété CLIENT_TYPES d’une politique d’authentification est une méthode optimale pour bloquer les connexions d’utilisateurs en fonction de clients spécifiques. Elle ne doit pas être utilisée comme seul contrôle pour établir une limite de sécurité.

Considérations

  • Assurez-vous que les méthodes d’authentification et les intégrations de sécurité répertoriées dans vos politiques d’authentification ne sont pas en conflit. Par exemple, si vous ajoutez une intégration de sécurité SAML2 à la liste des intégrations de sécurité autorisées et que vous n’autorisez que OAuth comme méthode d’authentification autorisée, vous ne pouvez pas créer de politique d’authentification.

  • Utilisez une politique d’authentification non restrictive supplémentaire pour les administrateurs au cas où des utilisateurs se retrouvent bloqués. Pour un exemple, voir Prévention d’un blocage.

Ordre de priorité des politiques de sécurité

Lorsque plusieurs types de politiques de sécurité sont activés, il existe un ordre de priorité entre les politiques. Par exemple, les politiques réseau sont prioritaires sur les politiques d’authentification, de sorte que si l’adresse IP d’une requête correspond à une adresse IP figurant dans la liste bloquée de la politique réseau, la politique d’authentification n’est pas vérifiée et l’évaluation s’arrête à la politique réseau.

La liste suivante décrit l’ordre dans lequel les politiques de sécurité sont évaluées :

  1. Politiques réseau : autoriser ou refuser des adresses IP, IDs VPC et IDs VPCE.

  2. Stratégies d’authentification : autoriser ou refuser des clients, des méthodes d’authentification et des intégrations de sécurité.

  3. Politiques de mot de passe (pour l’authentification locale uniquement) : spécifier les conditions en matière de mot de passe telles que le nombre de caractères, les caractères, l’âge du mot de passe, le nombre de nouvelles tentatives et le délai de verrouillage.

  4. Politiques de session : exiger des utilisateurs qu’ils s’authentifient de nouveau après une période d’inactivité.

Si une politique est affectée à la fois au compte et à l’utilisateur qui s’authentifie, la politique au niveau de l’utilisateur est appliquée.

Combinaison de la connexion avec identificateur d’abord et de politiques d’authentification

Par défaut, Snowsight ou Classic Console fournit une expérience de connexion générique qui offre plusieurs options de connexion, que ces options soient pertinentes ou non pour les utilisateurs. Cela signifie que l’authentification est tentée, que l’option de connexion soit valide ou non pour l’utilisateur.

Vous pouvez modifier ce comportement afin d’activer un flux de connexion avec identificateur d’abord pour Snowsight ou Classic Console. Dans ce flux, Snowflake demande à l’utilisateur une adresse e-mail ou un nom d’utilisateur avant de lui présenter des options d’authentification. Snowflake utilise l’adresse e-mail ou le nom d’utilisateur pour identifier l’utilisateur, puis n’affiche que les options de connexion pertinentes pour l’utilisateur et autorisées par la politique d’authentification définie pour le compte ou l’utilisateur.

Pour obtenir des instructions sur l’activation du flux de connexion avec identificateur d’abord, voir Connexion avec identificateur d’abord.

Le tableau suivant fournit un exemple de configuration montrant comment combiner la connexion avec identificateur d’abord et des politiques d’authentification pour contrôler l’expérience de connexion de l’utilisateur.

Configuration

Résultat

Le paramètre AUTHENTICATION_METHODS de la politique d’authentification ne contient que PASSWORD.

Snowflake demande à l’utilisateur une adresse e-mail ou un nom d’utilisateur, ainsi qu’un mot de passe.

Le paramètre AUTHENTICATION_METHODS de la politique d’authentification ne contient que SAML, et une intégration de sécurité SAML2 est active.

Snowflake redirige l’utilisateur vers la page de connexion du fournisseur d’identité si l’adresse e-mail ou le nom d’utilisateur ne correspond qu’à une seule intégration de sécurité SAML2.

Le paramètre AUTHENTICATION_METHODS de la politique d’authentification contient à la fois PASSWORD et SAML, et une intégration de sécurité SAML2 est active.

Snowflake affiche un bouton SAML SSO si l’adresse e-mail ou le nom d’utilisateur ne correspond qu’à une seule intégration de sécurité SAML2, et la possibilité de se connecter avec une adresse e-mail ou un nom d’utilisateur, ainsi qu’un mot de passe.

Le paramètre AUTHENTICATION_METHODS de la politique d’authentification ne contient que SAML, et plusieurs intégrations de sécurité SAML2 sont actives.

Snowflake affiche plusieurs boutons SAML SSO si l’adresse e-mail ou le nom d’utilisateur correspond à plusieurs intégrations de sécurité SAML2.

Le paramètre AUTHENTICATION_METHODS de la politique d’authentification contient à la fois PASSWORD et SAML, et plusieurs intégrations de sécurité SAML2 sont actives.

Snowflake affiche plusieurs boutons SAML SSO si l’adresse e-mail ou le nom d’utilisateur correspond à plusieurs intégrations de sécurité SAML2, ainsi que la possibilité de se connecter avec une adresse e-mail ou un nom d’utilisateur, ainsi qu’un mot de passe.

Création d’une politique d’authentification

Un administrateur peut utiliser la commande CREATE AUTHENTICATION POLICY pour créer une nouvelle politique d’authentification, en spécifiant quels clients peuvent se connecter à Snowflake, quelles méthodes d’authentification peuvent être utilisées et quelles intégrations de sécurité sont disponibles pour les utilisateurs. Par défaut, tous les types de clients, méthodes d’authentification et intégrations de sécurité peuvent être utilisés pour se connecter à Snowflake. See client type limitations in authentication policies.

Par exemple, vous pouvez utiliser les commandes suivantes pour créer un rôle policy_admin personnalisé et une politique d’authentification qui n’autorise que l’authentification via Snowsight ou Classic Console, ne permettant à un compte ou à un utilisateur de s’authentifier que via OAuth ou un mot de passe :

USE ROLE ACCOUNTADMIN;

CREATE OR REPLACE DATABASE my_database;
USE DATABASE my_database;

CREATE OR REPLACE SCHEMA my_schema;
USE SCHEMA my_schema;

CREATE ROLE policy_admin;

GRANT USAGE ON DATABASE my_database TO ROLE policy_admin;
GRANT USAGE ON SCHEMA my_database.my_schema TO ROLE policy_admin;
GRANT CREATE AUTHENTICATION POLICY ON SCHEMA my_database.my_schema TO ROLE policy_admin;
GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE policy_admin;

USE ROLE policy_admin;

CREATE AUTHENTICATION POLICY my_example_authentication_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  AUTHENTICATION_METHODS = ('OAUTH', 'PASSWORD');
Copy

Pour des exemples détaillés, voir Exemples de configurations de connexion.

Définition d’une politique d’authentification sur un compte ou un utilisateur

Lorsque vous définissez une politique d’authentification sur un compte ou un utilisateur, les restrictions spécifiées dans la politique d’authentification s’appliquent au compte ou à l’utilisateur. Vous pouvez utiliser la commande ALTER ACCOUNT ou ALTER USER pour définir une politique d’authentification sur un compte ou un utilisateur.

Dans une feuille de calcul Snowsight, utilisez l’une des commandes suivantes pour définir une politique d’authentification sur un compte ou un utilisateur :

ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy
ALTER USER example_user SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy

Seul un administrateur de sécurité (un utilisateur titulaire du rôle SECURITYADMIN) ou seuls des utilisateurs titulaires d’un rôle avec le privilège APPLY AUTHENTICATION POLICY peuvent définir des politiques d’authentification sur des comptes ou des utilisateurs. Pour accorder ce privilège à un rôle afin que les utilisateurs puissent définir une politique d’authentification sur un compte ou un utilisateur, exécutez l’une des commandes suivantes :

GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE my_policy_admin
Copy
GRANT APPLY AUTHENTICATION POLICY ON USER TO ROLE my_policy_admin
Copy

Pour des exemples détaillés, voir Exemples de configurations de connexion.

Suivi de l’utilisation des politiques d’authentification

Utilisez la fonction de table Information Schema POLICY_REFERENCES pour renvoyer une ligne pour chaque utilisateur affecté à la politique d’authentification spécifiée et une ligne pour la politique d’authentification affectée au compte Snowflake.

La syntaxe suivante est prise en charge pour les politiques d’authentification :

POLICY_REFERENCES( POLICY_NAME => '<authentication_policy_name>' )
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'USER', REF_ENTITY_NAME => '<username>')
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'ACCOUNT', REF_ENTITY_NAME => '<accountname>')
Copy

authentication_policy_name est le nom entièrement qualifié de la politique d’authentification.

Par exemple, exécutez la requête suivante pour renvoyer une ligne pour chaque utilisateur auquel est affectée la politique d’authentification nommée authentication_policy_prod_1, qui est stockée dans la base de données nommée my_db et le schéma nommé my_schema :

SELECT *
FROM TABLE(
    my_db.INFORMATION_SCHEMA.POLICY_REFERENCES(
      POLICY_NAME => 'my_db.my_schema.authentication_policy_prod_1'
  )
);
Copy

Prévention d’un blocage

Dans les cas où la politique d’authentification régissant un compte est stricte, vous pouvez créer une politique d’authentification non restrictive qu’un administrateur pourra utiliser comme option de récupération en cas de blocage causé par une intégration de sécurité. Par exemple, vous pouvez inclure la méthode d’authentification PASSWORD pour l’administrateur uniquement. La politique d’authentification au niveau de l’utilisateur prévaut sur la politique plus restrictive au niveau du compte.

CREATE AUTHENTICATION POLICY admin_authentication_policy
  AUTHENTICATION_METHODS = ('SAML', 'PASSWORD')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL', 'DRIVERS')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION');
Copy

Vous pouvez ensuite affecter cette politique à un administrateur :

ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
Copy

Réplication de politiques d’authentification

Vous pouvez répliquer les stratégies d’authentification à l’aide de groupes de basculement et de réplication. Pour plus de détails, voir Politiques de réplication et de sécurité.

Exemples de configurations de connexion

Cette section fournit des exemples montrant comment utiliser et combiner des politiques d’authentification et des intégrations de sécurité SAML2 pour contrôler le flux et la sécurité des connexions.

Restriction de l’accès des utilisateurs à Snowflake par type de client

See client type limitations in authentication policies.

Créez une politique d’authentification nommée restrict_client_type_policy qui n’autorise l’accès que via Snowsight ou Classic Console :

CREATE AUTHENTICATION POLICY restrict_client_type_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  COMMENT = 'Only allows access through the web interface';
Copy

Définissez la politique d’authentification sur un utilisateur :

ALTER USER example_user SET AUTHENTICATION POLICY restrict_client_type_policy;
Copy

Autoriser l’authentification de plusieurs fournisseurs d’identité sur un compte

Créez une intégration de sécurité SAML2 qui permet aux utilisateurs de se connecter via SAML en utilisant Okta comme IdP :

CREATE SECURITY INTEGRATION example_okta_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://okta.example.com';
  ...
Copy

Créez une intégration de sécurité qui permet aux utilisateurs de se connecter via SAML en utilisant Microsoft Azure comme IdP :

CREATE SECURITY INTEGRATION example_azure_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://azure-example_acme.com';
  ...
Copy

Créez une politique d’authentification associée aux intégrations example_okta_integration et example_azure_integration :

CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
  AUTHENTICATION_METHODS = ('SAML')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_AZURE_INTEGRATION');
Copy

Définissez la politique d’authentification sur un compte :

ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
Copy

Privilèges et commandes

Référence aux privilèges des politique d’authentification

Snowflake prend en charge les privilèges de politique d’authentification suivants pour déterminer si les utilisateurs peuvent créer, définir et posséder des politiques d’authentification.

Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.

Privilège

Utilisation

CREATE

Permet de créer une nouvelle politique d’authentification dans un schéma.

APPLY AUTHENTICATION POLICY

Permet d’appliquer une politique d’authentification au niveau du compte ou de l’utilisateur.

OWNERSHIP

Donne un contrôle total sur la politique d’authentification. Nécessaire pour modifier la plupart des propriétés d’une politique d’authentification.

Référence DDL de la politique d’authentification

Pour des informations détaillées sur les privilèges et les commandes des politiques d’authentification, voir la documentation de référence suivante :

Commande

Privilège

Description

CREATE AUTHENTICATION POLICY

CREATE AUTHENTICATION POLICY sur SCHEMA

Crée une nouvelle politique d’authentification.

ALTER AUTHENTICATION POLICY

OWNERSHIP sur AUTHENTICATION POLICY

Modifie une politique d’authentification existante.

DROP AUTHENTICATION POLICY

OWNERSHIP sur AUTHENTICATION POLICY

Supprime une politique d’authentification existante du système.

DESCRIBE AUTHENTICATION POLICY

OWNERSHIP sur AUTHENTICATION POLICY

Décrit les propriétés d’une politique d’authentification existante.

SHOW AUTHENTICATION POLICIES

OWNERSHIP sur AUTHENTICATION POLICY ou USAGE sur SCHEMA

Répertorie toutes les politiques d’authentification du système.