Mehrstufige Authentifizierung (MFA)

Snowflake unterstützt die mehrstufige Authentifizierung (Multi-Factor Authentication, MFA), um Benutzern, die sich mit Snowflake verbinden, erhöhte Anmeldesicherheit zu bieten. Die MFA-Unterstützung wird als integrierte Snowflake-Funktion über den Duo Security-Service angeboten, der vollständig von Snowflake verwaltet wird.

Benutzer müssen sich nicht separat bei Duo anmelden, es genügt die Installation der Duo Mobile-Anwendung, die auf mehreren Smartphone-Plattformen (iOS, Android, Windows usw.) unterstützt wird. Weitere Informationen zu unterstützten Plattformen/Geräten und zur Funktionsweise der mehrstufigen Duo-Authentifizierung finden Sie im Duo-Benutzerhandbuch.

MFA wird auf Benutzerebene aktiviert. Zu diesem Zeitpunkt sind die Benutzer jedoch nicht automatisch in MFA angemeldet. Um MFA verwenden zu können, müssen sich Benutzer registrieren.

Achtung

Snowflake empfiehlt dringend, dass alle Benutzer mit der Rolle ACCOUNTADMIN mindestens verpflichtet sind, MFA zu verwenden.

Unter diesem Thema:

Voraussetzung

Der Duo-Anwendungsdienst kommuniziert über TCP-Port 443.

Aktualisieren Sie zur Sicherstellung eines konsistenten Verhaltens Ihre Firewall-Einstellungen, um den Duo-Anwendungsdienst zu TCP-Port 443 hinzuzufügen.

*.duosecurity.com:443

Weitere Informationen dazu finden Sie in der Duo-Dokumentation.

Workflow zur MFA-Anmeldung

Die folgende Abbildung veranschaulicht den gesamten Anmeldevorgang für einen MFA-registrierten Benutzer, unabhängig von der für die Verbindung verwendeten Schnittstelle:

MFA login flow

Registrieren eines Snowflake-Benutzers für MFA

Jeder Snowflake-Benutzer kann sich über die Weboberfläche selbst für MFA registrieren. Weitere Informationen dazu finden Sie unter Verwalten Ihrer Benutzereinstellungen.

Verwalten von MFA für Ihr Konto und Ihre Benutzer

Auf Kontoebene erfordert MFA keine Verwaltung. Es ist automatisch für Ihr Konto aktiviert und steht allen Ihren Benutzern zur Selbstregistrierung zur Verfügung. Möglicherweise müssen Sie jedoch MFA für einen Benutzer vorübergehend oder dauerhaft deaktivieren, z. B. wenn der Benutzer sein Telefon verliert oder seine Telefonnummer ändert und sich nicht mit MFA anmelden kann.

Zur Ausführung dieser Aufgabe können Sie den Befehl ALTER USER mit folgenden Eigenschaften verwenden:

  • MINS_TO_BYPASS_MFA

    Gibt die Anzahl der Minuten an, in denen MFA für den Benutzer vorübergehend deaktiviert wird, damit er sich anmelden kann. Nach Ablauf der Zeit wird MFA erzwungen, und der Benutzer kann sich nicht ohne den von der Duo Mobile-Anwendung generierten temporären Token anmelden.

  • DISABLE_MFA

    Deaktiviert MFA für den Benutzer und storniert damit seine Registrierung. Um MFA wieder verwenden zu können, muss sich der Benutzer erneut anmelden.

    Bemerkung

    DISABLE_MFA ist keine Spalte in einer Snowflake-Tabelle oder -Ansicht. Nachdem ein Kontoadministrator den Befehl ALTER USER ausgeführt hat, um DISABLE_MFA auf TRUE zu setzen, wird der Wert für die Eigenschaft EXT_AUTHN_DUO automatisch auf FALSE gesetzt.

    Um zu überprüfen, ob MFA für einen bestimmten Benutzer deaktiviert ist, führen Sie eine DESCRIBE USER-Anweisung aus, und überprüfen Sie dann den Wert für die Eigenschaft EXT_AUTHN_DUO.

Verbinden mit Snowflake mit MFA

