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:

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-Token-Caching mit den folgenden Clientversionen:

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

    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]"
    

Um das MFA-Token-Caching 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 Enter Duo Passcode, um sich manuell durch Eingabe einer von der Duo Mobile-Anwendung bereitgestellte Kennung anzumelden.

    • Klicken Sie auf Request SMS Passcodes, um einen Satz temporärer Kennungen über eine SMS an Ihr Gerät zu senden. Sie können sich dann anmelden, indem Sie eine der Kennungen manuell eingeben.

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.