ALTER AUTHENTICATION POLICY¶
Ändert die Eigenschaften einer Authentifizierungsrichtlinie.
- Siehe auch:
CREATE AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES
Syntax¶
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 ]
Parameter¶
nameGibt den Bezeichner für die zu ändernde Authentifizierungsrichtlinie an.
Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.
Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.
RENAME TO ...Gibt einen neuen Namen für eine vorhandene Authentifizierungsrichtlinie an.
SET ...Gibt eine oder mehrere Eigenschaften an, die für die Authentifizierungsrichtlinie festgelegt werden sollen (getrennt durch Leerzeichen, Kommas oder Neue-Zeile-Zeichen).
AUTHENTICATION_METHODS = ( 'string_literal' [ , 'string_literal' , ... ] )Ändert die Authentifizierungsmethoden, die bei der Anmeldung erlaubt sind. Dieser Parameter kann einen oder mehrere der folgenden Werte annehmen:
Vorsicht
Eine Einschränkung mittels Authentifizierungsmethode kann unbeabsichtigte Folgen haben, z. B. ein Blockieren von Treiberverbindungen oder von Drittanbieter-Integrationen.
ALLAlle Authentifizierungsmethoden sind zugelassen.
SAMLErlaubt SAML2-Sicherheitsintegrationen. Wenn
SAMLvorhanden ist, wird eine SSO-Anmeldeoption angezeigt. WennSAMLnicht vorhanden ist, wird auch keine SSO-Anmeldeoption angezeigt.PASSWORDErmöglicht Benutzern die Authentifizierung mit Benutzername und Kennwort.
OAUTHErlaubt External OAuth.
KEYPAIRErlaubt Schlüsselpaar-Authentifizierung.
PROGRAMMATIC_ACCESS_TOKENErmöglicht Benutzern die Authentifizierung mit einem programmatischen Zugriffstoken.
WORKLOAD_IDENTITYErmöglicht Benutzern die Authentifizierung über Workload Identity Federation.
Standard:
ALL.CLIENT_TYPES = ( 'string_literal' [ , 'string_literal' , ... ] )Ändert, welche Clients sich mit Snowflake authentifizieren können.
Wenn ein Client versucht, eine Verbindung herzustellen, und der Client nicht einen der unten aufgeführten gültigen
CLIENT_TYPES-Werte hat, schlägt die Anmeldung fehl.Wenn Sie
MFA_ENROLLMENTaufREQUIREDsetzen, müssen SieSNOWFLAKE_UIin die ListeCLIENT_TYPESaufnehmen, damit sich Benutzer für die MFA registrieren können.Wenn Sie
SNOWFLAKE_UIvon der ListeCLIENT_TYPESausschließen möchten, müssen SieMFA_ENROLLMENTaufOPTIONALsetzen.The
CLIENT_TYPESproperty 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.Diese Eigenschaft kann einen oder mehrere der folgenden Werte annehmen:
ALLAllen Clients wird erlaubt, sich zu authentifizieren.
SNOWFLAKE_UISnowsight oder Classic Console, die Snowflake-Weboberfläche.
Vorsicht
If
SNOWFLAKE_UIis not included in theCLIENT_TYPESlist whileMFA_ENROLLMENTis set toREQUIRED, orMFA_ENROLLMENTis unspecified, MFA enrollment doesn’t work.DRIVERSTreiber ermöglichen den Zugriff auf Snowflake aus Anwendungen, die in unterstützten Sprachen geschrieben wurden. Beispielsweise Go-, JDBC- und .NET-Treiber sowie Snowpipe Streaming.
Vorsicht
Wenn
DRIVERSnicht in derCLIENT_TYPES-Liste enthalten ist, funktioniert die automatische Erfassung möglicherweise nicht.SNOWFLAKE_CLIEin Befehlszeilenclient für die Verbindung mit Snowflake und für die Verwaltung von entwicklerzentrierten Workloads und SQL Operationen.
SNOWSQLEin Befehlszeilenclient zur Verbindung mit Snowflake.
Wenn ein Client versucht, eine Verbindung herzustellen, und der Client nicht zu den gültigen
CLIENT_TYPES-Werten gehört, schlägt der Anmeldeversuch fehl. WennCLIENT_TYPESnicht gesetzt ist, kann jeder Client eine Verbindung herstellen.Standard:
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 containsDRIVERS, 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 containDRIVERS, 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_typeOne 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' , ... ] )Ändert die Sicherheitsintegrationen, mit denen die Authentifizierung verbunden ist. Dieser Parameter hat keine Auswirkungen, wenn
SAMLoderOAUTHnicht in derAUTHENTICATION_METHODS-Liste enthalten sind.Alle Werte in der Liste
SECURITY_INTEGRATIONSmüssen mit den Werten in der ListeAUTHENTICATION_METHODSkompatibel sein. Wenn beispielweiseSECURITY_INTEGRATIONSeine SAML-Sicherheitsintegration enthält undAUTHENTICATION_METHODSenthältOAUTH, können Sie die Authentifizierungsrichtlinie nicht erstellen.ALLAlle Sicherheitsintegrationen sind erlaubt.
Standard:
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_TYPESparameter must includeSNOWFLAKE_UI, because Snowsight is the only place users can enroll in multi-factor authentication (MFA).REQUIREDHuman users who are using password or single-sign on (SSO) authentication must enroll in MFA.
REQUIRED_PASSWORD_ONLYAll 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.
ALLBenutzer können einen Passkey, eine Authentifikator-App oder Duo als zweiten Faktor für die Authentifizierung verwenden.
PASSKEYBenutzer können einen Passkey als zweiten Authentifizierungsfaktor verwenden.
TOTPBenutzer können eine Authentifikator-App als zweiten Faktor für die Authentifizierung verwenden.
OTPUser can use a one-time passcode as their second factor of authentication. For more information, see Einrichten von Administratoren für den Zugang zu Break Glass.
DUOBenutzer können Duo als ihren zweiten Faktor für die Authentifizierung verwenden.
Standard:
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 )Legt die Richtlinien für programmatische Zugriffstoken fest. Setzen Sie dies auf eine durch Leerzeichen getrennte Liste mit einer oder mehreren der folgenden Eigenschaften und Werte:
DEFAULT_EXPIRY_IN_DAYS = number_of_daysGibt die Standardablaufzeit (in Tagen) für ein programmgesteuertes Zugriffstoken an. Sie können einen Wert von 1 bis zur maximalen Ablaufzeit angeben (die Sie durch Einstellen von MAX_EXPIRY_IN_DAYS festlegen können).
Die Standard-Ablaufzeit beträgt 15 Tage.
Weitere Informationen dazu finden Sie unter Festlegen der Standardablaufzeit.
MAX_EXPIRY_IN_DAYS = number_of_daysGibt die maximale Anzahl von Tagen an, die für die Ablaufzeit eines programmgesteuerten Zugriffstokens festgelegt werden können. Sie können einen Wert zwischen der Standard-Ablaufzeit (die Sie durch Setzen von DEFAULT_EXPIRY_IN_DAYS festlegen können) und 365 angeben.
Die maximale Ablaufzeit beträgt standardmäßig 365 Tage.
Bemerkung
Wenn es bereits programmatische Zugriffstoken mit Ablaufzeiten gibt, die die neue maximale Ablaufzeit überschreiten, schlägt der Versuch, sich mit diesen Token zu authentifizieren, fehl.
Nehmen wir zum Beispiel an, dass Sie ein programmatisches Zugriffstoken mit dem Namen
my_tokenund einer Gültigkeitsdauer von 7 Tagen erstellen. Wenn Sie später die maximale Ablaufzeit für alle Token auf 2 Tage ändern, schlägt die Authentifizierung mitmy_tokenfehl, weil die Ablaufzeit des Tokens die neue maximale Ablaufzeit überschreitet.Weitere Informationen dazu finden Sie unter Festlegen der maximalen Ablaufzeit.
NETWORK_POLICY_EVALUATION = { ENFORCED_REQUIRED | ENFORCED_NOT_REQUIRED | NOT_ENFORCED }Legt fest, wie die Anforderungen der Netzwerkrichtlinie für programmatische Zugriffstoken behandelt werden.
Standardmäßig muss ein Benutzer einer Netzwerkrichtlinie mit einer oder mehreren Netzwerkregeln unterliegen, um programmatische Zugriffstoken zu erzeugen oder zu verwenden:
Dienstbenutzer (mit TYPE=SERVICE) müssen einer Netzwerkrichtlinie unterliegen, um programmatische Zugriffstoken zu erstellen und zu verwenden.
Menschliche Benutzer (mit TYPE=PERSON) müssen einer Netzwerkrichtlinie unterliegen, um programmatische Zugriffstoken zu verwenden.
Um diese Verhaltensweise außer Kraft zu setzen, setzen Sie diese Eigenschaft auf einen der folgenden Werte:
ENFORCED_REQUIRED(Standard-Verhaltensweise)Der Benutzer muss einer Netzwerkrichtlinie unterliegen, um programmatische Zugriffstoken zu erstellen und zu verwenden.
Wenn der Benutzer einer Netzwerkrichtlinie unterliegt, wird die Netzwerkrichtlinie während der Authentifizierung durchgesetzt.
ENFORCED_NOT_REQUIREDDer Benutzer muss nicht einer Netzwerkrichtlinie unterliegen, um programmatische Zugriffstoken zu erstellen und zu verwenden.
Wenn der Benutzer einer Netzwerkrichtlinie unterliegt, wird die Netzwerkrichtlinie während der Authentifizierung durchgesetzt.
NOT_ENFORCEDDer Benutzer muss nicht einer Netzwerkrichtlinie unterliegen, um programmatische Zugriffstoken zu erstellen und zu verwenden.
Wenn der Benutzer einer Netzwerkrichtlinie unterliegt, wird die Netzwerkrichtlinie nicht während der Authentifizierung durchgesetzt.
Beispiel:
PAT_POLICY=( DEFAULT_EXPIRY_IN_DAYS=30 MAX_EXPIRY_IN_DAYS=365 NETWORK_POLICY_EVALUATION = ENFORCED_NOT_REQUIRED );
WORKLOAD_IDENTITY_POLICY = ( list_of_properties )Gibt die Richtlinien an für Workload Identity Federation. Setzen Sie dies auf eine durch Leerzeichen getrennte Liste, die eine oder mehrere der folgenden Eigenschaften und Werte enthält:
ALLOWED_PROVIDERS = ( { ALL | AWS | AZURE | GCP | OIDC } [ , { AWS | AZURE | GCP | OIDC } ... ] )Gibt die Workload-Identitätsanbieter an, die von der Authentifizierungsrichtlinie bei der Workload-Identitätsauthentifizierung zugelassen werden. Wenn dieser Parameter weggelassen wird, sind alle Workload-Identitätsanbieter erlaubt.
ALLBenutzer können sich bei jedem unterstützten und konfigurierten Workload-Identitätsanbieter authentifizieren.
AWSBenutzer können sich mit einer AWS IAM Rolle oder Benutzer authentifizieren.
AZUREBenutzer können sich mit einem Azure Entra ID-Zugriffstoken authentifizieren.
GCPBenutzer können sich mit einer von Google signierten ID-Token authentifizieren.
OIDCBenutzer können sich mit einer ID-Token von einem konfigurierten OIDC-Anbieter authentifizieren.
ALLOWED_AWS_ACCOUNTS = ( 'string_literal' [ , 'string_literal' , ... ] )Gibt die Liste der AWS Konto IDs an, die von der Authentifizierungsrichtlinie bei der Authentifizierung der Workload-Identität vom Typ
AWSzugelassen werden.Standardmäßig, wenn ein Snowflake-Dienstbenutzer eine
WORKLOAD_IDENTITYvom Typ `AWS`hat, dann kann ARN auf jedes AWS-Konto verweisen. Wenn dieser Parameter gesetzt ist, dann dürfen sich nur ARNs von den angegebenen AWS-Konto IDs authentifizieren.Jedes Element muss eine 12-stellige Zeichenfolge sein, die die AWS Konto ID darstellt.
Weitere Informationen dazu finden Sie unter Ansicht AWS-Kontobezeichner
ALLOWED_AZURE_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )Gibt die Liste von Azure Entra ID-Ausstellern an, die von der Authentifizierungsrichtlinie bei der Authentifizierung der Workload-Identität vom Typ
AZUREzugelassen werden.Standardmäßig, wenn ein Snowflake-Dienstbenutzer eine
WORKLOAD_IDENTITYvom TypAZUREhat, dann kann der Aussteller ein beliebiger Entra ID Mandant sein. Wenn dieser Parameter gesetzt ist, dürfen sich nur Azure-Token der angegebenen Aussteller authentifizieren.Jedes Element muss eine gültige -Autorisierungs-URL mit folgendem Format sein:
https://login.microsoftonline.com/tenantId/v2.0
ALLOWED_OIDC_ISSUERS = ( 'string_literal' [ , 'string_literal' , ... ] )Gibt die Liste der OIDC-Aussteller an, die von der Authentifizierungsrichtlinie bei der Authentifizierung der Workload-Identität vom Typ
OIDCzugelassen werden.Standardmäßig, wenn ein Snowflake-Dienstbenutzer eine
WORKLOAD_IDENTITYvom Typ `OIDC`hat, dann kann der Aussteller ein beliebiger gültiger OIDC-Aussteller sein. Wenn dieser Parameter gesetzt ist, dann dürfen sich nur Token von den angegebenen OIDC-Ausstellern authentifizieren.Jedes Element muss eine gültige HTTPS URL sein, die Schema-, Host- und optional Portnummer- und Pfadkomponenten, aber keine Abfrage- oder Fragmentkomponenten enthalten. Das URL darf keine Leerzeichen enthalten und darf 2.048 Zeichen nicht überschreiten.
Beispiel:
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') );
COMMENT = 'string_literal'Ändert den Kommentar für die Authentifizierungsrichtlinie.
UNSET ...Gibt die Eigenschaften an, die für Authentifizierungsrichtlinie deaktiviert werden sollen, wodurch sie auf die Standardwerte zurückgesetzt werden.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
|---|---|---|
OWNERSHIP |
Authentifizierungsrichtlinie |
Only the SECURITYADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed. |
USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen. Beachten Sie, dass eine Rolle, die eine beliebige Berechtigung für ein Schema erhalten hat, es dieser Rolle erlaubt, das Schema aufzulösen. Zum Beispiel kann eine Rolle, der die CREATE-Berechtigung für ein Schema gewährt wurde, Objekte in diesem Schema erstellen, ohne auch USAGE für dieses Schema gewährt bekommen zu haben.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Wenn Sie eine bestehende Authentifizierungsrichtlinie aktualisieren möchten und dazu die aktuelle Definition der Richtlinie anzeigen müssen, können Sie den Befehl DESCRIBE AUTHENTICATION POLICY oder die Funktion GET_DDL ausführen.
Beispiele¶
Ändern der Liste der zulässigen Clients in einer Authentifizierungsrichtlinie:
ALTER AUTHENTICATION POLICY restrict_client_types_policy
SET CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWSQL');