ODBC-Konfigurations- und Verbindungsparameter

Der Snowflake-ODBC-Treiber verwendet Konfigurations- und Verbindungsparameter. Die Methoden zum Festlegen der Parameter richten sich nach der Plattform, auf der der Treiber installiert ist.

Unter diesem Thema:

Parametereinstellung unter Windows

Unter Windows:

  • Konfigurationsparameter werden in der Windows-Registrierung mit regedit und dem folgenden Registrierungspfad festgelegt:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Snowflake\Driver]
    
  • Die Verbindungsparameter werden unter Datenquellennamen (Data Source Names, DSNs) festgelegt:

    • DSNs werden typischerweise mit dem Windows-Tool Data Source Administration erstellt und bearbeitet.

    • Bei Bedarf können Sie die Registrierungsschlüssel für DSNs direkt in der Windows-Registrierung mit regedit bearbeiten. Der Registrierungspfad zu den Schlüsseln richtet sich danach, ob Sie 64-Bit- oder 32-Bit-Windows verwenden und ob Sie einen Benutzer- oder System-DSN bearbeiten:

      • 64-Bit-Windows:

        [HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\<DSN_NAME>]
        
        [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\<DSN_NAME>]
        
      • 32-Bit-Windows:

        [HKEY_CURRENT_USER\SOFTWARE\WOW6432NODE\ODBC\ODBC.INI\<DSN_NAME>]
        
        [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\ODBC\ODBC.INI\<DSN_NAME>]
        

      Um mit regedit einen Verbindungsparameter hinzuzufügen, fügen Sie einen neuen String Value hinzu, doppelklicken Sie auf den von Ihnen angelegten Wert und geben Sie dann den ODBC-Parameter als Value name und den Parameterwert als Value data ein.

Festlegen von Parametern unter macOS oder Linux

Unter macOS oder Linux:

  • Konfigurationsparameter werden in der Konfigurationsdatei (simba.snowflake.ini) festgelegt.

  • Die Verbindungsparameter werden in der DSN-Datei (odbc.ini) festgelegt:

Konfigurationsparameter

LogLevel

Gibt den Detaillierungsgrad an, der für Clients protokolliert wird, die den ODBC-Treiber verwenden:

0 = Off
1 = Fatal
2 = Error
3 = Warning
4 = Info
5 = Debug
6 = Trace
LogPath

Gibt den Speicherort der Snowflake-Protokolldateien für Clients an, die den ODBC-Treiber verwenden.

CURLVerboseMode

Auf true einstellen, um die ausführliche cURL-Protokollierung zu aktivieren. Die Protokolldatei snowflake_odbc_curl.dmp wird erstellt und aktualisiert. Der Snowflake-ODBC-Treiber verwendet cURL als HTTP- und SSL-Bibliothek. Dieser Parameter ist nützlich für die Diagnose von Netzwerkproblemen.

Proxy

Gibt einen Proxyserver in der Form <Host>:<Port> für Clients an, die den ODBC-Treiber verwenden.

Bemerkung

Unter Windows werden die Einträge für LogLevel und LogPath erstellt und mit Standardwerten gefüllt, wenn der ODBC-Treiber installiert ist. Ein Eintrag für Proxy wird jedoch während der Installation nicht erstellt. Um einen Proxy anzugeben, der mit dem Treiber verwendet werden soll, müssen Sie den Eintrag manuell zum Treiberregistrierungsschlüssel hinzufügen.

Um den Proxy für eine oder mehrere IP-Adressen oder URLs zu umgehen, fügen Sie den Parameter NoProxy hinzu:

NoProxy

Gibt die Hostnamenmuster zur Umgehung des Proxyservers an, z. B. .amazonaws.com zur Umgehung des Amazon S3-Zugriffs.

Bemerkung

Der Snowflake-ODBC-Treiber übergibt den NoProxy-Wert an die cURL-Option CURLOPT_NOPROXY. Das Format des Werts NoProxy finden Sie hier.

CABundleFile

Legen Sie den Speicherort der Bundledatei der Zertifizierungsstelle (CA) fest. Muss auf eine Datei verweisen, die eine gültige Liste der CA-Zertifikate enthält.

Unter Linux kopieren die RPM- und DEB-Installer automatisch die Datei und legen diesen Parameter fest.

Unter Mac kopiert der PKG-Installer die Datei und legt diesen Parameter fest.

Unter Windows kopiert der MSI-Installer die Datei und legt diesen Parameter fest.

