Authentifizierung von Snowflake REST APIs mit Snowflake

Unter diesem Thema wird beschrieben, wie Sie sich beim Server authentifizieren, wenn Sie den Snowflake REST APIs verwenden.

Wenn Sie eine Anfrage senden, muss die Anfrage Informationen zur Authentifizierung enthalten, die einen der folgenden Punkte beinhalten:

Verwenden der Schlüsselpaar-Authentifizierung

Wenn Sie die Authentifizierung mit einem Schlüsselpaar verwenden, müssen Sie die folgenden Aufgaben erledigen:

  1. Einstellung der Schlüsselpaar-Authentifizierung

  2. Ein JWT-Token generieren

Einstellung der Schlüsselpaar-Authentifizierung

Um die Schlüsselpaar-Authentifizierung zu verwenden, führen Sie die folgenden Schritte aus:

  1. Richten Sie die Schlüsselpaar-Authentifizierung ein.

    Als Teil dieses Prozesses müssen Sie Folgendes tun:

    1. Generieren Sie ein öffentlich-privates Schlüsselpaar. Der generierte private Schlüssel muss sich in einer Datei befinden (z. B. mit dem Namen rsa_key.p8).

    2. Weisen Sie den öffentlichen Schlüssel Ihrem Snowflake-Benutzer zu. Nachdem Sie dem Benutzer den Schlüssel zugewiesen haben, führen Sie den Befehl DESCRIBE USER aus. In der Ausgabe muss die Eigenschaft RSA_PUBLIC_KEY_FP auf den Fingerabdruck des dem Benutzer zugewiesenen öffentlichen Schlüssels gesetzt sein.

    Eine Anleitung zum Generieren des Schlüsselpaars und zum Zuweisen eines Schlüssels an einen Benutzer finden Sie unter Schlüsselpaar-Authentifizierung und Schlüsselpaar-Rotation.

  2. Verwenden Sie SnowSQL, um zu überprüfen, ob Sie den generierten privaten Schlüssel verwenden können, um eine Verbindung zu Snowflake herzustellen:

    $ snowsql -a <account_identifier> -u <user> --private-key-path <path>/rsa_key.p8
    
    Copy

    Wenn Sie einen verschlüsselten privaten Schlüssel generiert haben, fordert SnowSQL Sie zur Eingabe der Passphrase auf, die Sie beim Generieren des Schlüssels erstellt haben.

Ein JWT-Token generieren

Um ein JWT-Token in Ihrem Anwendungscode zu generieren, führen Sie die folgenden Schritte aus:

  1. Generieren Sie den Fingerabdruck (einen SHA-256-Hash) des öffentlichen Schlüssels für den Benutzer. Stellen Sie dem Fingerabdruck das Präfix SHA256: voran.

    Beispiel:

    SHA256:hash

    Sie können auch den SQL-Befehl DESCRIBE USER ausführen, um den Wert aus der Eigenschaft RSA_PUBLIC_KEY_FP abzurufen.

  2. Generieren Sie ein JSON Web Token (JWT) mit den folgenden Feldern in der Nutzlast (Payload):

    Feld

    Beschreibung

    Beispiel

    iss

    Aussteller des JWT. Setzen Sie dies auf den folgenden Wert:

    account_identifier.user.SHA256:public_key_fingerprint

    Wobei:

    • account_identifier ist Ihr Snowflake-Kontobezeichner.

      Wenn Sie den Konto-Locator verwenden, schließen Sie alle Regionsinformationen aus dem Konto-Locator aus.

    • user ist Ihr Snowflake-Benutzername.

    • SHA256:public_key_fingerprint ist der Fingerabdruck, den Sie im vorherigen Schritt generiert haben.

    Bemerkung

    Für die Werte account_identifier und user dürfen nur Großbuchstaben verwendet werden.

    MYORGANIZATION-MYACCOUNT.MYUSER.SHA256:public_key_fingerprint

    sub

    Subjekt des JWT. Setzen Sie dies auf den folgenden Wert:

    account_identifier.user

    MYORGANIZATION-MYACCOUNT.MYUSER

    iat

    Ausstellungszeit des JWT in UTC. Setzen Sie den Wert auf den aktuellen Zeitwert, entweder in Sekunden oder Millisekunden.

    1615370644 (Sekunden) . 1615370644000 (Millisekunden)

    exp

    Ablaufzeit des JWT in UTC. Sie können den Wert entweder in Sekunden oder Millisekunden angeben.

    Bemerkung

    Hinweis: Das JWT ist maximal eine Stunde nach Ausstellung des Tokens gültig, auch wenn Sie eine längere Ablaufzeit angeben.

    1615374184 (Sekunden) . 1615374184000 (Millisekunden)

  3. Legen Sie in jeder API-Anforderung, die Sie senden, die folgenden Header fest:

    • Authorization: Bearer JWT

      wobei JWT das Token ist, das Sie generiert haben.

    • X-Snowflake-Authorization-Token-Type: KEYPAIR_JWT

Verwenden von OAuth

Um OAuth zu verwenden, führen Sie die folgenden Schritte aus:

  1. Richten Sie OAuth für die Authentifizierung ein.

    Weitere Informationen zum Einrichten von OAuth und Abrufen eines OAuth-Tokens finden Sie unter Einführung in OAuth.

  2. Verwenden Sie SnowSQL, um zu überprüfen, ob Sie ein generiertes OAuth-Token für die Verbindung mit Snowflake verwenden können:

    • Für Linux- und MacOS-Systeme

    $ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token=<oauth_token>
    
    Copy
    • Für Windows-Systeme

    $ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token="<oauth_token>"
    
    Copy
  3. Legen Sie in jeder API-Anforderung, die Sie senden, die folgenden Header fest:

    • Authorization: Bearer oauth_token

      Wobei oauth_token das generierte OAuth-Token ist.

    • X-Snowflake-Authorization-Token-Type: OAUTH