CREATE AUTHENTICATION POLICY

Erstellt eine neue Authentifizierungsrichtlinie im aktuellen oder angegebenen Schema oder ersetzt eine vorhandene Authentifizierungsrichtlinie. Sie können Authentifizierungsrichtlinien verwenden, um Authentifizierungskontrollen und Sicherheitsanforderungen für Konten oder Benutzer zu definieren.

Darüber hinaus unterstützt dieser Befehl die folgenden Varianten:

Siehe auch:

ALTER AUTHENTICATION POLICY, DESCRIBE AUTHENTICATION POLICY, DROP AUTHENTICATION POLICY, SHOW AUTHENTICATION POLICIES, CREATE OR ALTER <objekt>

Syntax

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>' ]
Copy

Syntaxvariante

CREATE OR ALTER AUTHENTICATION POLICY

Erstellt eine neue Authentifizierungsrichtlinie, wenn sie noch nicht existiert, oder ändert eine vorhandene Authentifizierungsrichtlinie in die in der Anweisung definierte. Eine CREATE OR ALTER AUTHENTICATIONPOLICY-Anweisung folgt den Syntaxregeln einer CREATEAUTHENTICATIONPOLICY-Anweisung und hat die gleichen Einschränkungen wie eine ALTER AUTHENTICATION POLICY-Anweisung.

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>' ]
Copy

Erforderliche Parameter

name

Gibt den Bezeichner der Authentifizierungsrichtlinie an.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

Optionale Parameter

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

Vorsicht

Eine Einschränkung mittels Authentifizierungsmethode kann unbeabsichtigte Folgen haben, z. B. ein Blockieren von Treiberverbindungen oder von Drittanbieter-Integrationen.

Eine Liste von Authentifizierungsmethoden, die bei der Anmeldung zulässig sind. Dieser Parameter kann einen oder mehrere der folgenden Werte annehmen:

ALL

Alle Authentifizierungsmethoden sind zugelassen.

SAML

Erlaubt SAML2-Sicherheitsintegrationen. Wenn SAML vorhanden ist, wird eine SSO-Anmeldeoption angezeigt. Wenn SAML nicht vorhanden ist, wird auch keine SSO-Anmeldeoption angezeigt.

PASSWORD

Ermöglicht Benutzern die Authentifizierung mit Benutzername und Kennwort.

OAUTH

Erlaubt External OAuth.

KEYPAIR

Erlaubt Schlüsselpaar-Authentifizierung.

PROGRAMMATIC_ACCESS_TOKEN

Ermöglicht Benutzern die Authentifizierung mit einem programmatischen Zugriffstoken.

Standard: ALL.

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

Eine Auflistung von Authentifizierungsmethoden, die eine mehrstufige Authentifizierung (MFA) während der Anmeldung erzwingen. Bei Authentifizierungsmethoden, die nicht in diesem Parameter aufgeführt sind, wird keine mehrstufige Authentifizierung verlangt.

Die folgenden Authentifizierungsmethoden unterstützen MFA:

  • SAML

  • PASSWORD

Dieser Parameter kann einen oder mehrere der folgenden Werte annehmen:

SAML

Fordert Benutzer zur MFA auf, wenn sie für MFA registriert sind und sich mit SAML2 Sicherheitsintegrationen authentifizieren.

PASSWORD

Fordert Benutzer zur MFA, wenn sie für MFA registriert sind und sich mit einem Benutzernamen und Kennwort authentifizieren.

Standard: ('PASSWORD').

MFA_ENROLLMENT = { REQUIRED | OPTIONAL }

Legt fest, ob sich ein Benutzer für die mehrstufige Authentifizierung registrieren muss.

REQUIRED

Erzwingt die Registrierung von Benutzer für MFA. Wenn dieser Wert verwendet wird, muss der Parameter CLIENT_TYPES SNOWFLAKE_UI enthalten, da Snowsight der einzige Ort ist, an dem sich Benutzer für die mehrstufige Authentifizierung (MFA) registrieren können.

OPTIONAL

Benutzer können wählen, ob sie sich für MFA registrieren möchten.

Standard: REQUIRED.

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

Gibt die Methoden der mehrstufigen Authentifizierung (MFA) an, die Benutzer als zweiten Faktor für die Authentifizierung verwenden können. Sie können mehr als eine Methode angeben.

ALL

Benutzer können einen Passkey, eine Authentifikator-App oder Duo als zweiten Faktor für die Authentifizierung verwenden.

PASSKEY

Benutzer können einen Passkey als zweiten Authentifizierungsfaktor verwenden.

TOTP

Benutzer können eine Authentifikator-App als zweiten Faktor für die Authentifizierung verwenden.

DUO

Benutzer können Duo als ihren zweiten Faktor für die Authentifizierung verwenden.