Für eine manuelle Installation müssen Sie die Datei von https://curl.haxx.se/docs/caextract.html herunterladen und den Speicherort der Datei festlegen.

DisableOCSPCheck

Auf true setzen, um die Prüfung des TLS/SSL-Zertifikatssperrstatus durch das Online Certificate Status Protocol (OCSP) zu deaktivieren. Unter normalen Umständen sollte dieses Flag nicht gesetzt werden. Wenn jedoch das OCSP-Verfügbarkeitsproblem weiterhin besteht, kann die Anwendung diesen Parameter vorübergehend einstellen, um Konnektivitätsprobleme zu lösen, und wieder entfernen, wenn das OCSP-Verfügbarkeitsproblem behoben ist.

KeepLeadingTrailingZeros

Legt fest, wie führende oder nachstehende Nullen in Zahlen, die als Zeichenfolgenwerte formatiert sind, behandelt werden. Standardmäßig ist der Parameter auf true eingestellt, was bedeutet, dass der Treiber alle führenden oder nachstehenden Nullen beibehält. Setzen Sie den Parameter auf false, um führende oder nachstehende Nullen zu entfernen. Beispiel:

  • 0.23 wird in .23 geändert

  • 7.00 wird in 7 geändert

NoExecuteInSQLPrepare

Setzen Sie diesen Wert auf true, um den ODBC-Treiber so zu konfigurieren, dass er das ODBC-Standardverhalten verwendet, wenn DDL-Anweisungen (wie CREATE und DROP) an SQLPrepare() und SQLExecute() übergeben werden.

In Snowflake wird standardmäßig bei Übergabe einer DDL-Anweisung an die SQLPrepare()-Funktion der ODBC-Treiber die Anweisung zur Ausführung (nicht zur Vorbereitung) an die Datenquelle sendet. Wenn Sie eine DDL-Anweisung an SQLExecute() übergeben, sendet der ODBC-Treiber die Anweisung nicht an die Datenquelle.

Wenn Sie NoExecuteInSQLPrepare auf true setzen, folgt der ODBC-Treiber dem ODBC-Standardverhalten. Durch Aufrufen von SQLPrepare() wird die Anweisung zur Vorbereitung (nicht zur Ausführung) an die Datenquelle gesendet. Durch Aufrufen von SQLExecute() wird die Anweisung zur Ausführung an die Datenquelle gesendet.

Dieser Parameter wurde in Version 2.21.6 des ODBC-Treibers eingeführt.

Verbindungsparameter

Erforderliche Verbindungsparameter

<Name> (Datenquelle)

Gibt den Namen Ihres DSN an.

uid (Benutzer)

Gibt den Anmeldenamen des Snowflake-Benutzers an, der authentifiziert werden soll.

pwd (Kennwort)

Für die Verbindung zu Snowflake ist ein Kennwort erforderlich. Aus Sicherheits- und Authentifizierungsgründen rät Snowflake jedoch dringend davon ab, Kennwort-Anmeldeinformationen direkt innerhalb einer DSN-Definition zu speichern.

Normalerweise werden die Anmeldeinformationen von der Clientanwendung, die sich mit Snowflake zu verbinden versucht, programmgesteuert an den Treiber übergeben.

Bemerkung

Unter Windows zeigt der ODBC-Treiber ein Feld Password im Data Source Administration-Tool an, der Treiber speichert jedoch keine in das Feld eingegebenen Werte. Stattdessen verlangt der Treiber, dass zur Verbindungszeit Anmeldeinformationen bereitgestellt werden.

server (Server)

Gibt den Hostnamen für Ihr Konto im folgenden Format an:

Kontoname.snowflakecomputing.com

Beachten Sie jedoch, dass Ihr vollständiger Kontoname möglicherweise zusätzliche Segmente enthält, die die Region und die Cloudplattform angeben, wo Ihr Konto gehostet wird.

Beispiele für Kontonamen nach Region

Wenn Ihr Kontoname beispielsweise xy12345 ist:

Cloudplattform/Region

Vollständiger Kontoname

AWS

US West (Oregon)

xy12345

US East (Ohio)

xy12345.us-east-2.aws

US East (N. Virginia)

xy12345.us-east-1

US East (Commercial Gov - N. Virginia)

xy12345.us-east-1-gov.aws

Canada (Central)

xy12345.ca-central-1.aws

EU (Irland)

xy12345.eu-west-1

EU (Frankfurt)

xy12345.eu-central-1

Asia Pacific (Tokio)

xy12345.ap-northeast-1.aws

Asia Pacific (Mumbai)

xy12345.ap-south-1.aws

