ALTER AUTHENTICATION POLICY

Modifie les propriétés d’une politique d’authentification.

Voir aussi :

CREATE AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES

Syntaxe

ALTER AUTHENTICATION POLICY <name> RENAME TO <new_name>

ALTER AUTHENTICATION POLICY [ IF EXISTS ] <name> SET
  [ AUTHENTICATION_METHODS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ CLIENT_TYPES = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ CLIENT_POLICY = ( <client_type> = ( MINIMUM_VERSION = '<version>' ) [ , ... ] ) ]
  [ SECURITY_INTEGRATIONS = ( '<string_literal>' [ , '<string_literal>' , ...  ] ) ]
  [ MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' } ]
  [ MFA_POLICY= ( <list_of_properties> ) ]
  [ PAT_POLICY = ( <list_of_properties> ) ]
  [ WORKLOAD_IDENTITY_POLICY = ( <list_of_properties> ) ]
  [ COMMENT = '<string_literal>' ]

ALTER AUTHENTICATION POLICY [ IF EXISTS ] <name> UNSET
  [ AUTHENTICATION_METHODS ]
  [ SECURITY_INTEGRATIONS ]
  [ MFA_ENROLLMENT ]
  [ MFA_POLICY ]
  [ CLIENT_TYPES ]
  [ CLIENT_POLICY ]
  [ SECURITY_INTEGRATIONS ]
  [ PAT_POLICY ]
  [ WORKLOAD_IDENTITY_POLICY ]
  [ COMMENT ]
Copy

Paramètres

name

Spécifie l’identificateur de la politique d’authentification à modifier.

Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

RENAME TO ...

Spécifie un nouveau nom pour une politique d’authentification existante.

SET ...

Spécifie une ou plusieurs propriétés à définir pour la politique d’authentification, séparées par des espaces, des virgules ou de nouvelles lignes.

AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )

Modifie les méthodes d’authentification autorisées lors de la connexion. Ce paramètre accepte une ou plusieurs des valeurs suivantes :

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.

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. Si SAML 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

Permet l’authentification par paire de clés.

PROGRAMMATIC_ACCESS_TOKEN

Permet aux utilisateurs de s’authentifier à l’aide d’un jeton d’accès programmatique.

WORKLOAD_IDENTITY

Permet aux utilisateurs de s’authentifier via la fédération d’identités de charge de travail.

Par défaut : ALL.

CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )

Modifie les 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 sur REQUIRED, vous devez inclure SNOWFLAKE_UI dans la liste CLIENT_TYPES pour permettre aux utilisateurs de s’inscrire à MFA.

Si vous souhaitez exclure SNOWFLAKE_UI de la liste CLIENT_TYPES, vous devez définir MFA_ENROLLMENT sur OPTIONAL.

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. Notably, it does not restrict access to the Snowflake REST APIs.

Cette propriété 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 the CLIENT_TYPES list while MFA_ENROLLMENT is set to REQUIRED, or MFA_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 liste CLIENT_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.

Si un client tente de se connecter et qu’il ne fait pas partie des CLIENT_TYPES valides, la tentative de connexion échoue. Si CLIENT_TYPES n’est pas défini, n’importe quel client peut se connecter.

Par défaut : ALL.

CLIENT_POLICY = client_type = ( MINIMUM_VERSION = 'version' )

Specifies a policy within the authentication policy that sets the minimum version allowed for each specified client type.

If CLIENT_TYPES is empty, contains ALL, or contains DRIVERS, the CLIENT_POLICY parameter accepts one or more of the following driver clients (and a specific version string). For any driver client that is not specified, the policy implicitly allows any version of that client.

If CLIENT_TYPES contains another value, such as SNOWFLAKE_CLI, and does not also contain DRIVERS, specifying any of the following client types results in an error. You can’t create (or alter) an authentication policy such that the CLIENT_TYPES and CLIENT_POLICY parameters aren’t compatible.

client_type

One or more valid client type values. This is a different set of values from those that the CLIENT_TYPES parameter accepts. Do not use single quotes for these values.

  • JDBC_DRIVER (Snowflake JDBC Driver)

  • ODBC_DRIVER (Snowflake ODBC Driver)

  • PYTHON_DRIVER (Snowflake Python Driver)

  • JAVASCRIPT_DRIVER (Snowflake Javascript Driver)

  • C_DRIVER (Libsnowflakeclient C Driver)

  • GO_DRIVER (Snowflake Go Driver)

  • PHP_DRIVER (Snowflake PHP PDO Driver)

  • DOTNET_DRIVER (Snowflake .NET Driver)

  • SQL_API (SQL API)

  • SNOWPIPE_STREAMING_CLIENT_SDK (Snowpipe Streaming Client SDK)

  • PY_CORE (Snowflake Python Core Driver)

  • SPROC_PYTHON (Snowflake Python Stored Procedure)

  • PYTHON_SNOWPARK (Snowflake Python Snowpark Driver)

  • SQL_ALCHEMY (Snowflake SQLAlchemy)

  • SNOWPARK (Snowpark)

  • SNOWFLAKE_CLIENT (Snowflake Client SDK)

'version'

The minimum accepted version for each specified client type: a sequence of three digits delimited by periods and enclosed by single quotation marks. For example: '1.0.0' or '3.14.1'. Authentication attempts with lower client versions are blocked when this policy is in effect for an account or a user.

The CLIENT_POLICY property of an authentication policy is a best-effort method to block user logins based on specific client versions. It should not be used as the sole control to establish a security boundary.

SECURITY_INTEGRATIONS = ( 'string_literal' [ , 'string_literal' , ... ] )

Modifie les intégrations de sécurité auxquelles la politique d’authentification est associée. Ce paramètre n’a aucun effet lorsque SAML ou OAUTH ne figurent pas dans la liste AUTHENTICATION_METHODS.

Toutes les valeurs de la liste SECURITY_INTEGRATIONS doivent être compatibles avec les valeurs de la liste AUTHENTICATION_METHODS. Par exemple, si SECURITY_INTEGRATIONS contient une intégration de sécurité SAML et que AUTHENTICATION_METHODS contient OAUTH, vous ne pouvez pas créer la politique d’authentification.

ALL

Affiche toutes les intégrations de sécurité.

Par défaut : ALL.

MFA_ENROLLMENT = { 'REQUIRED' | 'REQUIRED_PASSWORD_ONLY' }

Determines whether a user must enroll in multi-factor authentication. If this value is used, then the CLIENT_TYPES parameter must include SNOWFLAKE_UI, because Snowsight is the only place users can enroll in multi-factor authentication (MFA).

REQUIRED

Human users who are using password or single-sign on (SSO) authentication must enroll in MFA.

REQUIRED_PASSWORD_ONLY

All human users who are using password authentication must enroll in MFA, regardless of the client they are using. Users using SSO authentication are not required to enroll.

MFA_POLICY= ( list_of_properties )

Specifies the policies that affect how multi-factor authentication (MFA) is enforced. Set this to a space-delimited list of one or more of the following properties and values:

ALLOWED_METHODS = ( { 'ALL' | 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } [ , { 'PASSKEY' | 'TOTP' | 'OTP' | 'DUO' } ... ] )

Specifies the multi-factor authentication (MFA) methods that users can use as a second factor of authentication. You can specify more than one method as a comma-delimited list.

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.

OTP

User can use a one-time passcode as their second factor of authentication. For more information, see Configuration des administrateurs pour l’accès d’urgence.

DUO

Les utilisateurs peuvent utiliser Duo comme deuxième facteur d’authentification.

Par défaut : ALL.

ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = { 'ALL' | 'NONE' }

Specifies whether multi-factor authentication (MFA) is required when users authenticate with single sign-on (SSO). To require MFA, specify ALL.

Default: NONE

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 à partir de 1 pour le délai d’expiration maximal (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 définis pour le délai d’expiration d’un jeton d’accès programmatique. Vous pouvez spécifier une valeur à partir du délai d’expiration par défaut (que vous pouvez spécifier en définissant DEFAULT_EXPIRY_IN_DAYS) sur 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 avec my_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
);
Copy
WORKLOAD_IDENTITY_POLICY = ( list_of_properties )

Spécifie les politiques pour la fédération d’identité de charge de travail. Définissez une liste délimitée par des espaces contenant une ou plusieurs des propriétés et valeurs suivantes :

ALLOWED_PROVIDERS = ( { ALL | AWS | AZURE | GCP | OIDC } [ , { AWS | AZURE | GCP | OIDC } ... ] )

