CREATE AUTHENTICATION POLICY¶
Crée une nouvelle politique d’authentification dans le schéma actuel ou spécifié ou remplace une politique d’authentification existante. Vous pouvez utiliser des politiques d’authentification pour définir des contrôles d’authentification et des exigences de sécurité pour les comptes ou les utilisateurs.
Cette commande prend en charge les variantes suivantes :
CREATE OR ALTER AUTHENTICATION POLICY : crée une politique d’authentification si elle n’existe pas, ou modifie une politique d’authentification existante.
- Voir aussi :
ALTER AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES, CREATE OR ALTER <objet>
Syntaxe¶
CREATE [ OR REPLACE ] AUTHENTICATION POLICY [ IF NOT EXISTS ] <name>
[ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
[ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ PAT_POLICY = ( {list_of_properties} ) ]
[ COMMENT = '<string_literal>' ]
Syntaxe des variantes¶
CREATE OR ALTER AUTHENTICATION POLICY¶
Crée une nouvelle politique d’authentification si elle n’existe pas encore, ou modifie une politique d’authentification existante pour la rendre conforme à celle définie dans l’instruction. Une instruction CREATE OR ALTER AUTHENTICATIONPOLICY suit les règles syntaxiques d’une instruction CREATE AUTHENTICATIONPOLICY et présente les mêmes limitations qu’une instruction ALTER AUTHENTICATION POLICY.
CREATE OR ALTER AUTHENTICATION POLICY <name>
[ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ MFA_ENROLLMENT = { REQUIRED | OPTIONAL } ]
[ MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) ) ]
[ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ... ] ) ]
[ PAT_POLICY = ( {list_of_properties} ) ]
[ COMMENT = '<string_literal>' ]
Paramètres requis¶
name
Spécifie l”identificateur d’une politique d’authentification.
De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple,
"My object"
). Les identificateurs entre guillemets doubles sont également sensibles à la casse.Pour plus d’informations, voir Exigences relatives à l’identificateur.
Paramètres facultatifs¶
AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )
Prudence
La restriction par méthode d’authentification peut avoir des conséquences inattendues, telles que le blocage des connexions de pilotes ou des intégrations de tiers.
Liste des méthodes d’authentification autorisées lors de la connexion. Ce paramètre accepte une ou plusieurs des valeurs suivantes :
ALL
Autorise toutes les méthodes d’authentification.
SAML
Permet des intégrations de sécurité SAML2. Si
SAML
est présent, une option de connexion SSO apparaît. SiSAML
n’est pas présent, l’option de connexion SSO n’apparaît pas.PASSWORD
Permet aux utilisateurs de s’authentifier à l’aide d’un nom d’utilisateur et d’un mot de passe.
OAUTH
Autorise External OAuth.
KEYPAIR
PROGRAMMATIC_ACCESS_TOKEN
Permet aux utilisateurs de s’authentifier à l’aide d’un jeton d’accès programmatique.
Par défaut :
ALL
.
MFA_AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )
Une liste de méthodes d’authentification qui appliquent l’authentification multifactorielle (MFA) lors de la connexion. Les méthodes d’authentification non répertoriées dans ce paramètre ne demandent pas d’authentification multifactorielle.
Les méthodes d’authentification suivantes prennent en charge la MFA :
SAML
PASSWORD
Ce paramètre accepte une ou plusieurs des valeurs suivantes :
SAML
Invite les utilisateurs à la MFA, s’ils sont inscrits à la MFA, lors de l’authentification avec les intégrations de sécurité SAML2.
PASSWORD
Invite les utilisateurs à la MFA, s’ils sont inscrits à la MFA, lors de l’authentification avec un nom d’utilisateur et un mot de passe.
Par défaut :
('PASSWORD')
.MFA_ENROLLMENT = { REQUIRED | OPTIONAL }
Détermine si un utilisateur doit s’inscrire à l’authentification multifactorielle.
REQUIRED
Oblige les utilisateurs à s’inscrire à la MFA. Si cette valeur est utilisée, alors le paramètre
CLIENT_TYPES
doit inclureSNOWFLAKE_UI
, parce que Snowsight est le seul endroit où les utilisateurs peuvent s’inscrire à l’authentification multifactorielle (MFA).OPTIONAL
Les utilisateurs peuvent choisir de s’inscrire ou non à la MFA.
Par défaut :
REQUIRED
.MFA_POLICY= ( ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'DUO' } ... ] ) )
Spécifie les méthodes d’authentification multifactorielle (MFA) que les utilisateurs peuvent utiliser comme deuxième facteur d’authentification. Vous pouvez spécifier plusieurs méthodes.
ALL
Les utilisateurs peuvent utiliser une clé d’accès, une application d’authentificateur ou Duo comme deuxième facteur d’authentification.
PASSKEY
Les utilisateurs peuvent utiliser une clé de sécurité comme deuxième facteur d’authentification.
TOTP
Les utilisateurs peuvent utiliser une application d’authentificateur comme deuxième facteur d’authentification.
DUO
Les utilisateurs peuvent utiliser Duo comme deuxième facteur d’authentification.
Par défaut :
ALL
.CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )
Liste des clients qui peuvent s’authentifier auprès de Snowflake.
Si un client tente de se connecter et qu’il ne correspond pas à l’une des valeurs valides de
CLIENT_TYPES
énumérées ci-dessous, la tentative de connexion échoue.Si vous avez défini
MFA_ENROLLMENT
surREQUIRED
, vous devez inclureSNOWFLAKE_UI
dans la listeCLIENT_TYPES
pour permettre aux utilisateurs de s’inscrire à MFA.Si vous souhaitez exclure
SNOWFLAKE_UI
de la listeCLIENT_TYPES
, vous devez définirMFA_ENROLLMENT
surOPTIONAL
.The
CLIENT_TYPES
property of an authentication policy is a best effort method to block user logins based on specific clients. It should not be used as the sole control to establish a security boundary.Ce paramètre accepte une ou plusieurs des valeurs suivantes :
ALL
Autorise tous les clients à s’authentifier.
SNOWFLAKE_UI
Snowsight ou Classic Console, les interfaces Web de Snowflake.
Prudence
If
SNOWFLAKE_UI
is not included in theCLIENT_TYPES
list whileMFA_ENROLLMENT
is set toREQUIRED
, orMFA_ENROLLMENT
is unspecified, MFA enrollment doesn’t work.DRIVERS
Les pilotes permettent d’accéder à Snowflake à partir d’applications écrites dans des langages pris en charge. Par exemple, les pilotes Go, JDBC, .NET et Snowpipe Streaming.
Prudence
Si
DRIVERS
n’est pas inclus dans la listeCLIENT_TYPES
, l’ingestion automatisée peut cesser de fonctionner.SNOWFLAKE_CLI
Un client de ligne de commande pour se connecter à Snowflake et pour gérer des charges de travail centrées sur les développeurs et des opérations SQL.
SNOWSQL
Un client de ligne de commande pour se connecter à Snowflake.
Par défaut :
ALL
.SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )
Liste des intégrations de sécurité auxquelles la politique d’authentification est associée. Ce paramètre n’a aucun effet lorsque
SAML
ouOAUTH
ne figurent pas dans la listeAUTHENTICATION_METHODS
.Toutes les valeurs de la liste
SECURITY_INTEGRATIONS
doivent être compatibles avec les valeurs de la listeAUTHENTICATION_METHODS
. Par exemple, siSECURITY_INTEGRATIONS
contient une intégration de sécurité SAML et queAUTHENTICATION_METHODS
contientOAUTH
, vous ne pouvez pas créer la politique d’authentification.ALL
Affiche toutes les intégrations de sécurité.
Par défaut :
ALL
.
PAT_POLICY = ( list_of_properties )
Spécifie les politiques pour les jetons d’accès programmatiques. Cet ensemble correspond à une liste délimitée par des espaces d’une ou plusieurs des propriétés et valeurs suivantes :
DEFAULT_EXPIRY_IN_DAYS = number_of_days
Spécifie le délai d’expiration par défaut (en jours) d’un jeton d’accès programmatique. Vous pouvez spécifier une valeur comprise entre 1 et la durée maximale (que vous pouvez spécifier en définissant MAX_EXPIRY_IN_DAYS).
Le délai d’expiration par défaut est de 15 jours.
Pour plus d’informations, voir Définition du délai d’expiration par défaut.
MAX_EXPIRY_IN_DAYS = number_of_days
Spécifie le nombre maximal de jours pouvant être paramétré pour le délai d’expiration d’un jeton d’accès programmatique. Vous pouvez spécifier une valeur comprise entre 1 et 365.
Le délai d’expiration maximal par défaut est de 365 jours.
Note
S’il existe des jetons d’accès programmatique dont le délai d’expiration dépasse le nouveau délai d’expiration maximal, les tentatives d’authentification avec ces jetons échoueront.
Par exemple, supposons que vous génériez un jeton d’accès programmatique nommé
my_token
avec un délai d’expiration de 7 jours. Si vous modifiez ultérieurement le délai d’expiration maximal de tous les jetons pour le porter à 2 jours, l’authentification avecmy_token
échouera car le délai d’expiration du jeton dépasse le nouveau délai d’expiration maximal.Pour plus d’informations, voir Définition du délai d’expiration maximal.
NETWORK_POLICY_EVALUATION = { ENFORCED_REQUIRED | ENFORCED_NOT_REQUIRED | NOT_ENFORCED }
Spécifie comment les exigences de la politique réseau sont traitées pour les jetons d’accès programmatiques.
Par défaut, un utilisateur doit être soumis à une politique réseau avec une ou plusieurs règles réseau pour générer ou utiliser des jetons d’accès programmatiques :
Les utilisateurs de services (avec TYPE=SERVICE) doivent être soumis à une politique réseau pour générer et utiliser des jetons d’accès programmatiques.
Les utilisateurs humains (avec TYPE=PERSON) doivent être soumis à une politique réseau leur permettant d’utiliser des jetons d’accès programmatiques.
Pour annuler ce comportement, donnez à cette propriété l’une des valeurs suivantes :
ENFORCED_REQUIRED
(comportement par défaut)L’utilisateur doit être soumis à une politique réseau pour générer et utiliser des jetons d’accès programmatiques.
Si l’utilisateur est soumis à une politique réseau, celle-ci est appliquée lors de l’authentification.
ENFORCED_NOT_REQUIRED
L’utilisateur ne doit pas être soumis à une politique réseau pour générer et utiliser des jetons d’accès programmatiques.
Si l’utilisateur est soumis à une politique réseau, celle-ci est appliquée lors de l’authentification.
NOT_ENFORCED
L’utilisateur ne doit pas être soumis à une politique réseau pour générer et utiliser des jetons d’accès programmatiques.
Si l’utilisateur est soumis à une politique réseau, celle-ci n’est pas appliquée lors de l’authentification.
Par exemple :
PAT_POLICY=( DEFAULT_EXPIRY_IN_DAYS=30 MAX_EXPIRY_IN_DAYS=365 NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED );
COMMENT = 'string_literal'
Spécifie une description de la politique.
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :
Privilège |
Objet |
Remarques |
---|---|---|
CREATE AUTHENTICATION POLICY |
Schéma |
|
OWNERSHIP |
Politique d’authentification |
|
Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma.
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
Notes sur l’utilisation¶
Après avoir créé une politique d’authentification, vous devez utiliser la commande ALTER ACCOUNT ou ALTER USER pour la définir sur un compte ou un utilisateur avant que Snowflake n’applique la politique.
Si vous souhaitez mettre à jour une politique d’authentification existante et que vous avez besoin de voir la définition de la politique, exécutez la commande DESCRIBE AUTHENTICATION POLICY ou la fonction GET_DDL.
Les clauses
OR REPLACE
etIF NOT EXISTS
s’excluent mutuellement. Elles ne peuvent pas être utilisées dans la même instruction.Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.
Exemple¶
Créez une politique d’authentification nommée restrict_client_types_policy
qui n’autorise l’accès que via Snowsight ou Classic Console :
CREATE AUTHENTICATION POLICY restrict_client_types_policy
CLIENT_TYPES = ('SNOWFLAKE_UI')
COMMENT = 'Auth policy that only allows access through the web interface';
Paramétrez l’authentification multifactorielle et mettez à jour la liste des clients :
CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
MFA_ENROLLMENT = REQUIRED
MFA_AUTHENTICATION_METHODS = ('PASSWORD', 'SAML')
CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');
Pour plus d’exemples, voir Politiques d’authentification.