Asia Pacific (Singapur)

xy12345.ap-southeast-1

Asia Pacific (Sydney)

xy12345.ap-southeast-2

GCP

US Central1 (Iowa)

xy12345.us-central1.gcp

Europe West2 (London)

xy12345.europe-west2.gcp

Europe West4 (Niederlande)

xy12345.europe-west4.gcp

Azure

West US 2 (Washington)

xy12345.west-us-2.azure

East US 2 (Virginia)

xy12345.east-us-2.azure

US Gov Virginia

xy12345.us-gov-virginia.azure

Canada Central (Toronto)

xy12345.canada-central.azure

West Europe (Niederlande)

xy12345.west-europe.azure

Switzerland North (Zürich)

xy12345.switzerland-north.azure

Southeast Asia (Singapur)

xy12345.southeast-asia.azure

Australia East (New South Wales)

xy12345.australia-east.azure

Wichtig

Wenn eine der folgenden Bedingungen zutrifft, unterscheidet sich Ihr Kontoname von der oben beschriebenen Struktur:

  • Wenn Ihre Snowflake Edition VPS ist, wenden Sie sich an den Snowflake-Support, um Details zu Ihrem Kontonamen zu erhalten.

  • Wenn für Ihr Konto AWS PrivateLink aktiviert ist, muss der Kontoname ein zusätzliches privatelink-Segment enthalten. Weitere Details dazu finden Sie unter AWS PrivateLink & Snowflake.

port (Port)

Gibt den Port an, an dem der Treiber die Snowflake-Kommunikation abhört.

Bemerkung

Sie müssen den Standardwert Port von 443 nicht ändern.

Optionale Verbindungsparameter

database (Datenbank)

Gibt die Standarddatenbank an, die für vom Treiber initiierte Sitzungen verwendet werden soll.

schema (Schema)

Gibt das Standardschema an, das für vom Treiber initiierte Sitzungen verwendet werden soll.

Der Standardwert ist public.

warehouse (Warehouse)

Gibt das Standard-Warehouse an, das für vom Treiber initiierte Sitzungen verwendet werden soll.

role (Rolle)

Gibt die Standardrolle an, die für vom Treiber initiierte Sitzungen verwendet werden soll. Die angegebene Rolle sollte eine Rolle sein, die dem angegebenen Benutzer für den Treiber zugeordnet wurde. Wenn die angegebene Rolle mit keiner der dem Benutzer zugeordneten Rollen übereinstimmt, haben vom Treiber initiierte Sitzungen zunächst keine Rolle. Eine Rolle kann jedoch immer innerhalb der Sitzung angegeben werden.

tracing (Ablaufverfolgung)

Der Detaillierungsgrad, der in den Ablaufverfolgungsdateien für Treiber protokolliert werden soll:

0 = Ablaufverfolgung deaktivieren

1 = Nur Ablaufverfolgung schwerwiegender Fehler

2 = Ablaufverfolgung von Fehlern

3 = Ablaufverfolgung von Warnungen

4 = Ablaufverfolgung von Informationen

5 = Debug-Ablaufverfolgung

6 = Detaillierte Ablaufverfolgung

Zusätzliche Verbindungsparameter

Bemerkung

Unter Windows können diese zusätzlichen Verbindungsparameter in der Windows-Registrierung mithilfe von regedit festgelegt werden.

Unter macOS oder Linux werden sie in der odbc.ini-Datei festgelegt, ähnlich wie der Rest der Verbindungsparameter.

application

Snowflake partner use only: Gibt den Namen einer Partneranwendung an, die über ODBC verbunden werden soll.

Dieser Parameter kann auch durch Aufrufen der Funktion SQLSetConnectAttr() festgelegt werden. Weitere Informationen dazu finden Sie unter Snowflake-spezifisches Verhalten der SQLSetConnectAttr-Funktion.

authenticator

Gibt den Authentifikator an, der für die Überprüfung der Anmeldeinformationen des Benutzers verwendet werden soll:

  • snowflake (Standard), um den internen Snowflake-Authentifikator zu verwenden.

  • externalbrowser to use your web browser to authenticate with Okta, ADFS, or any other SAML 2.0-compliant identity provider (IdP) that has been defined for your account.

  • https://<Name_Ihres_Okta-Kontos>.okta.com (d. h. der URL-Endpunkt für Okta) zum Authentifizieren über das systemeigene Okta (nur unterstützt, wenn Ihr IdP Okta ist).

  • oauth zum Authentifizieren mit OAuth. Wenn OAuth als Authentifikator angegeben ist, müssen Sie auch den Parameter token festlegen, um das OAuth-Token anzugeben (siehe unten).

