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:
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
aufTRUE
zu setzen, wird der Wert für die EigenschaftEXT_AUTHN_DUO
automatisch aufFALSE
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:
Der Parameter ALLOW_CLIENT_MFA_CACHING ist für das Konto auf FALSE gesetzt.
Die Methode der Authentifizierung ändert sich.
Die Authentifizierungsdaten ändern sich (d. h. Benutzername und/oder Kennwort).
Die Authentifizierungsdaten sind ungültig.
Das zwischengespeicherte Token läuft ab oder ist kryptografisch ungültig.
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:
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;
Aktualisieren Sie in der Clientverbindungszeichenfolge den Authentifikatorwert auf
authenticator = username_password_mfa
.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.
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]"
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;
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';
Verwenden von MFA mit Snowsight¶
So melden Sie sich mit MFA bei Snowsight an:
Geben Sie Ihre Anmeldeinformationen (Benutzeranmeldename und Kennwort) ein.
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.
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:
Wechseln Sie in Ihrem Browser zur URL Ihres Kontos. Beispiel:
https://myorg-account1.snowflakecomputing.com
.Geben Sie Ihre Anmeldeinformationen (Benutzeranmeldename und Kennwort) ein.
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.
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>
ORpasscodeInPassword=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
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>
ORpasscodeInPassword=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>
ORpasscode_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:
Das Information Schema liefert Daten aus den letzten 7 Tagen und kann mit den LOGIN_HISTORY , LOGIN_HISTORY_BY_USER-Tabellenfunktionen abgefragt werden.
Die Account Usage-LOGIN_HISTORY-Ansicht liefert Daten aus dem vergangenen Jahr.
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. |