Mehrstufige Authentifizierung (MFA)

Die mehrstufige Authentifizierung (MFA) reduziert die mit der Authentifizierung von Kennwörtern verbundenen Sicherheitsrisiken. Wenn ein Benutzer mit Kennwort bei MFA angemeldet ist, muss er einen zweiten Authentifizierungsfaktor verwenden, wenn er sich bei Snowflake anmeldet. Diese Benutzer geben ihr Kennwort ein und verwenden dann den zweiten Faktor. Informationen darüber, wie ein Benutzer eine MFA-Methode hinzufügt, die er als zweiten Authentifizierungsfaktor verwenden kann, finden Sie unter Konfiguration eines zweiten Authentifizierungsfaktors.

MFA ist für menschliche Benutzer gedacht, die sich mit einem Kennwort authentifizieren. Benutzer von Diensten müssen eine andere Form der Authentifizierung verwenden. Weitere Informationen über diese Benutzertypen finden Sie unter Benutzertypen.

Wichtig

Um die Sicherheit aller Kunden zu verbessern, führt Snowflake Änderungen ein, die eine Anmeldung mit MFA für alle Kennwörter erfordern. Informationen zu diesem Rollout finden Sie unter Planung für die Abschaffung der Anmeldung mit Ein-Faktor-Kennwort.

MFA-Registrierung von Benutzern anfordern

Derzeit variieren die Strategien zur Implementierung von MFA für Ihr Unternehmen, je nachdem, ob ein Konto bereits vorhanden war, als das 2024_08 Verhaltensänderungs-Bundle aktiviert wurde oder nicht:

  • Wenn ein Konto bereits existierte, bevor das 2024_08-Bundle aktiviert wurde, müssen Sie Ihr Konto konfigurieren, wenn Sie von menschlichen Benutzern die Verwendung von MFA verlangen möchten. Informationen zur Implementierung von MFA, damit sich alle menschlichen Benutzer bei MFA anmelden müssen, finden Sie unter Verstärkung der Benutzer- oder Kontoauthentifizierung durch MFA.

  • Wenn das Konto erstellt wurde, nachdem das Bundle 2024_08 aktiviert wurde, müssen sich alle menschlichen Benutzer, die sich mit einem Kennwort authentifizieren, standardmäßig unter MFA anmelden. Diese MFA-Anforderung gilt nicht für Dienst-Benutzer.

    Wenn Sie die Anforderung, dass sich alle menschlichen Benutzer bei MFA anmelden müssen, deaktivieren möchten, erstellen Sie eine benutzerdefinierte Authentifizierungsrichtlinie mit MFA_ENROLLMENT=OPTIONAL und legen dann die Authentifizierungsrichtlinie für das Konto fest. Weitere Informationen zum Erstellen und Festlegen von Authentifizierungsrichtlinien finden Sie unter Authentifizierungsrichtlinien.

    Seien Sie sich bewusst, dass die Möglichkeit, sich von der obligatorischen MFA abzumelden, zeitlich begrenzt ist; siehe Planung für die Abschaffung der Anmeldung mit Ein-Faktor-Kennwort.

Einschränkung der verfügbaren MFA-Methoden

Wenn sich ein Benutzer bei MFA anmeldet, muss er eine MFA-Methode als zweiten Authentifizierungsfaktor verwenden. Snowflake erlaubt die folgenden MFA-Methoden:

  • Authentifizieren Sie sich mit einem Passkey, der auf verschiedene Weise gespeichert und abgerufen werden kann.

  • Authentifizierung mit einer Authentifikator-App, die eine zeitbasierte einmalige Kennung generiert (TOTP).

  • Authentifizieren Sie sich mit Duo.

Tipp

Wenn Sie entscheiden, welche MFA-Methoden Sie zulassen möchten, sollten Sie Folgendes bedenken:

  • Passkeys werden aufgrund ihrer Sicherheit und Benutzerfreundlichkeit empfohlen.

  • Duo wird nicht wie die anderen Methoden von MFA repliziert.

Als Administrator können Sie eine Authentifizierungsrichtlinie verwenden, um zu steuern, welche MFA-Methoden als zweiter Authentifizierungsfaktor verwendet werden können. Die folgende Authentifizierungsrichtlinie erlaubt es Benutzern beispielsweise, einen Passkey oder eine Authentifikator-App als zweiten Authentifizierungsfaktor zu verwenden, aber nicht Duo:

CREATE AUTHENTICATION POLICY require_mfa_policy
  MFA_AUTHENTICATION_METHODS = ('PASSWORD')
  MFA_ENROLLMENT = REQUIRED
  MFA_POLICY = (ALLOWED_METHODS = ('PASSKEY', 'TOTP'));
Copy

Wenn ein Benutzer zuvor eine MFA-Methode konfiguriert hat, die jetzt verboten ist, wird er bei der nächsten Anmeldung aufgefordert, sich mit der bereits vorhandenen Methode zu authentifizieren und dann eine neue, erlaubte Methode zu konfigurieren.

Weitere Informationen zum MFA_POLICY-Parameter finden Sie unter CREATE AUTHENTICATION POLICY.

Entfernen der MFA-Methoden eines Benutzers

Sie können eine MFA-Methode entfernen, die ein Benutzer zuvor hinzugefügt hat, sodass er sie nicht mehr als zweiten Authentifizierungsfaktor verwenden kann.

  1. Führen Sie den Befehl SHOW MFA METHODS aus und suchen Sie den Wert in der Spalte name. Wenn Sie z. B. eine MFA-Methode für einen Benutzer joe entfernen, führen Sie Folgendes aus und kopieren Sie den name der MFA-Methode aus der Ausgabe:

    SHOW MFA METHODS FOR USER joe;
    
    Copy
    +---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+
    |   name        |      type       |    comment             |     last_used                 |        created_on               |  additional_info    |
    +---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+
    | TOTP-48A7     |    TOTP         | Authenticator App 48A7 | 2025-02-26 11:14:38.000 -0800 |  2025-02-26 11:13:19.000 -0800  | null                |
    +---------------+-----------------+------------------------+-------------------------------+---------------------------------+---------------------+
    
  2. Führen Sie eine ALTER USER … REMOVE MFA METHOD-Anweisung aus, um die MFA-Methode zu entfernen:

    ALTER USER joe REMOVE MFA METHOD TOTP-48A7;
    
    Copy

Wiederherstellen eines gesperrten Benutzers

Wenn ein Benutzer mit einem Kennwort aus Snowflake gesperrt wird, weil er keinen Zugang zu einem zweiten Authentifizierungsfaktor hat, kann ein Administrator ihm helfen, die Möglichkeit zur Anmeldung wiederherzustellen, indem er MFA vorübergehend deaktiviert oder dem Benutzer hilft, eine neue MFA-Methode einzurichten.

Aufforderung an den Benutzer, eine neue MFA-Methode hinzuzufügen

Wenn ein Benutzer den Zugriff auf die MFA-Methode verliert, die er als zweiten Authentifizierungsfaktor verwendet (z. B. durch Verlust des YubiKey, auf dem der Passkey gespeichert ist), kann ein Administrator dem Benutzer helfen, eine neue MFA-Methode einzurichten, damit er sich bei Snowflake anmelden kann.

Wenn ein Benutzer keinen Zugriff auf seine MFA-Methode hat und eine neue Methode einrichten muss, führt der Administrator die Anweisung ALTER USER … ENROLL MFA aus. Wenn der Benutzer joe zum Beispiel eine neue MFA-Methode einrichten muss, kann der Administrator Folgendes ausführen:

ALTER USER joe ENROLL MFA;
Copy
  • Wenn der Benutzer über eine verifizierte E-Mail verfügt, sendet Snowflake eine E-Mail, in der er aufgefordert wird, eine MFA-Authentifizierungsmethode hinzuzufügen.

  • Wenn der Benutzer keine verifizierte E-Mail hat, gibt Snowflake die URL einer Seite zurück, die den Benutzer auffordert, eine MFA-Authentifizierungsmethode hinzuzufügen. Administratoren können diese URL an den gesperrten Benutzer senden.

MFA vorübergehend deaktivieren

Wenn ein Administrator MFA für einen Benutzer vorübergehend deaktivieren muss, kann er die Anweisung ALTER USER … SET MINS_TO_BYPASS_MFA ausführen. Um beispielsweise MFA vorübergehend zu deaktivieren, damit sich der Benutzer joe 30 Minuten lang mit einem Ein-Faktor-Kennwort authentifizieren kann, führen Sie Folgendes aus:

ALTER USER joe SET MINS_TO_BYPASS_MFA = 30;
Copy

Einrichten von Administratoren für den Zugang zu Break Glass

