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

Die folgende Liste beschreibt unvollständig mögliche Anwendungsfälle für Authentifizierungsrichtlinien:

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

  • Sie möchten die Authentifizierungsmethoden, bestimmte Clienttypen und Sicherheitsintegrationen steuern, die für bestimmte oder alle Benutzer verfügbar sind.

  • Sie haben Kunden, die mithilfe von Snowflake-Treibern Dienste auf Snowflake aufbauen, aber die Kunden möchten nicht, dass ihre Benutzer über Snowsight oder die klassische Konsole auf Snowflake zugreifen.

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

Einschränkungen

Die Eigenschaft CLIENT_TYPES einer Authentifizierungsrichtlinie ist eine Best-Effort-Methode, um Benutzeranmeldungen auf der Grundlage bestimmter Clients zu blockieren. Sie sollte nicht als einziges Steuerelement für das Einrichten einer Sicherheitsbarriere verwendet werden.

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

Standardmäßig bieten Snowsight oder klassische Konsole eine allgemeine Anmeldeoberfläche, die mehrere Optionen für die Anmeldung bietet, unabhängig davon, ob die Optionen für die Benutzer relevant sind. Dies bedeutet, dass die Authentifizierung unabhängig davon versucht wird, ob die Anmeldeoption eine gültige Option für den Benutzer ist.

Sie können dieses Verhalten ändern, um einen ID-First-Anmeldeablauf für Snowsight oder die klassische Konsole zu aktivieren. In diesem Ablauf fordert Snowflake den Benutzer zur Eingabe einer E-Mail-Adresse oder eines Benutzernamens auf, bevor die Authentifizierungsoptionen angezeigt werden. Snowflake verwendet die E-Mail-Adresse oder den Benutzernamen, um den Benutzer zu identifizieren, und zeigt dann nur die Anmeldeoptionen an, die für den Benutzer relevant sind und die gemäß der Authentifizierungsrichtlinie von Konto oder Benutzer zugelassen sind.

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. See client type limitations in authentication policies.

Mit den folgenden Befehlen können Sie beispielsweise eine benutzerdefinierte Rolle policy_admin und eine Authentifizierungsrichtlinie erstellen, die nur die Authentifizierung mit Snowsight oder der klassischen Konsole zulässt und die einem Konto oder Benutzer nur die Authentifizierung mit OAuth oder mit einem Kennwort erlaubt:

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;

USE ROLE policy_admin;

CREATE AUTHENTICATION POLICY my_example_authentication_policy
  CLIENT_TYPES = ('SNOWFLAKE_UI')
  AUTHENTICATION_METHODS = ('OAUTH', '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

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 TO ROLE my_policy_admin
Copy

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

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', '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

See client type limitations in authentication policies.

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

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

Erstellen Sie eine SAML2-Sicherheitsintegration, die es Benutzern ermöglicht, sich über SAML mit Okta als IdP anzumelden:

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

Erstellen Sie eine Sicherheitsintegration, die es Benutzern ermöglicht, sich über SAML mit Microsoft Azure als IdP anzumelden:

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

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

CREATE AUTHENTICATION POLICY multiple_idps_authentication_policy
  AUTHENTICATION_METHODS = ('SAML')
  SECURITY_INTEGRATIONS = ('EXAMPLE_OKTA_INTEGRATION', 'EXAMPLE_AZURE_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.

Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.

Berechtigung

Verwendung

CREATE

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

APPLY AUTHENTICATION POLICY

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

OWNERSHIP

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.