Die 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- und ODBC-Treibern von Snowflake vollständig unterstützt.

Verwenden von MFA-Token-Caching 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 oder den Benutzer 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-Tokencaching mit den folgenden Clientversionen:

  • 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) den Parameter ALLOW_CLIENT_MFA_CACHING mit dem Befehl ALTER ACCOUNT für ein Konto oder mit dem Befehl ALTER USER für einen Benutzer auf true.

    -- account-level
    
    alter account set allow_client_mfa_caching = true;
    
  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]"
      

      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.

      If you need to install other extras (for example, pandas for using the Python Connector APIs for Pandas), use a comma between the extras:

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

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

Verwenden von MFA über die Weboberfläche

So melden Sie sich mit MFA bei der Snowflake-Weboberfläche an:

  1. Wechseln Sie in Ihrem Browser zur URL Ihres Kontos (z. B. https://xy12345.snowflakecomputing.com, https://xy12345.eu-central-1.snowflakecomputing.com).

  2. Geben Sie Ihre Anmeldeinformationen (Benutzeranmeldename und Kennwort) ein.

    MFA login
  3. Wenn Duo Push aktiviert ist, wird eine Push-Benachrichtigung an Ihre Duo Mobile-Anwendung gesendet. Wenn Sie die Benachrichtigung erhalten, klicken Sie einfach auf Approve, und Sie werden bei Snowflake angemeldet.

    MFA approval

    Wie im obigen Screenshot gezeigt, können Sie anstelle der Push-Benachrichtigung auch Folgendes wählen:

    • Klicken Sie auf Call Me, um Anmeldeanweisungen durch einen Telefonanruf auf dem registrierten mobilen Gerät zu erhalten.

    • Klicken Sie auf Enter a Passcode, um sich manuell durch Eingabe einer von der Duo Mobile-Anwendung bereitgestellte Kennung anzumelden.

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:

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

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

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:

  • Kennungszeichenfolge 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:

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

MFA-Fehlercodes

Die folgenden Fehlercodes sind mit MFA verbunden und können während des Authentifizierungsablaufs zurückgegeben werden.

Die Fehler werden bei jedem fehlgeschlagenen Anmeldeversuch angezeigt. Historische Daten sind auch in Information Schema und Account Usage verfügbar:

Fehlercode

Fehler

Beschreibung

390120

EXT_AUTHN_DENIED

Die Duo Security-Authentifizierung wird verweigert.

390121

EXT_AUTHN_PENDING

Die Duo Security-Authentifizierung steht aus.

390122

EXT_AUTHN_NOT_ENROLLED

Der Benutzer ist nicht bei Duo Security angemeldet. Wenden Sie sich an Ihren lokalen Systemadministrator.

390123

EXT_AUTHN_LOCKED

Benutzer wurde von Duo Security gesperrt. Wenden Sie sich an Ihren lokalen Systemadministrator.

390124

EXT_AUTHN_REQUESTED

Die Authentifizierung mit Duo Security ist erforderlich.

390125

EXT_AUTHN_SMS_SENT

Die temporäre Kennung von Duo Security wird über SMS gesendet. Verwenden Sie diese Kennung für die Authentifizierung.

390126

EXT_AUTHN_TIMEOUT

Zeitüberschreitung beim Warten auf die Genehmigung Ihrer Anmeldeanforderung über Duo Mobile. Wenn Ihr mobiles Gerät keinen Datendienst hat, generieren Sie eine Duo-Kennung, und geben Sie diese in die Verbindungszeichenfolge ein.

390127

EXT_AUTHN_INVALID

Es wurde eine falsche Kennung angegeben.

390128

EXT_AUTHN_SUCCEEDED

Die Duo Security-Authentifizierung war erfolgreich.

390129

EXT_AUTHN_EXCEPTION

Die Anforderung konnte aufgrund eines Kommunikationsproblems mit dem externen Dienstanbieter nicht abgeschlossen werden. Versuchen Sie es später noch einmal.

390132

EXT_AUTHN_DUO_PUSH_DISABLED

Duo Push ist für Ihre MFA nicht aktiviert. Geben Sie eine Kennung als Teil der Verbindungszeichenfolge an.