Authentifizierungsrichtlinien¶
Authentifizierungsrichtlinien geben Ihnen Kontrolle darüber, wie sich ein Client oder Benutzer authentifiziert, indem Sie Folgendes angeben können:
Ob Benutzer sich für die mehrstufige Authentifizierung (MFA) registrieren müssen.
Welche Authentifizierungsmethoden erfordern eine mehrstufige Authentifizierung?
Die zulässigen Authentifizierungsmethoden, wie SAML, Kennwörter, OAuth, Schlüsselpaar-Authentifizierung und programmatische Zugriffstoken.
Die SAML2-Sicherheitsintegrationen, die Benutzern bei der Anmeldung zur Verfügung stehen. Wenn es beispielsweise mehrere Sicherheitsintegrationen gibt, können Sie angeben, welcher Identitätsanbieter (IdP) ausgewählt und für die Authentifizierung verwendet werden kann.
Wenn Sie Authentifizierungsrichtlinien verwenden, um zu steuern, welchen IdP ein Benutzer zur Authentifizierung verwenden kann, können Sie diese Steuerelement mithilfe der Eigenschaften
ALLOWED_USER_DOMAINSundALLOWED_EMAIL_PATTERNSder mit den IdPs verbundenen SAML2-Sicherheitsintegrationen weiter verfeinern. Weitere Details dazu finden Sie unter Verwenden mehrerer Identitätsanbieter für die Verbundauthentifizierung.The clients that users can use to connect to Snowflake, such as Snowsight, Snowflake CLI, drivers, or SnowSQL (CLI-Client). 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..By defining a „client policy“ within an authentication policy, you can also set the minimum version that is allowed for specific client types.
Die Standard- und maximalen Ablaufzeiten und die Netzwerkrichtlinienanforderungen für programmatische Zugriffstoken.
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_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..
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:
Netzwerkrichtlinien: IP-Adressen, VPC-IDs und VPCE-IDs zulassen oder ablehnen.
Authentifizierungsrichtlinien: Clients, Authentifizierungsmethoden und Sicherheitsintegrationen zulassen oder ablehnen.
Kennwortrichtlinien (nur für lokale Authentifizierung): Kennwortanforderungen wie Zeichenlänge, Zeichen, Kennwortalter, Wiederholungen und Sperrzeit angeben.
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');
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;
ALTER USER example_user SET AUTHENTICATION POLICY my_example_authentication_policy;
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;
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;
GRANT APPLY AUTHENTICATION POLICY ON USER example_user TO ROLE my_policy_admin;
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'
);
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'
);
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;
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>' )
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'USER', REF_ENTITY_NAME => '<username>')
POLICY_REFERENCES( REF_ENTITY_DOMAIN => 'ACCOUNT', REF_ENTITY_NAME => '<accountname>')
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'
)
);
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');
Sie können diese Richtlinie dann einem Administrator zuweisen:
ALTER USER <administrator_name> SET AUTHENTICATION POLICY admin_authentication_policy
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';
Legen Sie die Authentifizierungsrichtlinie für einen Benutzer fest:
ALTER USER example_user SET AUTHENTICATION POLICY restrict_client_type_policy;
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';
...
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';
...
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');
Legen Sie die Authentifizierungsrichtlinie für ein Konto fest:
ALTER ACCOUNT SET AUTHENTICATION POLICY multiple_idps_authentication_policy;
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 für SCHEMA |
Erstellt eine neue Authentifizierungsrichtlinie. |
|
OWNERSHIP für AUTHENTICATION POLICY |
Ändert eine vorhandene Authentifizierungsrichtlinie. |
|
OWNERSHIP für AUTHENTICATION POLICY |
Entfernt eine vorhandene Authentifizierungsrichtlinie aus dem System. |
|
OWNERSHIP für AUTHENTICATION POLICY |
Beschreibt die Eigenschaften einer bestehenden Authentifizierungsrichtlinie. |
|
OWNERSHIP für AUTHENTICATION POLICY oder USAGE für SCHEMA |
Listet alle Authentifizierungsrichtlinien im System auf. |