Authentifizierungsrichtlinien

Authentifizierungsrichtlinien geben Ihnen Kontrolle darüber, wie sich ein Client oder Benutzer authentifiziert, indem Sie Folgendes angeben können:

Sie können Authentifizierungsrichtlinien für das Konto oder die Benutzer des Kontos festlegen. Wenn Sie eine Authentifizierungsrichtlinie für das Konto festlegen, gilt die Authentifizierungsrichtlinie für alle Benutzer des Kontos. Wenn Sie eine Authentifizierungsrichtlinie sowohl für ein Konto als auch für einen Benutzer festlegen, dann hat die Authentifizierungsrichtlinie auf Benutzerebene Vorrang vor der Authentifizierungsrichtlinie auf Kontoebene.

Bemerkung

Wenn Sie bereits Zugriff auf den ID-First-Anmeldeablauf haben, müssen Sie Ihr Konto mit der SYSTEM$MIGRATE_SAML_IDP_REGISTRATION-Funktion vom nicht unterstützten SAML_IDENTITY_PROVIDER-Kontoparameter migrieren.

Anwendungsfälle

The following non-exhaustive list describes use cases for authentication policies:

  • Sie möchten steuern, ob ein Benutzer, alle Benutzer eines Kontos oder bestimmte Authentifizierungsmethoden MFA erfordern.

  • Sie möchten den Anmeldeablauf der Benutzeranmeldung steuern, wenn es mehrere Anmeldeoptionen gibt.

  • You want to control the authentication methods, specific client types, minimum versions of clients, and security integrations available to specific users or all users.

  • You have customers building services on top of Snowflake using Snowflake drivers, but the customers do not want their users accessing Snowflake through Snowsight.

  • Sie möchten mehrere Identitätsanbieter als Authentifizierungsoptionen für spezifische Benutzer anbieten.

Einschränkungen

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

Hinweise

  • Stellen Sie sicher, dass die in Ihren Authentifizierungsrichtlinien aufgeführten Authentifizierungsmethoden und Sicherheitsintegrationen nicht miteinander in Konflikt stehen. Wenn Sie zum Beispiel eine SAML2-Sicherheitsintegration in die Liste der zulässigen Sicherheitsintegrationen aufnehmen und nur OAuth als zulässige Authentifizierungsmethode aufnehmen, können Sie keine Authentifizierungsrichtlinie erstellen.

  • Verwenden Sie eine zusätzliche, nicht restriktive Authentifizierungsrichtlinie für Administratoren für den Fall, dass Benutzer gesperrt werden. Ein Beispiel dazu finden Sie unter Verhindern einer Sperrung.

Rangfolge bei Sicherheitsrichtlinien

Wenn mehrere Typen von Sicherheitsrichtlinien aktiviert sind, besteht zwischen den Richtlinien eine Rangfolge. So haben beispielsweise Netzwerkrichtlinien Vorrang vor Authentifizierungsrichtlinien. Wenn also die IP-Adresse einer Anforderung mit einer IP-Adresse in der Sperrliste der Netzwerkrichtlinie übereinstimmt, wird die Authentifizierungsrichtlinie nicht geprüft und die Auswertung stoppt bei der Netzwerkrichtlinie.

Die folgende Liste beschreibt die Reihenfolge, in der die Sicherheitsrichtlinien ausgewertet werden:

  1. Netzwerkrichtlinien: IP-Adressen, VPC-IDs und VPCE-IDs zulassen oder ablehnen.

  2. Authentifizierungsrichtlinien: Clients, Authentifizierungsmethoden und Sicherheitsintegrationen zulassen oder ablehnen.

  3. Kennwortrichtlinien (nur für lokale Authentifizierung): Kennwortanforderungen wie Zeichenlänge, Zeichen, Kennwortalter, Wiederholungen und Sperrzeit angeben.

  4. Sitzungsrichtlinien: Benutzer müssen sich nach einer gewissen Zeit der Inaktivität erneut authentifizieren.

Wenn eine Richtlinie sowohl dem Konto als auch dem authentifizierenden Benutzer zugewiesen ist, wird die Richtlinie auf Benutzerebene erzwungen.

Kombinieren von ID-First-Anmeldung und Authentifizierungsrichtlinien

By default, Snowsight provides a generic login experience that provides several options for logging in, regardless if the options are relevant to users. This means that authentication is attempted regardless of whether the login option is a valid option for the user.

You can alter this behavior to enable a identifier-first login flow for Snowsight. In this flow, Snowflake prompts the user for an email address or username before presenting authentication options. Snowflake uses the email address or username to identify the user, and then only displays the login options that are relevant to the user, and are allowed by the authentication policy set on the account or user.

Weitere Informationen zum ID-First-Anmeldeablauf finden Sie unter ID-First-Anmeldung.