Break-Glass-Zugang bezieht sich auf die Möglichkeit, die normalen Authentifizierungsmethoden zu umgehen. Administratoren benötigen einen Break-Glass-Zugang zu Snowflake, wenn die normale Authentifizierung nicht mehr verfügbar ist, z. B. wenn der Identitätsanbieter eines Unternehmens ausfällt.

In vielen Fällen bieten Unternehmen den Zugang zu Break Glass an, indem sie einen speziellen Snowflake-Benutzer einrichten und dessen Kennwort in einem kryptografischen Tresor speichern. Wenn MFA erzwungen wird, muss jeder Administrator, der dieses Kennwort verwendet, über eine eigene MFA-Methode verfügen, die er als zweiten Authentifizierungsfaktor verwenden kann. In diesen Fällen empfiehlt Snowflake, dass jeder Administrator eine TOTP MFA-Methode einrichtet, damit er eine Authentifikator-App als zweiten Faktor verwenden kann. Wenn Sie bei der Konfiguration der MFA-Methode beschreibende Kommentare verwenden, können Sie zwischen den Administratoren unterscheiden.

Verbinden mit Snowflake mit MFA

MFA-Anmeldung ist in erster Linie für die Verbindung mit Snowflake über die Weboberfläche gedacht, wird aber auch von SnowSQL und den JDBC-, Node.js- und ODBC-Treibern von Snowflake vollständig unterstützt.

Verwenden von MFA-Tokencaching zur Minimierung der Anzahl von Eingabeaufforderungen bei der Authentifizierung – Optional

MFA-Token-Caching kann dazu beitragen, die Anzahl der Eingabeaufforderungen zu reduzieren, die während der Verbindung und Authentifizierung mit Snowflake bestätigt werden müssen, insbesondere wenn mehrere Verbindungsversuche innerhalb eines relativ kurzen Zeitintervalls erfolgen.

Ein zwischengespeicherter MFA-Token ist bis zu vier Stunden lang gültig.

Das zwischengespeicherte MFA-Token ist ungültig, wenn eine der folgenden Bedingungen erfüllt ist:

  1. Der Parameter ALLOW_CLIENT_MFA_CACHING ist für das Konto auf FALSE gesetzt.

  2. Die Methode der Authentifizierung ändert sich.

  3. Die Authentifizierungsdaten ändern sich (d. h. Benutzername und/oder Kennwort).

  4. Die Authentifizierungsdaten sind ungültig.

  5. Das zwischengespeicherte Token läuft ab oder ist kryptografisch ungültig.

  6. Der mit dem zwischengespeicherten Token verknüpfte Kontoname ändert sich.

Der Gesamtprozess, den Snowflake zum Zwischenspeichern von MFA-Token verwendet, ähnelt dem, der zum Zwischenspeichern von Verbindungstoken für die browserbasierte Single Sign-On-Verbundauthentifizierung verwendet wird. Die Clientanwendung speichert das MFA-Token im Keystore des clientseitigen Betriebssystems. Benutzer können das zwischengespeicherte MFA-Token jederzeit aus dem Keystore löschen.

Snowflake unterstützt MFA-Token-Caching mit den folgenden Treibern, Konnektoren und Tools unter macOS und Windows. Dieses Feature wird für Linux derzeit nicht unterstützt.

  • Snowflake CLI Version 3.0 (oder höher)

  • ODBC-Treiber, Version 2.23.0 (oder höher)

  • JDBC-Treiber, Version 3.12.16 (oder höher)

  • Python-Konnektor für Snowflake, Version 2.3.7 (oder höher).

Snowflake empfiehlt, sich vor der Aktivierung des MFA-Token-Cachings mit den internen Sicherheits- und Compliance-Beauftragten zu beraten.

Tipp

MFA-Token-Caching kann mit Verbindungscaching in der Single Sign-On-Verbundauthentifizierung kombiniert werden.

Um diese beiden Funktionen zu kombinieren, stellen Sie sicher, dass der Parameter ALLOW_ID_TOKEN zusammen mit dem Parameter ALLOW_CLIENT_MFA_CACHING auf true gesetzt ist.