Der Standardwert ist snowflake.

Weitere Informationen zur Authentifizierung finden Sie unter Verwenden und Verwalten der Verbundauthentifizierung und OAuth mit Clients, Treibern und Konnektoren.

token=<Zeichenfolge>

Gibt das OAuth-Token an, das für die Authentifizierung verwendet werden soll, wobei <Zeichenfolge> das Token ist. Dieser Parameter ist nur erforderlich, wenn der Parameter authenticator=oauth eingestellt ist.

Der Standardwert ist „none“.

passcode

Gibt die Kennung an, die für die mehrstufige Authentifizierung verwendet werden soll.

Weitere Informationen zur mehrstufigen Authentifizierung finden Sie unter Mehrstufige Authentifizierung (MFA).

passcodeInPassword

Gibt an, ob die Kennung für die mehrstufige Authentifizierung an das Kennwort angehängt wird:

  • on (oder true) gibt an, dass die Kennung angehängt wird.

  • off (oder false) oder ein anderer Wert gibt an, dass die Kennung nicht angehängt wird.

Der Standardwert ist off.

login_timeout

Gibt an, wie lange beim Herstellen einer Verbindung zum Snowflake-Service auf eine Antwort gewartet werden soll, bevor ein Anmeldefehler zurückgegeben wird.

Die Standardeinstellung ist 60 Sekunden.

network_timeout

Gibt an, wie lange beim Interagieren mit dem Snowflake-Service auf eine Antwort gewartet werden soll, bevor ein Fehler zurückgegeben wird. Null (0) bedeutet, dass kein Netzwerk-Timeout eingestellt ist.

Der Standard ist 0 Sekunden.

query_timeout

Gibt an, wie lange auf das Ende einer Abfrage gewartet werden soll, bevor ein Fehler gemeldet wird. Null (0) bedeutet, dass Sie auf unbestimmte Zeit warten müssen.

Der Standard ist 0 Sekunden.

odbc_use_standard_timestamp_columnsize

Dieser boolesche Parameter wirkt sich auf die Spaltengröße (in Zeichen) aus, die für SQL_TYPE_TIMESTAMP zurückgegeben wird. Wenn dieser Parameter auf „true“ gesetzt ist, gibt der Treiber 29 gemäß dem ODBC-Standard zurück. Wenn dieser Parameter auf „false“ gesetzt ist, gibt der Treiber 35 zurück, wodurch Platz für den Zeitzonenversatz bleibt (z. B. „-08:00“).

Dieser Wert kann nicht nur über die „odbc.ini“-Datei (Linux oder macOS) oder die MS Windows-Registrierung festgelegt werden, sondern auch über die Verbindungszeichenfolge.

Der Standardwert ist „false“.

proxy

Gibt die URL des Proxyservers im Format http://<Hostname>:<Port>/ oder <Hostname>:<Portnummer> an, sodass die gesamte ODBC-Kommunikation über den Proxyserver erfolgt.

Bemerkung

Dieser Parameter wird auf den Prozess angewendet. Wenn eine andere Verbindung den gleichen Prozess teilt, muss die Proxyeinstellung identisch sein, oder das Verhalten ist nicht vorhersehbar.

no_proxy

Gibt an, welche Hostnamen-Endungen den Proxyserver umgehen dürfen (z. B. bedeutet no_proxy=.amazonaws.com, dass der Amazon S3-Zugriff nicht über den Proxy erfolgen muss).

Dieser Parameter unterstützt keine Platzhalter. Jeder angegebene Wert sollte einer der folgenden Werte sein:

  • Das Ende eines Hostnamens (oder eines vollständigen Hostnamens), zum Beispiel:

    • .amazonaws.com

    • xy12345.snowflakecomputing.com

  • Eine IP-Adresse, zum Beispiel:

    • 192.196.1.15

Wenn mehr als ein Wert angegeben wird, sollten die Werte durch Kommas getrennt werden. Beispiel:

no_proxy=localhost,.my_company.com,xy12345.snowflakecomputing.com,192.168.1.15,192.168.1.16

Bemerkung

Dieser Parameter wird auf den Prozess angewendet. Wenn eine andere Verbindung den gleichen Prozess teilt, muss die Proxyeinstellung identisch sein, oder das Verhalten ist nicht vorhersehbar.

Überprüfen der Netzwerkverbindung zu Snowflake mit SnowCD

