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
Copy

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:

Workflow zur MFA-Anmeldung

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 des Benutzerprofils mithilfe von Snowsight.

Umschalten der für MFA verwendeten Telefone

Instant Restore ist ein Feature von Duo, mit dem Benutzer ein Backup der Duo-App erstellen können, bevor sie auf ein neues Telefon wechseln. Solange Snowflake-Benutzer zunächst eine Sicherungskopie des bisherigen Telefons erstellen, können sie Instant Restore verwenden, um die Authentifizierung auf dem neuen Telefon zu aktivieren, ohne MFA für Snowflake zu unterbrechen.

Wenn Benutzer keine Sicherungskopie des bisherigen Telefons erstellen oder das alte Telefon verlieren, muss der Snowflake-Kontoadministrator MFA für jeden Benutzernamen deaktivieren, der das bisherige Telefon verwendet hat, bevor MFA auf dem neuen Telefon wieder aktiviert werden kann.

Verwalten von MFA für ein Konto und Benutzer

Auf Kontoebene erfordert MFA keine Verwaltung. Es ist automatisch für ein Konto aktiviert und steht allen Benutzern zur Selbstregistrierung zur Verfügung. Möglicherweise muss der Kontoadministrator (d. h. der Benutzer mit der Systemrolle ACCOUNTADMIN) 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 kann der Kontoadministrator 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. Möglicherweise muss der Browser aktualisiert werden, um sicherzustellen, dass der Benutzer nicht mehr bei MFA registriert ist. 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-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 das MFA-Tokencaching mit den folgenden Treibern und Konnektoren unter macOS und Windows: Dieses Feature wird für Linux derzeit nicht unterstützt.

  • 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 Hinzufügen der JNA-Klassen zu Ihrem Klassenpfad.

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 Snowsight

So melden Sie sich mit MFA bei Snowsight an:

  1. Melden Sie sich bei Snowsight an.

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

  3. Wenn Duo Push aktiviert ist, können Sie eine Benachrichtigungsmethode auswählen. Wenn Send Me a Push ausgewählt ist, wird eine Push-Benachrichtigung an Ihre Duo Mobile-Anwendung gesendet. Wenn Sie die Benachrichtigung erhalten, wählen Sie Approve aus. Sie werden nun bei Snowflake angemeldet.

    MFA-Auswahldialog mit den Optionen „Push-Nachricht senden“, „Anrufen“ und „Kennung eingeben“.

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

    • Wählen Sie Call Me aus, um Anmeldeanweisungen über einen Telefonanruf auf dem registrierten mobilen Gerät zu erhalten.

    • Wählen Sie Enter a Passcode aus, um sich manuell durch Eingabe einer von der Duo Mobile-Anwendung bereitgestellten Kennung anzumelden.

Verwenden von MFA bei der klassischen Weboberfläche

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

  1. Wechseln Sie in Ihrem Browser zur URL Ihres Kontos. Beispiel: https://myorg-account1.snowflakecomputing.com.

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

  3. Wenn Duo Push aktiviert ist, wird eine Push-Benachrichtigung an Ihre Duo Mobile-Anwendung gesendet. Wenn Sie die Benachrichtigung erhalten, wählen Sie Approve aus. Sie werden nun bei Snowflake angemeldet.

    MFA-Auswahldialog mit den Optionen „Push-Nachricht senden“, „Anrufen“ und „Kennung eingeben“.

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

    • Wählen Sie Call Me aus, um Anmeldeanweisungen über einen Telefonanruf auf dem registrierten mobilen Gerät zu erhalten.

    • Wählen Sie Enter a Passcode aus, um sich manuell durch Eingabe einer von der Duo Mobile-Anwendung bereitgestellten 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:

  • 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

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.

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