Führen Sie die folgenden Schritte aus, um das MFA-Token-Caching zu aktivieren:

  1. Setzen Sie als Kontoadministrator (d. h. als Benutzer mit der Systemrolle ACCOUNTADMIN) mit dem Befehl ALTER ACCOUNT den Parameter ALLOW_CLIENT_MFA_CACHING für ein Konto auf true.

    ALTER ACCOUNT SET ALLOW_CLIENT_MFA_CACHING = TRUE;
    
    Copy
  2. Aktualisieren Sie in der Clientverbindungszeichenfolge den Authentifikatorwert auf authenticator = username_password_mfa.

  3. Fügen Sie das Paket oder die Bibliotheken hinzu, die der Treiber oder Konnektor benötigt:

    • Wenn Sie den Snowflake-Konnektor für Python verwenden, installieren Sie das optionale Schlüsselbundpaket, indem Sie Folgendes ausführen:

      pip install "snowflake-connector-python[secure-local-storage]"
      
      Copy

      Sie müssen die eckigen Klammern ([ und ]) wie im Befehl angegeben eingeben. Die eckigen Klammern geben den zusätzlichen Teil des Pakets an, der installiert werden soll.

      Schließen Sie den Namen des Pakets wie gezeigt in Anführungszeichen ein, um zu verhindern, dass die eckigen Klammern als Platzhalter interpretiert werden.

      Wenn Sie andere Zusätze installieren müssen (z. B. pandas zur Verwendung der Python-Konnektor-APIs für Pandas), verwenden Sie ein Komma zwischen den Zusätzen:

      pip install "snowflake-connector-python[secure-local-storage,pandas]"
      
      Copy
    • Weitere Informationen zum Snowflake-JDBC-Treiber finden Sie unter Fügen Sie die JNA-Klassen zu Ihrem Klassenpfad hinzu.

Um das MFA-Tokencaching zu deaktivieren, entfernen Sie den Parameter ALLOW_CLIENT_MFA_CACHING:

ALTER ACCOUNT UNSET ALLOW_CLIENT_MFA_CACHING;
Copy

Um alle Benutzer zu finden, die MFA Tokencaching als Second-Factor-Authentifizierung zur Anmeldung verwenden, können Sie die folgende SQL-Anweisung als Kontoadministrator (Benutzer mit der Rolle ACCOUNTADMIN) ausführen:

SELECT EVENT_TIMESTAMP,
       USER_NAME,
       IS_SUCCESS
  FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
  WHERE SECOND_AUTHENTICATION_FACTOR = 'MFA_TOKEN';
Copy

Verwenden von MFA mit SnowSQL

MFA kann für das Verbinden mit Snowflake über SnowSQL verwendet werden. Standardmäßig wird der Duo Push-Authentifizierungsmechanismus verwendet, wenn ein Benutzer in MFA registriert ist.

Um anstelle des Push-Mechanismus eine von Duo generierte Kennung zu verwenden, müssen die Anmeldeparameter eine der folgenden Verbindungsoptionen enthalten:

--mfa-passcode <Zeichenfolge> oder --mfa-passcode-in-password

Weitere Details dazu finden Sie unter SnowSQL (CLI-Client).

Verwenden von MFA mit JDBC

MFA kann für die Verbindung mit Snowflake über den Snowflake-JDBC-Treiber verwendet werden. Standardmäßig wird der Duo-Push-Authentifizierungsmechanismus verwendet, wenn ein Benutzer in MFA registriert ist. Dann sind keine Änderungen an der JDBC-Verbindungszeichenfolge erforderlich.

Um anstelle des Push-Mechanismus eine von Duo generierte Kennung zu verwenden, muss in der JDBC-Verbindungszeichenfolge einer der folgenden Parameter enthalten sein:

passcode=<Kennungszeichenfolge> OR passcodeInPassword=on

Wobei:

  • passcode_string ist eine in Duo generierte Kennung für den Benutzer, der sich verbindet. Dabei kann es sich um eine von der Duo Mobile-Anwendung generierte Kennung oder um eine SMS-Kennung handeln.

  • Wenn passcodeInPassword=on, dann werden Kennwort und Kennung in der Form <Kennwortzeichenfolge><Kennungszeichenfolge> verkettet.

Weitere Details dazu finden Sie unter JDBC-Treiber.

Beispiele für JDBC-Verbindungszeichenfolgen mit Duo

JDBC-Verbindungszeichenfolge für den Benutzer demo, der sich mit dem Konto xy12345 (in der Region US West) unter Verwendung einer Duo-Kennung verbindet:

jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcode=123456
Copy