Nach der Konfiguration des Treibers können Sie die Netzwerkkonnektivität zu Snowflake mit SnowCD testen und Probleme beheben.

Sie können während der Erstkonfiguration und bei Bedarf jederzeit SnowCD verwenden, um Ihre Netzwerkverbindung zu Snowflake zu testen und Probleme zu beheben.

Verbinden über einen Proxyserver

Die Anweisungen zur Konfiguration einer Proxyserver-Verbindung hängen von Ihrem Betriebssystem und Ihrer Treiberversion ab:

Betriebssystem

Treiberversion

Unterstützte Anweisungen

Linux

2.16.0 (veröffentlicht am 3. Mai 2018) oder höher

2.13.18 (veröffentlicht am 7. Februar 2018) – 2.15.0 (veröffentlicht am 30. April 2018)

Verwenden von Umgebungsvariablen

2.13.17 oder niedriger

Verwenden von Konfigurationsparametern

macOS

2.16.0 (veröffentlicht am 3. Mai 2018) oder höher

2.14.0 (veröffentlicht am 28. März 2018) – 2.15.0 (veröffentlicht am 30. April 2018)

Verwenden von Umgebungsvariablen

2.13.21 oder niedriger

Verwenden von Konfigurationsparametern

Windows

2.16.0 (veröffentlicht am 3. Mai 2018) oder höher

2.15.0 (veröffentlicht am 30. April 2018)

Verwenden von Umgebungsvariablen

2.14.0 oder niedriger

Verwenden von Konfigurationsparametern

Bemerkung

Die neuesten Versionen des ODBC-Treibers, die oben angegeben sind, unterstützen jede der aufgeführten Konfigurationsoptionen. Die Optionen sind in der Reihenfolge ihrer Priorität aufgeführt. Wenn mehr als eine Option definiert ist, wird die Einstellung mit der höchsten Priorität angewendet.

Verwenden von Verbindungsparametern

Um eine Verbindung über einen Proxyserver herzustellen, fügen Sie die folgenden Verbindungsparameter zum DSN hinzu:

  • proxy

  • no_proxy

Beispiel:

[connection]
Description = SnowflakeDB
Driver      = SnowflakeDSIIDriver
Locale      = en-US
server      = account.snowflakecomputing.com
proxy       = http://proxyserver.company:80
no_proxy    = .amazonaws.com

Die Parameterbeschreibungen finden Sie unter Verbindungsparameter.

Verwenden von Konfigurationsparametern

Bemerkung

Diese Parameter sind in den aktuellen ODBC-Treiberversionen veraltet (d. h. sie werden nicht mehr unterstützt). Siehe die Tabelle der unterstützten Optionen unter Verbinden über einen Proxyserver. Wenn Sie Ihren Treiber aktualisieren, konfigurieren Sie die Einstellungen Ihres Proxyservers mithilfe der Umgebungsvariablen oder Verbindungsparameter.

Um eine Verbindung über einen Proxyserver herzustellen, fügen Sie die folgenden Konfigurationsparameter hinzu:

  • Proxy

  • NoProxy

Siehe Konfigurationsparameter für Parameterbeschreibungen.

Verwenden von Umgebungsvariablen

Um eine Verbindung über einen Proxyserver herzustellen, konfigurieren Sie die folgenden Umgebungsvariablen:

  • http_proxy

  • https_proxy

  • no_proxy

Bemerkung

Bei diesen Umgebungsvariablen muss unter Linux und macOS die Groß-/Kleinschreibung beachtet werden; hier müssen Kleinbuchstaben verwendet werden. Unter Windows muss bei diesen Umgebungsvariablen die Groß-/Kleinschreibung nicht beachtet werden.

Beispiel:

  • Linux oder macOS:

    export http_proxy=http://proxyserver.company.com:80
    export https_proxy=http://proxyserver.company.com:80
    

    Wenn der Proxyserver einen Benutzernamen und ein Kennwort erfordert, geben Sie die Anmeldeinformationen an, z. B.:

    export https_proxy=http://username:password@proxyserver.company.com:80
    
  • Windows:

    set http_proxy=http://proxyserver.company.com:80
    set https_proxy=http://proxyserver.company.com:80
    

    Wenn der Proxyserver einen Benutzernamen und ein Kennwort erfordert, geben Sie die Anmeldeinformationen an, z. B.:

    set https_proxy=http://username:password@proxyserver.company.com:80
    

Optional können Sie no_proxy so einstellen, dass der Proxy für bestimmte Kommunikation umgangen wird (z. B. no_proxy=.amazonaws.com zur Umgehung des Amazon S3-Zugriffs).