In der folgenden Tabelle finden Sie eine Beispielkonfiguration, wie ID-First-Anmeldung und Authentifizierungsrichtlinien kombiniert werden können, um den Anmeldeablauf des Benutzers zu steuern.

Konfiguration

Ergebnis

Der Parameter AUTHENTICATION_METHODS der Authentifizierungsrichtlinie enthält nur PASSWORD.

Snowflake fordert den Benutzer zur Eingabe einer E-Mail-Adresse oder eines Benutzernamens und dann eines Kennworts auf.

Der Parameter AUTHENTICATION_METHODS der Authentifizierungsrichtlinie enthält nur SAML, und es gibt eine aktive SAML2-Sicherheitsintegration.

Snowflake leitet den Benutzer auf die Anmeldeseite des Identitätsanbieters um, wenn die E-Mail-Adresse oder der Benutzername nur mit genau einer SAML2-Sicherheitsintegration übereinstimmt.

Der Parameter AUTHENTICATION_METHODS der Authentifizierungsrichtlinie enthält sowohl PASSWORD als auch SAML, und es gibt eine aktive SAML2-Sicherheitsintegration.

Snowflake zeigt eine SAML-SSO-Schaltfläche an, wenn die E-Mail-Adresse oder der Benutzername nur mit genau einer SAML2-Sicherheitsintegration übereinstimmt, und außerdem die Option, sich mit einer E-Mail-Adresse oder einem Benutzernamen und dann mit einem Kennwort anzumelden.

Der Parameter AUTHENTICATION_METHODS der Authentifizierungsrichtlinie enthält nur SAML, und es gibt mehrere aktive SAML2-Sicherheitsintegrationen.

Snowflake zeigt mehrere SAML-SSO-Schaltflächen an, wenn die E-Mail-Adresse oder der Benutzername mit mehreren SAML2-Sicherheitsintegrationen übereinstimmt.

Der Parameter AUTHENTICATION_METHODS der Authentifizierungsrichtlinie enthält sowohl PASSWORD als auch SAML, und es gibt mehrere aktive SAML2-Sicherheitsintegrationen.

Snowflake zeigt mehrere SAML-SSO-Schaltflächen an, wenn die E-Mail-Adresse oder der Benutzername mit mehreren SAML2-Sicherheitsintegrationen übereinstimmt, und außerdem die Option, sich mit einer E-Mail-Adresse oder einem Benutzernamen und dann mit einem Kennwort anzumelden.

Erstellen einer Authentifizierungsrichtlinie

Ein Administrator kann mit dem Befehl CREATE AUTHENTICATION POLICY eine neue Authentifizierungsrichtlinie erstellen, in der festlegt wird, welche Clients eine Verbindung zu Snowflake herstellen können, welche Authentifizierungsmethoden verwendet werden können und welche Sicherheitsintegrationen für Benutzer verfügbar sind. Standardmäßig können alle Clienttypen, Authentifizierungsmethoden und Sicherheitsintegrationen für die Verbindung zu Snowflake verwendet werden. 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..

For example, the following commands create a custom policy_admin role and an authentication policy that allows authentication using Snowsight. The user must authenticate with SAML or a password.

Bemerkung

Um dieses Beispiel auszuführen, müssen Sie :samp: <username> im Befehl GRANT ROLE mit Ihrem Anmeldenamen ersetzen.

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;

GRANT ROLE policy_admin TO USER <username>;
USE ROLE policy_admin;

CREATE AUTHENTICATION POLICY my_example_authentication_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  AUTHENTICATION_METHODS = ('SAML', 'PASSWORD');
Copy

Ausführliche Beispiele finden Sie unter Beispielkonfiguration für die Anmeldung.

Festlegen einer Authentifizierungsrichtlinie für ein Konto oder einen Benutzer

Wenn Sie eine Authentifizierungsrichtlinie für ein Konto oder einen Benutzer festlegen, gelten die in der Authentifizierungsrichtlinie angegebenen Einschränkungen für das Konto oder den Benutzer. Sie können die Befehle ALTER ACCOUNT oder ALTER USER verwenden, um eine Authentifizierungsrichtlinie für ein Konto oder einen Benutzer festzulegen.

Verwenden Sie in einem Snowsight-Arbeitsblatt einen der folgenden Befehle, um eine Authentifizierungsrichtlinie für ein Konto oder einen Benutzer festzulegen:

ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy
ALTER USER example_user SET AUTHENTICATION POLICY my_example_authentication_policy;
Copy

Sie können auch eine Authentifizierungsrichtlinie für alle Benutzer eines bestimmten Typs festlegen. Im Beispiel wird eine Authentifizierungsrichtlinie für alle Benutzer des Typs SERVICE innerhalb des Kontos festgelegt, aber nicht für Benutzer des Typs PERSON. Führen Sie den folgenden Befehl aus:

ALTER ACCOUNT SET AUTHENTICATION POLICY my_example_authentication_policy
  FOR ALL SERVICE USERS;
Copy

Nur ein Sicherheitsadministrator (ein Benutzer mit der Rolle SECURITYADMIN) oder Benutzer mit einer Rolle mit der Berechtigung APPLY AUTHENTICATION POLICY können Authentifizierungsrichtlinien für Konten oder Benutzer festlegen. Um einer Rolle diese Berechtigung zuzuweisen, sodass Benutzer eine Authentifizierungsrichtlinie für ein Konto oder einen Benutzer festlegen können, führen Sie einen der folgenden Befehle aus:

GRANT APPLY AUTHENTICATION POLICY ON ACCOUNT TO ROLE my_policy_admin;
Copy
GRANT APPLY AUTHENTICATION POLICY ON USER example_user TO ROLE my_policy_admin;
Copy

Ausführliche Beispiele finden Sie unter Beispielkonfiguration für die Anmeldung.

Verstärkung der Benutzer- oder Kontoauthentifizierung durch MFA

Um die Sicherheit von Benutzeranmeldungen zu verbessern, können Sie eine Authentifizierungsrichtlinie erstellen, die von den Benutzern verlangt, dass sie sich unter bei MFA anmelden, und dann die Authentifizierungsrichtlinie auf einzelne Benutzer oder das Konto anwenden. Nachdem sich Benutzer für die MFA registriert haben, verlangt die Authentifizierungsrichtlinie, dass sich die Benutzer mit MFA authentifizieren.

Bemerkung

Snowflake is deprecating single-factor password logins. When the rollout is complete, all users who authenticate with a password must enroll in MFA.

Run the following command if you want to create an authentication policy that requires password users to authenticate with MFA when using any Snowflake client, not just Snowsight. Single sign-on (SSO) users won’t be required to use MFA.

CREATE AUTHENTICATION POLICY require_mfa_authentication_policy
  MFA_ENROLLMENT = 'REQUIRED'
  MFA_POLICY=  (
    ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = 'NONE'
  );
Copy

Run the following command if you want to create an authentication policy that requires password and single sign-on users to authenticate with MFA.

CREATE AUTHENTICATION POLICY require_mfa_authentication_policy
  MFA_ENROLLMENT = 'REQUIRED'
  MFA_POLICY=  (
    ENFORCE_MFA_ON_EXTERNAL_AUTHENTICATION = 'ALL'
  );
Copy

Um diese Authentifizierungsrichtlinie für alle Benutzer eines Kontos festzulegen, führen Sie die folgende SQL-Anweisung aus:

ALTER ACCOUNT SET AUTHENTICATION POLICY require_mfa_authentication_policy;
Copy

Bemerkung

If you set the MFA_ENROLLMENT parameter, then the CLIENT_TYPES parameter must include SNOWFLAKE_UI, because Snowsight is the only place users can enroll in multi-factor authentication (MFA).

Verfolgen der Nutzung von Authentifizierungsrichtlinien

Verwenden Sie die Information Schema-Tabellenfunktion POLICY_REFERENCES, um eine Zeile für jeden Benutzer zurückzugeben, der der angegebenen Authentifizierungsrichtlinie zugeordnet ist, und eine Zeile für die dem Snowflake-Konto zugeordnete Authentifizierungsrichtlinie.

Die folgende Syntax wird für Authentifizierungsrichtlinien unterstützt:

POLICY_REFERENCES( POLICY_NAME => '<authentication_policy_name>' )
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'USER', REF_ENTITY_NAME => '<username>')
Copy
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'ACCOUNT', REF_ENTITY_NAME => '<accountname>')
Copy

Wobei authentication_policy_name der vollqualifizierte Name der Authentifizierungsrichtlinie ist.

Führen Sie zum Beispiel die folgende Abfrage aus, um eine Zeile für jeden Benutzer zurückzugeben, dem die Authentifizierungsrichtlinie mit dem Namen authentication_policy_prod_1 zugewiesen ist, die in der Datenbank namens my_db und dem Schema namens my_schema gespeichert ist:

SELECT *
FROM TABLE(
  my_db.INFORMATION_SCHEMA.POLICY_REFERENCES(
  POLICY_NAME => 'my_db.my_schema.authentication_policy_prod_1'
  )
);
Copy

Verhindern einer Sperrung

