Authentifizieren Sie sich mit Snowflake - Amazon Athena

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Authentifizieren Sie sich mit Snowflake

Sie können den Amazon Athena Snowflake-Connector so konfigurieren, dass er entweder die Schlüsselpaar-Authentifizierung oder die OAuth Authentifizierungsmethode verwendet, um eine Verbindung zu Ihrem Snowflake-Data Warehouse herzustellen. Beide Methoden bieten sicheren Zugriff auf Snowflake und machen das Speichern von Passwörtern in Verbindungszeichenfolgen überflüssig.

  • Schlüsselpaar-Authentifizierung — Diese Methode verwendet öffentliche oder private RSA-Schlüsselpaare zur Authentifizierung bei Snowflake. Der private Schlüssel signiert Authentifizierungsanfragen digital, während der entsprechende öffentliche Schlüssel zur Überprüfung in Snowflake registriert wird. Diese Methode macht die Speicherung von Passwörtern überflüssig.

  • OAuth Authentifizierung — Diese Methode verwendet das Autorisierungstoken und das Aktualisierungstoken zur Authentifizierung bei Snowflake. Sie unterstützt die automatische Token-Aktualisierung und ist somit für Anwendungen mit langer Laufzeit geeignet.

Weitere Informationen finden Sie unter Schlüsselpaar-Authentifizierung und OAuth Authentifizierung im Snowflake-Benutzerhandbuch.

Voraussetzungen

Stellen Sie vor Beginn sicher, dass die folgenden Voraussetzungen erfüllt sind:

  • Zugriff auf das Snowflake-Konto mit Administratorrechten.

  • Snowflake-Benutzerkonto für den Athena-Connector.

  • OpenSSL oder gleichwertige Tools zur Schlüsselgenerierung für die Schlüsselpaar-Authentifizierung.

  • AWS Secrets Manager Zugriff zur Erstellung und Verwaltung von Geheimnissen.

  • Webbrowser, um den OAuth Ablauf für die OAuth Authentifizierung abzuschließen.

Konfigurieren Sie die Schlüsselpaar-Authentifizierung

Dieser Vorgang umfasst die Generierung eines RSA-Schlüsselpaars, die Konfiguration Ihres Snowflake-Kontos mit dem öffentlichen Schlüssel und die sichere Speicherung des privaten Schlüssels in. AWS Secrets Manager Die folgenden Schritte führen Sie durch die Erstellung der kryptografischen Schlüssel, die Einrichtung der erforderlichen Snowflake-Berechtigungen und die Konfiguration der Anmeldeinformationen für eine nahtlose Authentifizierung. AWS

  1. Generieren Sie ein RSA-Schlüsselpaar

    Generieren Sie mit OpenSSL ein privates und ein öffentliches key pair.

    • Um eine unverschlüsselte Version zu generieren, verwenden Sie den folgenden Befehl in Ihrer lokalen Befehlszeilenanwendung.

      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, der auslässt. -nocrypt

      openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
    • Um einen öffentlichen Schlüssel aus einem privaten Schlüssel zu generieren.

      openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub # Set appropriate permissions (Unix/Linux) chmod 600 rsa_key.p8 chmod 644 rsa_key.pub
    Anmerkung

    Teilen Sie Ihren privaten Schlüssel nicht mit anderen. Der private Schlüssel sollte nur für die Anwendung zugänglich sein, die sich bei Snowflake authentifizieren muss.

  2. Extrahieren Sie den Inhalt öffentlicher Schlüssel ohne Trennzeichen für Snowflake

    # Extract public key content (remove BEGIN/END lines and newlines) cat rsa_key.pub | grep -v "BEGIN\|END" | tr -d '\n'

    Speichern Sie diese Ausgabe, da Sie sie später im nächsten Schritt benötigen werden.

  3. Snowflake-Benutzer konfigurieren

    Gehen Sie wie folgt vor, um einen Snowflake-Benutzer zu konfigurieren.

    1. Erstellen Sie einen dedizierten Benutzer für den Athena-Connector, falls er noch nicht existiert.

      -- Create user for Athena connector CREATE USER athena_connector_user; -- Grant necessary privileges GRANT USAGE ON WAREHOUSE your_warehouse TO ROLE athena_connector_role; GRANT USAGE ON DATABASE your_database TO ROLE athena_connector_role; GRANT SELECT ON ALL TABLES IN DATABASE your_database TO ROLE athena_connector_role;
    2. Gewähren Sie Authentifizierungsberechtigungen. Um einem Benutzer einen öffentlichen Schlüssel zuzuweisen, müssen Sie über eine der folgenden Rollen oder Berechtigungen verfügen.

      • Das OWNERSHIP Recht MODIFY PROGRAMMATIC AUTHENTICATION METHODS oder für den Benutzer.

      • Die SECURITYADMIN Rolle oder höher.

      Erteilen Sie mit dem folgenden Befehl die erforderlichen Rechte, um öffentliche Schlüssel zuzuweisen.

      GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER athena_connector_user TO ROLE your_admin_role;
    3. Weisen Sie dem Snowflake-Benutzer den öffentlichen Schlüssel mit dem folgenden Befehl zu.

      ALTER USER athena_connector_user SET RSA_PUBLIC_KEY='RSAkey';

      Stellen Sie mit dem folgenden Befehl sicher, dass der öffentliche Schlüssel dem Benutzer erfolgreich zugewiesen wurde.

      DESC USER athena_connector_user;
  4. Speichern Sie den privaten Schlüssel in AWS Secrets Manager

    1. Konvertieren Sie Ihren privaten Schlüssel in das vom Connector benötigte Format.

      # Read private key content cat rsa_key.p8
    2. Erstellen Sie ein Geheimnis AWS Secrets Manager mit der folgenden Struktur.

      { "sfUser": "your_snowflake_user", "pem_private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", "pem_private_key_passphrase": "passphrase_in_case_of_encrypted_private_key(optional)" }
      Anmerkung
      • Kopf- und Fußzeile sind optional.

      • Der private Schlüssel muss durch \n getrennt werden.