Verwenden von Single Sign-On (SSO) zur Authentifizierung

Wenn Sie Snowflake für die Verwendung von Single Sign-On (SSO) konfiguriert haben, können Sie Ihre Clientanwendung so konfigurieren, dass SSO für die Authentifizierung verwendet wird. Weitere Informationen dazu finden Sie unter Verwenden von SSO bei Clientanwendungen, die sich mit Snowflake verbinden.

Verwenden der Schlüsselpaar-Authentifizierung

Snowflake unterstützt die Verwendung von Schlüsselpaar-Authentifizierung anstelle der typischen Authentifizierung durch Benutzernamen und Kennwort. Dieses Authentifizierungsverfahren erfordert ein 2048-Bit-RSA-Schlüsselpaar (Minimum). Generieren Sie das Public/Private-Schlüsselpaar mit OpenSSL. Der öffentliche Schlüssel wird dem Snowflake-Benutzer zugewiesen, der den Snowflake-Client verwendet.

Tipp

Snowflake empfiehlt, ein langes und komplexes Kennwort zu verwenden, das auf PCI-DSS-Standards basiert, um den lokal generierten privaten Schlüssel zu schützen.

Führen Sie die folgenden Schritte aus, um ein langes und komplexes Kennwort zu generieren, das auf PCIDSS-Standards basiert:

  1. Greifen Sie auf die Dokumentbibliothek für PCI-Sicherheitsstandards zu.

  2. Wählen Sie für PCI DSS die neueste Version und die gewünschte Sprache aus.

  3. Füllen Sie das Formular aus, um auf das Dokument zuzugreifen.

  4. Suchen Sie nach Passwords/passphrases must meet the following:, und befolgen Sie die Empfehlungen zu Anforderungen, Tests und Anleitungen für Kennwörter/Passphrasen.

  • Abhängig von der Dokumentversion finden Sie diesen Ausdruck wahrscheinlich in einem Abschnitt mit dem Namen Requirement 8: Identify and authenticate access to system components (oder ähnlich):