JDBC-Verbindungszeichenfolge für den Benutzer demo, der sich mit dem Konto xy12345 (in der Region US West) unter Verwendung einer in das Kennwort eingebetteten Duo-Kennung verbindet:

jdbc:snowflake://xy12345.snowflakecomputing.com/?user=demo&passcodeInPassword=on
Copy

Verwendung von MFA mit Node.js

MFA kann für die Verbindung zu Snowflake über den Snowflake Node.js-Treiber verwendet werden. Standardmäßig wird der Duo Push-Authentifizierungsmechanismus verwendet, wenn ein Benutzer in MFA registriert ist.

Um anstelle des Push-Mechanismus eine von Duo generierte Kennung zu verwenden, müssen die Anmeldeparameter eine der folgenden Verbindungsoptionen enthalten: In beiden Beispielen wird ein Kennwort von abc123 und ein MFA-Passcode von 987654 verwendet, um die Konfiguration zu veranschaulichen.

  • Setzen Sie die Option passcodeInPassword auf true und fügen Sie das Kennwort als Teil der Zeichenfolge ein, ähnlich wie im Folgenden:

    authenticator: 'USERNAME_PASSWORD_MFA',
    password: "abc123987654", // passcode 987654 is part of the password
    passcodeInPassword: true  // because passcodeInPassword is true
    
    Copy
  • Setzen Sie die Option passcode auf den Wert des Kennworts, um das Kennwort und die Kennung getrennt anzugeben, ähnlich wie im Folgenden:

    authenticator: 'USERNAME_PASSWORD_MFA',
    password: "abc123", // password and MFA passcode are input separately
    passcode: "987654"
    
    Copy

    Um diesen Ansatz zu verwenden, stellen Sie sicher, dass die Option passcodeInPassword auf false (der Standardwert) eingestellt ist. Wenn sowohl: codenowrap:passcodeInPassword auf true festgelegt als auch: codenowrap:Kennung konfiguriert ist, hat die Einstellung passcodeInPassword Vorrang und der Treiber geht davon aus, dass das Feld password bei der Authentifizierung sowohl das Kennwort als auch die MFA-Kennung enthält.

Weitere Details dazu finden Sie unter Verwenden Sie eine MFA Kennung.

Verwenden von MFA mit ODBC

MFA kann für die Verbindung mit Snowflake über den Snowflake-ODBC-Treiber verwendet werden. Standardmäßig wird der Duo-Push-Authentifizierungsmechanismus verwendet, wenn ein Benutzer in MFA registriert ist. Dann sind keine Änderungen an den ODBC-Einstellungen erforderlich.

Um anstelle des Push-Mechanismus eine von Duo generierte Kennung zu verwenden, muss für den Treiber einer der folgenden Parameter angegeben werden:

passcode=<Kennungszeichenfolge> OR passcodeInPassword=on

Wobei:

  • passcode_string ist eine in Duo generierte Kennung für den Benutzer, der sich verbindet. Dabei kann es sich um eine von der Duo Mobile-Anwendung generierte Kennung oder um eine SMS-Kennung handeln.

  • Wenn passcodeInPassword=on, dann werden Kennwort und Kennung in der Form <Kennwortzeichenfolge><Kennungszeichenfolge> verkettet.

Weitere Details dazu finden Sie unter ODBC-Treiber.

Verwenden von MFA mit Python

MFA kann für die Verbindung mit Snowflake über den Snowflake-Konnektor für Python verwendet werden. Standardmäßig wird der Duo-Push-Authentifizierungsmechanismus verwendet, wenn ein Benutzer in MFA registriert ist. Dann sind keine Änderungen an den Python-API-Einstellungen erforderlich.

Um anstelle des Push-Mechanismus eine von Duo generierte Kennung zu verwenden, muss für den Treiber in der Methode connect() einer der folgenden Parameter angegeben werden:

passcode=<Kennungszeichenfolge> OR passcode_in_password=True

Wobei:

  • passcode_string ist eine in Duo generierte Kennung für den Benutzer, der sich verbindet. Dabei kann es sich um eine von der Duo Mobile-Anwendung generierte Kennung oder um eine SMS-Kennung handeln.

  • Wenn passcode_in_password=True, dann werden Kennwort und Kennung in der Form <Kennwortzeichenfolge><Kennungszeichenfolge> verkettet.

Weitere Details dazu finden Sie in der Beschreibung der connect()-Methode im Abschnitt Funktionen der Dokumentation zur Python-Konnektor-API.