Spécifie les fournisseurs d’identité de charge de travail autorisés par la politique d’authentification lors de l’authentification de l’identité de charge de travail. Si ce paramètre est omis, tous les fournisseurs d’identité de charge de travail sont autorisés.

ALL

Les utilisateurs peuvent s’authentifier auprès de n’importe quel fournisseur d’identité de charge de travail pris en charge et configuré.

AWS

Les utilisateurs peuvent s’authentifier avec un rôle ou utilisateur AWS IAM.

AZURE

Les utilisateurs peuvent s’authentifier avec un jeton d’accès Azure Entra ID.

GCP

Les utilisateurs peuvent s’authentifier avec un jeton ID signé Google.

OIDC

Les utilisateurs peuvent s’authentifier avec un jeton ID provenant d’un fournisseur OIDC configuré.

ALLOWED_AWS_ACCOUNTS = ( 'string_literal' [ , 'string_literal' , ... ] )

Spécifie la liste des IDs de compte AWS autorisés par la politique d’authentification lors de l’authentification de l’identité de la charge de travail de type AWS.

Par défaut, lorsqu’un utilisateur de service Snowflake dispose d’une WORKLOAD_IDENTITY de type AWS, alors le ARN peut référencer n’importe quel compte AWS. Si ce paramètre est défini, alors seuls les ARNs des IDs du compte AWS spécifié sont autorisés à s’authentifier.

Chaque élément doit être une chaîne de 12 chiffres représentant l’ID de compte AWS.

Pour plus d’informations, voir les identificateurs de compte AWS.

ALLOWED_AZURE_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )

Spécifie la liste des émetteurs d’ID Azure Entra autorisés par la politique d’authentification lors de l’authentification de l’identité de la charge de travail de type AZURE.

Par défaut, lorsqu’un utilisateur de service Snowflake dispose d’une WORKLOAD_IDENTITY de type AZURE, l’émetteur peut être n’importe quel ID Entra du client. Si ce paramètre est défini, seuls les jetons Azure des émetteurs spécifiés sont autorisés à s’authentifier.

Chaque élément doit être une URL d’autorité valide au format suivant :

  • https://login.microsoftonline.com/tenantId/v2.0

ALLOWED_OIDC_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )

Spécifie la liste des émetteurs OIDC autorisés par la politique d’authentification lors de l’authentification de l’identité de la charge de travail de type OIDC.

Par défaut, lorsqu’un utilisateur de service Snowflake dispose d’une WORKLOAD_IDENTITY de type OIDC, l’émetteur peut être n’importe quel émetteur OIDC valide. Si ce paramètre est défini, alors seuls les jetons des émetteurs OIDC spécifiés sont autorisés à s’authentifier.

Chaque élément doit être une URL HTTPS valide qui contient les composants de schéma, d’hôte et, éventuellement, de numéro de port et de chemin, mais aucun composant de requête ou de fragment. L’URL ne doit pas contenir d’espaces et ne doit pas dépasser 2048 caractères.

Par exemple :

WORKLOAD_IDENTITY_POLICY=(
  ALLOWED_PROVIDERS = (AWS, AZURE, GCP, OIDC)
  ALLOWED_AWS_ACCOUNTS = ('123456789012', '210987654321')
  ALLOWED_AZURE_ISSUERS = ('https://login.microsoftonline.com/8c7832f5-de56-4d9f-ba94-3b2c361abe6b/v2.0',
    'https://login.microsoftonline.com/9ebd1ec9-9a78-4429-8f53-5cf870a812d1/v2.0')
  ALLOWED_OIDC_ISSUERS = ('https://my.custom.oidc.issuer/', 'https://another.custom/oidc/issuer')
);
Copy
COMMENT = 'string_literal'

Modifie le commentaire de la politique d’authentification.

UNSET ...

Spécifie les propriétés à désactiver pour la politique d’authentification, qui les réinitialise aux valeurs par défaut :

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

OWNERSHIP

Politique d’authentification

Only the SECURITYADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed.

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. Notez qu’un rôle doté d’un privilège quelconque sur un schéma permet à ce rôle de résoudre le schéma. Par exemple, un rôle doté du privilège CREATE sur un schéma peut créer des objets sur ce schéma sans également avoir le privilège USAGE attribué sur ce 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

  • 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.

Exemples

Modifier la liste des clients autorisés dans une politique d’authentification :

ALTER AUTHENTICATION POLICY restrict_client_types_policy
  SET CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL');
Copy