So konfigurieren Sie das Public/Private-Schlüsselpaar:

  1. Generieren Sie über die Befehlszeile in einem Terminalfenster einen privaten Schlüssel:

    Sie können entweder eine verschlüsselte Version des privaten Schlüssels oder eine unverschlüsselte Version des privaten Schlüssels generieren.

    Um eine unverschlüsselte Version zu generieren, verwenden Sie den folgenden Befehl:

    $ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    

    Um eine verschlüsselte Version zu generieren, verwenden Sie den folgenden Befehl (ohne „-nocrypt“):

    $ openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8
    

    Es ist normalerweise sicherer, eine verschlüsselte Version zu erstellen.

    Wenn Sie den zweiten Befehl zum Verschlüsseln des privaten Schlüssels verwenden, fordert OpenSSL Sie zur Eingabe einer Passphrase auf, die zum Verschlüsseln der Datei des privaten Schlüssels verwendet wird. Wir empfehlen, zum Schutz des privaten Schlüssels eine starke Passphrase zu verwenden. Notieren Sie sich diese Passphrase an einem sicheren Ort. Sie müssen sie beim Herstellen der Verbindung mit Snowflake eingeben. Beachten Sie, dass die Passphrase nur zum Schutz des privaten Schlüssels verwendet wird und niemals an Snowflake gesendet wird.

    Beispiel für einen privaten PEM-Schlüssel

    -----BEGIN ENCRYPTED PRIVATE KEY-----
    MIIE6TAbBgkqhkiG9w0BBQMwDgQILYPyCppzOwECAggABIIEyLiGSpeeGSe3xHP1
    wHLjfCYycUPennlX2bd8yX8xOxGSGfvB+99+PmSlex0FmY9ov1J8H1H9Y3lMWXbL
    ...
    -----END ENCRYPTED PRIVATE KEY-----
    
  2. Generieren Sie über die Befehlszeile den öffentlichen Schlüssel, indem Sie auf den privaten Schlüssel verweisen:

    Angenommen, der private Schlüssel befindet sich in der Datei „rsa_key.p8“, verwenden Sie den folgenden Befehl:

    $ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
    

    Beispiel für einen öffentlichen PEM-Schlüssel

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy+Fw2qv4Roud3l6tjPH4
    zxybHjmZ5rhtCz9jppCV8UTWvEXxa88IGRIHbJ/PwKW/mR8LXdfI7l/9vCMXX4mk
    ...
    -----END PUBLIC KEY-----
    
  3. Kopieren Sie die Dateien der öffentlichen und privaten Schlüssel zur Speicherung in einem lokalen Verzeichnis. Zeichnen Sie den Pfad zu den Dateien auf. Beachten Sie, dass der private Schlüssel im Format PKCS#8 (Public Key Cryptography Standards) gespeichert und mit der im vorherigen Schritt angegebenen Passphrase verschlüsselt wird; die Datei sollte jedoch weiterhin mit dem von Ihrem Betriebssystem bereitgestellten Dateiberechtigungsmechanismus vor unbefugtem Zugriff geschützt sein. Es liegt in Ihrer Verantwortung, die Datei zu sichern, wenn sie nicht verwendet wird.

  4. Weisen Sie dem Snowflake-Benutzer den öffentlichen Schlüssel mit ALTER USER zu. Beispiel:

    ALTER USER jsmith SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
    

    Bemerkung

    • Nur Sicherheitsadministratoren (d. h. Benutzer mit der Rolle SECURITYADMIN oder höher) können andere Benutzer ändern.

    • Schließen Sie die Kopf- und Fußzeile des öffentlichen Schlüssels in der SQL-Anweisung aus.

    Überprüfen Sie den Fingerabdruck des öffentlichen Schlüssels des Benutzers mithilfe von DESCRIBE USER:

    DESC USER jsmith;
    +-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------+
    | property                      | value                                               | default | description                                                                   |
    |-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------|
    | NAME                          | JSMITH                                              | null    | Name                                                                          |
    ...
    ...
    | RSA_PUBLIC_KEY_FP             | SHA256:nvnONUsfiuycCLMXIEWG4eTp4FjhVUZQUQbNpbSHXiA= | null    | Fingerprint of user's RSA public key.                                         |
    | RSA_PUBLIC_KEY_2_FP           | null                                                | null    | Fingerprint of user's second RSA public key.                                  |
    +-------------------------------+-----------------------------------------------------+---------+-------------------------------------------------------------------------------+
    

    Bemerkung

    Eine Beschreibung der Eigenschaft RSA_PUBLIC_KEY_2_FP finden Sie unter Schlüsselrotation (unter diesem Thema).

  5. Ändern Sie die Einträge für den Datenquellennamen (DSN) des Treibers. Weitere Informationen zu DSN-Einträgen finden Sie unter dem entsprechenden Thema für Ihr Betriebssystem:

    Fügen Sie die folgenden Parameter (unter Beachtung der Groß- und Kleinschreibung) hinzu:

    AUTHENTICATOR = SNOWFLAKE_JWT

    Gibt an, dass die Snowflake-Verbindung mithilfe der auf Schlüsselpaaren basierenden Authentifizierung mit dem JSON Web Token (JWT) authentifiziert werden soll.

    JWT_TIME_OUT = Ganzzahl

    Optional. Gibt an, wie lange Snowflake auf JWT (in Sekunden) wartet, bevor das Zeitlimit überschritten wird. In diesem Fall schlägt die Authentifizierung fehl, und der Treiber gibt einen Fehler Invalid JWT token zurück. Erhöhen Sie den Parameterwert, um ein wiederholtes Auftreten des Fehlers zu verhindern. Standard: 30

    PRIV_KEY_FILE = Pfad/rsa_key.p8

    Gibt den lokalen Pfad zu der von Ihnen erstellten Datei mit dem privaten Schlüssel an (d. h. rsa_key.p8).

    Der im DSN festgelegte Wert kann durch Aufrufen der Funktion SQLSetConnectAttr() überschrieben werden. Weitere Informationen dazu finden Sie unter Snowflake-spezifisches Verhalten der SQLSetConnectAttr-Funktion.

    PRIV_KEY_FILE_PWD = <password>

    Gibt die Kennung zum Decodieren der Datei des privaten Schlüssels an.

    Dieser Parameter sollte nur festgelegt werden, wenn der Parameter PRIV_KEY_FILE ebenfalls festgelegt ist.

    Der im DSN festgelegte Wert kann durch Aufrufen der Funktion SQLSetConnectAttr() überschrieben werden. Weitere Informationen dazu finden Sie unter Snowflake-spezifisches Verhalten der SQLSetConnectAttr-Funktion.

  6. Speichern Sie die Einstellungen.

Schlüsselrotation

Snowflake unterstützt mehrere aktive Schlüssel, um eine ununterbrochene Rotation zu ermöglichen. Rotieren und ersetzen Sie Ihre öffentlichen und privaten Schlüssel basierend auf dem Ablaufzeitplan, den Sie intern einhalten.