Standard: ALL.

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

Eine Liste von Clients, die sich bei 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_ENROLLMENT auf REQUIRED setzen, müssen Sie SNOWFLAKE_UI in die Liste CLIENT_TYPES aufnehmen, damit sich Benutzer für die MFA registrieren können.

Wenn Sie SNOWFLAKE_UI von der Liste CLIENT_TYPES ausschließen möchten, müssen Sie MFA_ENROLLMENT auf OPTIONAL setzen.

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.

Dieser Parameter kann einen oder mehrere der folgenden Werte annehmen:

ALL

Allen Clients wird erlaubt, sich zu authentifizieren.

SNOWFLAKE_UI

Snowsight oder Classic Console, die Snowflake-Weboberfläche.

Vorsicht

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

Treiber 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 DRIVERS nicht in der CLIENT_TYPES-Liste enthalten ist, funktioniert die automatische Erfassung möglicherweise nicht.

SNOWFLAKE_CLI

Ein Befehlszeilenclient für die Verbindung mit Snowflake und für die Verwaltung von entwicklerzentrierten Workloads und SQL Operationen.

SNOWSQL

Ein Befehlszeilenclient zur Verbindung mit Snowflake.

Standard: ALL.

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

Eine Liste von Sicherheitsintegrationen, mit denen die Authentifizierungsrichtlinie verknüpft ist. Dieser Parameter hat keine Auswirkungen, wenn SAML oder OAUTH nicht in der AUTHENTICATION_METHODS-Liste enthalten sind.

Alle Werte in der Liste SECURITY_INTEGRATIONS müssen mit den Werten in der Liste AUTHENTICATION_METHODS kompatibel sein. Wenn beispielweise SECURITY_INTEGRATIONS eine SAML-Sicherheitsintegration enthält und AUTHENTICATION_METHODS enthält OAUTH, können Sie die Authentifizierungsrichtlinie nicht erstellen.

ALL

Alle Sicherheitsintegrationen sind erlaubt.

Standard: ALL.

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_days

Gibt die standardmäßige Ablaufzeit (in Tagen) für ein programmatisches Zugriffstoken an. Sie können einen Wert von 1 bis zur maximalen Zeit angeben (die Sie durch die Einstellung MAX_EXPIRY_IN_DAYSfestlegen können).

Die Standard-Ablaufzeit beträgt 15 Tage.

Weitere Informationen dazu finden Sie unter Festlegen der Standardablaufzeit.

MAX_EXPIRY_IN_DAYS = number_of_days

Gibt die maximale Anzahl von Tagen an, die für die Ablaufzeit eines programmatischen Zugriffstokens festgelegt werden kann. Sie können einen Wert von 1 bis 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_token und 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 mit my_token fehl, 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_REQUIRED

Der 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_ENFORCED

Der 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
);
Copy
COMMENT = 'string_literal'

Gibt eine Beschreibung der Richtlinie an.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE AUTHENTICATION POLICY

Schema

OWNERSHIP

Authentifizierungsrichtlinie

  • Um ein temporäres Objekt zu erstellen, das denselben Namen hat wie das bereits im Schema vorhandene Objekt, muss der verwendeten Rolle die Berechtigung OWNERSHIP für das Objekt erteilt worden sein oder die Rolle muss diese Berechtigung geerbt haben.

  • Erforderlich zur Ausführung einer CREATE OR ALTER AUTHENTICATION POLICY-Anweisung für eine bestehende Authentifizierungsrichtlinie.

USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.

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

  • Nachdem Sie eine Authentifizierungsrichtlinie erstellt haben, müssen Sie diese mit dem Befehl ALTER ACCOUNT oder ALTER USER für ein Konto oder einen Benutzer festlegen, bevor Snowflake die Richtlinie durchsetzt.

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

  • Die OR REPLACE- und IF NOT EXISTS-Klauseln schließen sich gegenseitig aus. Sie können nicht beide in derselben Anweisung verwendet werden.

  • CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.

Beispiel

Erstellen Sie eine Authentifizierungsrichtlinie namens restrict_client_types_policy, die den Zugriff nur über Snowsight oder die klassische Konsole zulässt:

CREATE AUTHENTICATION POLICY restrict_client_types_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  COMMENT = 'Auth policy that only allows access through the web interface';
Copy

Stellen Sie die mehrstufige Authentifizierung ein und aktualisieren Sie die Liste der Clients:

CREATE OR ALTER AUTHENTICATION POLICY restrict_client_types_policy
  MFA_ENROLLMENT = REQUIRED
  MFA_AUTHENTICATION_METHODS = ('PASSWORD', 'SAML')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI');
Copy

Weitere Beispiele finden Sie unter Authentifizierungsrichtlinien.