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 :
Les clients que les utilisateurs peuvent utiliser pour se connecter à Snowflake, tels que Snowsight ou Classic Console, les pilotes ou SnowSQL (CLI client). Pour plus d’informations, voir Limitations.
Les méthodes d’authentification autorisées telles que SAML, les mots de passe, OAuth ou l”authentification par paire de clés.
Les intégrations de sécurité SAML2 qui sont à la disposition des utilisateurs lors de l’expérience de connexion. Par exemple, s’il existe plusieurs intégrations de sécurité, vous pouvez spécifier le fournisseur d’identité (IdP) qui peut être sélectionné et utilisé pour l’authentification.
Si vous utilisez des politiques d’authentification pour contrôler l’IdP qu’un utilisateur peut utiliser pour s’authentifier, vous pouvez affiner davantage ce contrôle en utilisant les propriétés
ALLOWED_USER_DOMAINS
etALLOWED_EMAIL_PATTERNS
des intégrations de sécurité SAML2 associées aux IdPs. Pour plus de détails, voir Utilisation de plusieurs fournisseurs d’identité pour l’authentification fédérée.
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 :
Politiques réseau : autoriser ou refuser des adresses IP, IDs VPC et IDs VPCE.
Stratégies d’authentification : autoriser ou refuser des clients, des méthodes d’authentification et des intégrations de sécurité.
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.
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');
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;
ALTER USER example_user SET AUTHENTICATION POLICY my_example_authentication_policy;
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
GRANT APPLY AUTHENTICATION POLICY ON USER TO ROLE my_policy_admin
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>' )
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'USER', REF_ENTITY_NAME => '<username>')
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'ACCOUNT', REF_ENTITY_NAME => '<accountname>')
Où 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'
)
);
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');
Vous pouvez ensuite affecter cette politique à un administrateur :
ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
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';
Définissez la politique d’authentification sur un utilisateur :
ALTER USER example_user SET AUTHENTICATION POLICY restrict_client_type_policy;
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';
...
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';
...
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');
Définissez la politique d’authentification sur un compte :
ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
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 sur SCHEMA |
Crée une nouvelle politique d’authentification. |
|
OWNERSHIP sur AUTHENTICATION POLICY |
Modifie une politique d’authentification existante. |
|
OWNERSHIP sur AUTHENTICATION POLICY |
Supprime une politique d’authentification existante du système. |
|
OWNERSHIP sur AUTHENTICATION POLICY |
Décrit les propriétés d’une politique d’authentification existante. |
|
OWNERSHIP sur AUTHENTICATION POLICY ou USAGE sur SCHEMA |
Répertorie toutes les politiques d’authentification du système. |