Derzeit können Sie die Parameter RSA_PUBLIC_KEY und RSA_PUBLIC_KEY_2 für ALTER USER verwenden, um einem einzelnen Benutzer bis zu zwei öffentliche Schlüssel zuzuordnen.

So rotieren Sie Ihre Schlüssel:

  1. Führen Sie die unter Verwenden der Schlüsselpaar-Authentifizierung angegebenen Schritte aus, um Folgendes zu ermöglichen:

    • Generieren eines neuen privaten und öffentlichen Schlüsselsatzes

    • Zuweisen des öffentlichen Schlüssels an einen Benutzer Setzen Sie den Wert des öffentlichen Schlüssels entweder auf RSA_PUBLIC_KEY oder RSA_PUBLIC_KEY_2 (je nachdem, welcher Schlüsselwert gerade nicht verwendet wird). Beispiel:

      alter user jsmith set rsa_public_key_2='JERUEHtcve...';
      
  2. Aktualisieren Sie den Code, um eine Verbindung zu Snowflake herzustellen. Geben Sie den neuen privaten Schlüssel an.

    Snowflake überprüft den korrekten aktiven öffentlichen Schlüssel für die Authentifizierung basierend auf dem privaten Schlüssel, der mit Ihren Verbindungsinformationen übermittelt wurde.

  3. Entfernen Sie den alten öffentlichen Schlüssel aus dem Benutzerprofil. Beispiel:

    alter user jsmith unset rsa_public_key;
    

Überprüfen der OCSP-Konnektor- oder Treiber-Version

Snowflake verwendet OCSP, um die Zertifikatkette beim Herstellen einer Verbindung zu Snowflake auszuwerten. Die Version von Treiber oder Konnektor bestimmt zusammen mit deren Konfiguration das OCSP-Verhalten. Weitere Informationen zur Treiber- oder Konnektor-Version, ihrer Konfiguration und zum OCSP-Verhalten finden Sie unter OCSP-Konfiguration.

OCSP-Antwort-Cacheserver

Bemerkung

Der OCSP-Antwort-Cacheserver wird derzeit vom Snowflake-ODBC-Treiber 2.15.0 und höher unterstützt.

Snowflake-Clients initiieren jede Verbindung zu einem Snowflake-Service-Endpunkt mit einem „Handshake“, der eine sichere Verbindung herstellt, bevor tatsächlich Daten übertragen werden. Im Rahmen des Handshakes authentifiziert ein Client das TLS/SSL-Zertifikat für den Service-Endpunkt. Der Sperrstatus des Zertifikats wird überprüft, indem eine Client-Zertifikatsanforderung an einen der OCSP (Online Certificate Status Protocol)-Server für die CA (Zertifizierungsstelle) gesendet wird.

Ein Verbindungsfehler tritt auf, wenn die Antwort des OCSP-Servers über eine angemessene Zeit hinaus verzögert wird. Die folgenden Caches behalten den Sperrstatus bei und helfen, diese Probleme zu beheben:

  • Speichercache, der während der gesamten Lebensdauer des Prozesses beibehalten wird.

  • Dateicache, der so lange beibehalten wird, bis das Cacheverzeichnis (z. B. ~/.cache/snowflake oder ~/.snowsql/ocsp_response_cache) gelöscht ist.

  • Snowflake-OCSP-Antwort-Cacheserver, der OCSP-Antworten von den OCSP-Servern der CA stündlich abruft und 24 Stunden lang speichert. Clients können dann den Validierungsstatus eines bestimmten Snowflake-Zertifikats von diesem Servercache anfordern.

    Wichtig

    Wenn Ihre Serverrichtlinie den Zugriff auf die meisten oder alle externen IP-Adressen und Websites verweigert, müssen Sie die Adresse des Cacheservers auf die Whitelist setzen, um einen normalen Servicebetrieb zu ermöglichen. Der Hostname des Cacheservers lautet ocsp*.snowflakecomputing.com:80.

    Wenn Sie den Cacheserver aus irgendeinem Grund deaktivieren müssen, setzen Sie die Umgebungsvariable SF_OCSP_RESPONSE_CACHE_SERVER_ENABLED auf false. Beachten Sie, dass der Wert zwischen Groß- und Kleinschreibung unterscheidet und in Kleinbuchstaben angegeben werden muss.

Wenn keine der Cacheschichten die OCSP-Antwort enthält, versucht der Client, den Validierungsstatus direkt vom OCSP-Server der CA abzurufen.