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:
Einstellung der Schlüsselpaar-Authentifizierung¶
Um die Schlüsselpaar-Authentifizierung zu verwenden, führen Sie die folgenden Schritte aus:
Richten Sie die Schlüsselpaar-Authentifizierung ein.
Als Teil dieses Prozesses müssen Sie Folgendes tun:
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
).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.
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
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:
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.
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
unduser
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)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:
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.
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>
Für Windows-Systeme
$ snowsql -a <account_identifier> -u <user> --authenticator=oauth --token="<oauth_token>"
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