Schlüsselpaar-Authentifizierung und Schlüsselpaar-Rotation¶
Unter diesem Thema wird die Verwendung der Schlüsselpaar-Authentifizierung und der Schlüsselpaar-Rotation in Snowflake beschrieben.
Unter diesem Thema:
Konfigurieren der Schlüsselpaar-Authentifizierung
Schritt 3: Private und öffentliche Schlüssel sicher speichern
Schritt 4: Snowflake-Benutzern einen öffentlichen Schlüssel zuweisen
Schritt 5: Fingerabdruck des öffentlichen Schlüssels des Benutzers verifizieren
Schritt 6: Snowflake-Client für Verwendung der Schlüsselpaar-Authentifizierung konfigurieren
Übersicht¶
Snowflake unterstützt die Verwendung der Schlüsselpaar-Authentifizierung für eine erweiterte Authentifizierungssicherheit als Alternative zur Basisauthentifizierung (d. h. Benutzername und Kennwort).
Diese Authentifizierungsmethode erfordert mindestens ein 2048-Bit-RSA-Schlüsselpaar. Sie können das Privacy Enhanced Mail (PEM)-Private/Public-Schlüsselpaar unter Verwendung von OpenSSL generieren. Einige der unterstützten Snowflake-Clients erlauben die Verwendung verschlüsselter privater Schlüssel zur Verbindung mit Snowflake. Der öffentliche Schlüssel wird dem Snowflake-Benutzer zugewiesen, der den Snowflake-Client zum Verbinden und Authentifizieren bei Snowflake verwendet.
Snowflake unterstützt auch rotierende öffentliche Schlüssel, um die Einhaltung von robusteren Sicherheits- und Governance-Strukturen zu ermöglichen.
Unterstützte Snowflake-Clients¶
Die folgende Tabelle fasst die Unterstützung der Schlüsselpaar-Authentifizierung zwischen Snowflake-Clients zusammen. Ein Häkchen (d. h. ✔) bedeutet volle Unterstützung. Ein fehlendes Häkchen bedeutet, dass die Schlüsselpaar-Authentifizierung nicht unterstützt wird.
Client |
Schlüsselpaar-Authentifizierung |
Schlüsselpaar-Rotation |
Unverschlüsselte private Schlüssel |
|
---|---|---|---|---|
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
|||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
||
✔ |
✔ |
✔ |
Konfigurieren der Schlüsselpaar-Authentifizierung¶
Führen Sie die folgenden Schritte aus, um die Schlüsselpaar-Authentifizierung für alle unterstützten Snowflake-Clients zu konfigurieren.
Schritt 1: Privaten Schlüssel generieren¶
Je nachdem, welchen der unterstützten Snowflake-Clients Sie zur Verbindung mit Snowflake verwenden, haben Sie die Möglichkeit, verschlüsselte oder unverschlüsselte private Schlüssel zu generieren. Generell ist es sicherer, verschlüsselte Schlüssel zu generieren. Snowflake empfiehlt, vor diesem Schritt mit Ihren internen Sicherheits- und Governance-Beauftragten zu besprechen, welcher Schlüsseltyp generiert werden soll.
Tipp
Der Befehl zum Generieren eines verschlüsselten Schlüssels fordert zur Eingabe einer Passphrase auf, um den Zugriff auf den Schlüssel zu regeln. Snowflake empfiehlt die Verwendung einer Passphrase, die den PCI-DSS-Standards entspricht, um den lokal generierten privaten Schlüssel zu schützen. Zusätzlich empfiehlt Snowflake, die Passphrase an einem sicheren Ort zu speichern. Wenn Sie für die Verbindung mit Snowflake einen verschlüsselten Schlüssel verwenden, geben Sie die Passphrase während der erstmaligen Verbindung ein. Beachten Sie, dass die Passphrase nur zum Schutz des privaten Schlüssels verwendet wird und niemals an Snowflake gesendet wird.
So Generieren Sie eine lange und komplexe Passphrase basierend auf PCI-DSS-Standards:
Greifen Sie auf die Dokumentbibliothek für PCI-Sicherheitsstandards zu.
Wählen Sie für PCI DSS die neueste Version und die gewünschte Sprache aus.
Füllen Sie das Formular aus, um auf das Dokument zuzugreifen.
Suchen Sie nach
Passwords/passphrases must meet the following:
, und befolgen Sie die Empfehlungen zu Anforderungen, Tests und Anleitungen für Kennwörter/Passphrasen. Je nach Dokumentversion befindet sich die Phrase wahrscheinlich in einem Abschnitt namensRequirement 8: Identify and authenticate access to system components
(oder einem ähnlichen Namen).
Öffnen Sie zunächst ein Terminalfenster, und generieren Sie 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 -v2 des3 -inform PEM -out rsa_key.p8
Die Befehle generieren einen privaten Schlüssel im PEM-Format.
-----BEGIN ENCRYPTED PRIVATE KEY----- MIIE6TAbBgkqhkiG9w0BBQMwDgQILYPyCppzOwECAggABIIEyLiGSpeeGSe3xHP1 wHLjfCYycUPennlX2bd8yX8xOxGSGfvB+99+PmSlex0FmY9ov1J8H1H9Y3lMWXbL ... -----END ENCRYPTED PRIVATE KEY-----
Schritt 2: Öffentlichen Schlüssel generieren¶
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
, dann verwenden Sie den folgenden Befehl:
$ openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
Der Befehl generiert den öffentlichen Schlüssel im PEM-Format.
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy+Fw2qv4Roud3l6tjPH4 zxybHjmZ5rhtCz9jppCV8UTWvEXxa88IGRIHbJ/PwKW/mR8LXdfI7l/9vCMXX4mk ... -----END PUBLIC KEY-----
Schritt 3: Private und öffentliche Schlüssel sicher speichern¶
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.
Dennoch sollte die Datei mit dem vom Betriebssystem bereitgestellten Dateiberechtigungsmechanismus vor unberechtigtem Zugriff geschützt werden. Es liegt in Ihrer Verantwortung, die Datei zu sichern, wenn sie nicht verwendet wird.
Schritt 4: Snowflake-Benutzern einen öffentlichen Schlüssel zuweisen¶
Führen Sie einen Befehl ALTER USER aus, um dem Snowflake-Benutzer den öffentlichen Schlüssel zuzuweisen.
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 Trennzeichen für den öffentlichen Schlüssel aus der SQL-Anweisung aus.
Schritt 5: Fingerabdruck des öffentlichen Schlüssels des Benutzers verifizieren¶
Führen Sie einen DESCRIBE USER-Befehl aus, um den öffentlichen Schlüssel des Benutzers zu verifizieren.
DESC USER jsmith; +---------------------+-----------------------------------------------------+---------+----------------------------------------------+ | property | value | default | description | +---------------------+-----------------------------------------------------+---------+----------------------------------------------+ | NAME | JSMITH | null | Name | ... ... | RSA_PUBLIC_KEY | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA... | null | RSA public key of the user | | RSA_PUBLIC_KEY_FP | SHA256:nvnONUsfiuycCLMXIEWG4eTp4FjhVUZQUQbNpbSHXiA= | null | Fingerprint of user's RSA public key. | | RSA_PUBLIC_KEY_2 | null | null | Second RSA public key of the user | | RSA_PUBLIC_KEY_2_FP | null | null | Fingerprint of user's second RSA public key. | ... +---------------------+-----------------------------------------------------+---------+----------------------------------------------+
Schritt 6: Snowflake-Client für Verwendung der Schlüsselpaar-Authentifizierung konfigurieren¶
Aktualisieren Sie den Client, um die Schlüsselpaar-Authentifizierung für die Verbindung mit Snowflake zu verwenden.
Konfigurieren der Schlüsselpaar-Rotation¶
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.
Führen Sie die folgenden Schritte aus, um die Schlüsselpaar-Rotation zu konfigurieren und die Rotation Ihrer Schlüssel auszuführen.
Führen Sie alle Schritte in Konfigurieren der Schlüsselpaar-Authentifizierung mit den folgenden Aktualisierungen aus:
Neuen Private/Public-Schlüsselsatz generieren
Zuweisen des öffentlichen Schlüssels an einen Benutzer Setzen Sie den Wert des öffentlichen Schlüssels entweder auf
RSA_PUBLIC_KEY
oderRSA_PUBLIC_KEY_2
(je nachdem, welcher Schlüsselwert gerade nicht verwendet wird). Beispiel:alter user jsmith set rsa_public_key_2='JERUEHtcve...';
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.
Entfernen Sie mit dem Befehl ALTER USER den alten öffentlichen Schlüssel aus dem Benutzerprofil.
alter user jsmith unset rsa_public_key;