In Situationen, in denen die Authentifizierungsrichtlinie für ein Konto streng ist, können Sie eine nicht restriktive Authentifizierungsrichtlinie erstellen, die ein Administrator als Wiederherstellungsoption im Falle einer durch eine Sicherheitsintegration verursachten Sperrung verwenden kann. Sie können zum Beispiel die Authentifizierungsmethode PASSWORD nur für den Administrator einschließen. Die Authentifizierungsrichtlinie auf Benutzerebene hat Vorrang vor der restriktiveren Richtlinie auf Kontoebene.

CREATE AUTHENTICATION POLICY admin_authentication_policy
  AUTHENTICATION_METHODS = ('SAML', 'PASSWORD')
  CLIENT_TYPES = ('SNOWFLAKE_UI', 'SNOWFLAKE_CLI', SNOWSQL', 'DRIVERS')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION');
Copy

Sie können diese Richtlinie dann einem Administrator zuweisen:

ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
Copy

Replikation von Authentifizierungsrichtlinien

Sie können Authentifizierungsrichtlinien unter Verwendung von Failover- und Replikationsgruppen replizieren. Weitere Details dazu finden Sie unter Replikation und Sicherheitsrichtlinien.

Beispielkonfiguration für die Anmeldung

Dieser Abschnitt enthält Beispiele dafür, wie Sie Authentifizierungsrichtlinien und SAML2-Sicherheitsintegrationen verwenden und kombinieren können, um den Anmeldeablauf und die Sicherheit zu kontrollieren.

Einschränken des Benutzerzugriffs auf Snowflake nach Clienttyp

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

Create an authentication policy named restrict_client_type_policy that only allows access through Snowsight:

CREATE AUTHENTICATION POLICY restrict_client_type_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  COMMENT = 'Only allows access through the web interface';
Copy

Legen Sie die Authentifizierungsrichtlinie für einen Benutzer fest:

ALTER USER example_user SET AUTHENTICATION POLICY restrict_client_type_policy;
Copy

Authentifizierung von mehreren Identitätsanbietern für ein Konto zulassen

Create a SAML2 security integration that allows users to log in through SAML using Okta as an IdP:

CREATE SECURITY INTEGRATION example_okta_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://okta.example.com';
  ...
Copy

Create a security integration that allows users to log in through SAML using Microsoft Entra ID as an IdP:

CREATE SECURITY INTEGRATION example_entra_integration
  TYPE = SAML2
  SAML2_SSO_URL = 'https://entra-example_acme.com';
  ...
Copy

Erstellen Sie eine Authentifizierungsrichtlinie, die mit den Integrationen example_okta_integration und example_entra_integration verbunden ist:

CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
  AUTHENTICATION_METHODS = ('SAML')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_ENTRA_INTEGRATION');
Copy

Legen Sie die Authentifizierungsrichtlinie für ein Konto fest:

ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
Copy

Berechtigungen und Befehle

Übersicht zu Berechtigungen für Authentifizierungsrichtlinien

Snowflake unterstützt die folgenden Berechtigungen für Authentifizierungsrichtlinien, um zu bestimmen, ob Benutzer Sitzungsrichtlinien erstellen, festlegen und besitzen können.

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.

Berechtigung

Objekt

Verwendung

CREATE

Schema

Ermöglicht das Erstellen einer neuen Authentifizierungsrichtlinie in einem Schema.

APPLY AUTHENTICATION POLICY

Konto

Ermöglicht das Anwenden einer Authentifizierungsrichtlinie auf Konto- oder Benutzerebene.

OWNERSHIP

Authentifizierungsrichtlinie

Ermöglicht die volle Kontrolle über die Authentifizierungsrichtlinie. Erforderlich, um die meisten Eigenschaften einer Authentifizierungsrichtlinie zu ändern.

Übersicht zur DDL für Authentifizierungsrichtlinien

Details zu den Berechtigungen und Befehlen für Authentifizierungsrichtlinien finden Sie in der folgenden Referenzdokumentation:

Befehl

Berechtigung

Beschreibung

CREATE AUTHENTICATION POLICY

CREATE AUTHENTICATION POLICY für SCHEMA

Erstellt eine neue Authentifizierungsrichtlinie.

ALTER AUTHENTICATION POLICY

OWNERSHIP für AUTHENTICATION POLICY

Ändert eine vorhandene Authentifizierungsrichtlinie.

DROP AUTHENTICATION POLICY

OWNERSHIP für AUTHENTICATION POLICY

Entfernt eine vorhandene Authentifizierungsrichtlinie aus dem System.

DESCRIBE AUTHENTICATION POLICY

OWNERSHIP für AUTHENTICATION POLICY

Beschreibt die Eigenschaften einer bestehenden Authentifizierungsrichtlinie.

SHOW AUTHENTICATION POLICIES

OWNERSHIP für AUTHENTICATION POLICY oder USAGE für SCHEMA

Listet alle Authentifizierungsrichtlinien im System auf.