Konfigurieren Sie die OAuth Authentifizierung

Diese Authentifizierungsmethode ermöglicht einen sicheren, tokenbasierten Zugriff auf Snowflake mit Funktionen zur automatischen Aktualisierung der Anmeldeinformationen. Der Konfigurationsprozess umfasst die Erstellung einer Sicherheitsintegration in Snowflake, das Abrufen von OAuth Client-Anmeldeinformationen, das Abschließen des Autorisierungsvorgangs zum Abrufen eines Zugangscodes und das Speichern der Anmeldeinformationen für die Verwendung durch den OAuth Connector. AWS Secrets Manager

  1. Erstellen Sie eine Sicherheitsintegration in Snowflake

    Führen Sie den folgenden SQL-Befehl in Snowflake aus, um eine Snowflake-Sicherheitsintegration zu erstellen. OAuth

    CREATE SECURITY INTEGRATION my_snowflake_oauth_integration_a TYPE = OAUTH ENABLED = TRUE OAUTH_CLIENT = CUSTOM OAUTH_CLIENT_TYPE = 'CONFIDENTIAL' OAUTH_REDIRECT_URI = 'https://localhost:8080/oauth/callback' OAUTH_ISSUE_REFRESH_TOKENS = TRUE OAUTH_REFRESH_TOKEN_VALIDITY = 7776000;

    Konfigurationsparameter

    • TYPE = OAUTH— Gibt den OAuth Authentifizierungstyp an.

    • ENABLED = TRUE— Aktiviert die Sicherheitsintegration.

    • OAUTH_CLIENT = CUSTOM— Verwendet eine benutzerdefinierte OAuth Client-Konfiguration.

    • OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'— Legt den Clienttyp für sichere Anwendungen fest.

    • OAUTH_REDIRECT_URI— Die Callback-URL für OAuth Flow. Es kann localhost zum Testen sein.

    • OAUTH_ISSUE_REFRESH_TOKENS = TRUE— Aktiviert die Generierung von Aktualisierungstoken.

    • OAUTH_REFRESH_TOKEN_VALIDITY = 7776000— Legt die Gültigkeit des Aktualisierungstokens fest (90 Tage in Sekunden).

  2. Ruft OAuth Kundengeheimnisse ab

    1. Führen Sie den folgenden SQL-Befehl aus, um die Client-Anmeldeinformationen abzurufen.

      DESC SECURITY INTEGRATION 'MY_SNOWFLAKE_OAUTH_INTEGRATION_A';
    2. Rufen Sie die OAuth Client-Geheimnisse ab.

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('MY_SNOWFLAKE_OAUTH_INTEGRATION_A');

      Beispielantwort

      { "OAUTH_CLIENT_SECRET_2": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "OAUTH_CLIENT_SECRET": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY, "OAUTH_CLIENT_ID": "AIDACKCEVSQ6C2EXAMPLE" }
    Anmerkung

    Bewahren Sie diese Anmeldeinformationen sicher auf und geben Sie sie nicht weiter. Diese werden zur Konfiguration des OAuth Clients verwendet.

  3. Benutzer autorisieren und Autorisierungscode abrufen

    1. Öffnen Sie die folgende URL in einem Browser.

      https://<your_account>.snowflakecomputing.com/oauth/authorize?client_id=<OAUTH_CLIENT_ID>&response_type=code&redirect_uri=https://localhost:8080/oauth/callback
    2. Schließen Sie den Autorisierungsablauf ab.

      1. Melden Sie sich mit Ihren Snowflake-Anmeldeinformationen an.

      2. Erteilen Sie die angeforderten Berechtigungen. Sie werden mit einem Autorisierungscode zur Callback-URI weitergeleitet.

    3. Extrahieren Sie den Autorisierungscode, indem Sie den Codeparameter aus der Umleitungs-URL kopieren.

      https://localhost:8080/oauth/callback?code=<authorizationcode>
      Anmerkung

      Der Autorisierungscode ist für eine begrenzte Zeit gültig und kann nur einmal verwendet werden.

  4. Speichern Sie die OAuth Anmeldeinformationen in AWS Secrets Manager

    Erstellen Sie ein Secret in AWS Secrets Manager mit der folgenden Struktur.

    { "redirect_uri": "https://localhost:8080/oauth/callback", "client_secret": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "token_url": "https://<your_account>.snowflakecomputing.com/oauth/token-request", "client_id": "AIDACKCEVSQ6C2EXAMPLE, "username": "your_snowflake_username", "auth_code": "authorizationcode" }

    Pflichtfelder

    • redirect_uri— OAuth leitet die URI weiter, die Sie in Schritt 1 erhalten haben.

    • client_secret— OAuth Client-Schlüssel, den Sie in Schritt 2 erhalten haben.

    • token_url— Snowflake Der OAuth Token-Endpunkt.

    • client_id— Die OAuth Client-ID aus Schritt 2.

    • username— Der Snowflake-Benutzername für den Connector.

    • auth_code— Der Autorisierungscode, den Sie in Schritt 3 erhalten haben.

Nachdem Sie ein Geheimnis erstellt haben, erhalten Sie einen geheimen ARN, den Sie in Ihrer Glue-Verbindung verwenden können, wenn Sie eine Datenquellenverbindung erstellen.