View a markdown version of this page

Autenticare con Snowflake - Amazon Athena

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Autenticare con Snowflake

Puoi configurare il connettore Amazon Athena Snowflake per utilizzare l'autenticazione a coppia di chiavi o il metodo di autenticazione per connetterti al tuo data OAuth warehouse Snowflake. Entrambi i metodi forniscono un accesso sicuro a Snowflake ed eliminano la necessità di memorizzare le password nelle stringhe di connessione.

  • Autenticazione con coppia di chiavi: questo metodo utilizza coppie di chiavi pubbliche o private RSA per l’autenticazione con Snowflake. La chiave privata firma digitalmente le richieste di autenticazione mentre la chiave pubblica corrispondente viene registrata in Snowflake per la verifica. Questo metodo elimina la necessità di memorizzare le password.

  • OAuth autenticazione: questo metodo utilizza il token di autorizzazione e il token di aggiornamento per l'autenticazione con Snowflake. Supporta l’aggiornamento automatico dei token, rendendolo adatto per applicazioni a lunga durata.

Per ulteriori informazioni, consulta l'autenticazione e l'autenticazione a coppie di chiavi nella guida per l'utente di OAuth Snowflake.

Prerequisiti

Prima di iniziare, completa i seguenti prerequisiti:

  • Accesso all’account Snowflake con privilegi amministrativi.

  • Account utente Snowflake dedicato al connettore Athena.

  • OpenSSL o strumenti equivalenti per la generazione di chiavi per l’autenticazione a coppie di chiavi.

  • Gestione dei segreti AWS accesso per creare e gestire segreti.

  • Browser Web per completare il OAuth flusso di OAuth autenticazione.

Configurare l’autenticazione tramite coppia di chiavi

Questo processo prevede la generazione di una coppia di chiavi RSA, la configurazione dell’account Snowflake con la chiave pubblica e l’archiviazione sicura della chiave privata in Gestione dei segreti AWS. I seguenti passaggi ti guideranno nella creazione delle chiavi crittografiche, nell'impostazione delle autorizzazioni Snowflake necessarie e nella configurazione AWS delle credenziali per un'autenticazione senza interruzioni.

  1. Generare una coppia di chiavi RSA

    Generare una coppia di chiavi privata e pubblica usando OpenSSL.

    • Per generare una versione non crittografata, usare il seguente comando nell’applicazione a riga di comando locale.

      openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
    • Per generare una versione crittografata, utilizzare il seguente comando, che omette -nocrypt.

      openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
    • Per generare una chiave pubblica da una chiave privata.

      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
    Nota

    Si raccomanda di non condividere la propria chiave privata. La chiave privata deve essere accessibile solo all’applicazione che deve autenticarsi con Snowflake.

  2. Estrarre il contenuto della chiave pubblica senza delimitatori per Snowflake

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

    Salvare l’output poiché sarà necessario nella fase successiva.

  3. Configurare l’utente Snowflake

    Per configurare un account utente Snowflake, seguire la procedura illustrata qui.

    1. Creare un utente dedicato per il connettore Athena se non esiste già.

      -- 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. Concedere i privilegi di autenticazione. Per assegnare una chiave pubblica a un utente, è necessario disporre di uno dei seguenti ruoli o privilegi.

      • Il privilegio MODIFY PROGRAMMATIC AUTHENTICATION METHODS o OWNERSHIP sull’utente.

      • Il ruolo SECURITYADMIN o il livello superiore.

      Concedere i privilegi necessari per l’assegnazione delle chiavi pubbliche tramite il seguente comando.

      GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER athena_connector_user TO ROLE your_admin_role;
    3. Assegnare la chiave pubblica all’account utente Snowflake con il seguente comando.

      ALTER USER athena_connector_user SET RSA_PUBLIC_KEY='RSAkey';

      Verificare che la chiave pubblica sia stata assegnata correttamente all’utente con il seguente comando.

      DESC USER athena_connector_user;
  4. Memorizza la chiave privata in Gestione dei segreti AWS

    1. Convertire la chiave privata nel formato richiesto dal connettore.

      # Read private key content cat rsa_key.p8
    2. Crea un account segreto Gestione dei segreti AWS con la seguente struttura.

      { "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)" }
      Nota
      • L’intestazione e il piè di pagina sono opzionali.

      • La chiave privata deve essere separata da \n.

Configura OAuth l'autenticazione

Questo metodo di autenticazione consente un accesso a Snowflake sicuro e basato su token, con funzionalità di aggiornamento automatico delle credenziali. Il processo di configurazione prevede la creazione di un'integrazione di sicurezza in Snowflake, il recupero delle credenziali OAuth del client, il completamento del flusso di autorizzazione per ottenere un codice di accesso e l'archiviazione delle OAuth credenziali da utilizzare nel Gestione dei segreti AWS connettore.

  1. Creare un'integrazione di sicurezza in Snowflake

    Esegui il seguente comando SQL in Snowflake per creare un'integrazione di sicurezza Snowflake. 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;

    Parametri di configurazione

    • TYPE = OAUTH— specifica il tipo di OAuth autenticazione.

    • ENABLED = TRUE: abilita l’integrazione della sicurezza.

    • OAUTH_CLIENT = CUSTOM— Utilizza una configurazione OAuth client personalizzata.

    • OAUTH_CLIENT_TYPE = 'CONFIDENTIAL': impostare il tipo di client per applicazioni sicure.

    • OAUTH_REDIRECT_URI— L'URL di callback per OAuth flow. Può essere localhost per i test.

    • OAUTH_ISSUE_REFRESH_TOKENS = TRUE: abilita la generazione di token di aggiornamento.

    • OAUTH_REFRESH_TOKEN_VALIDITY = 7776000: imposta la validità del token di aggiornamento (90 giorni in secondi).

  2. Recupera i segreti OAuth del cliente

    1. Eseguire il seguente comando, per ottenere queste credenziali.

      DESC SECURITY INTEGRATION 'MY_SNOWFLAKE_OAUTH_INTEGRATION_A';
    2. Recupera i segreti del OAuth cliente.

      SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('MY_SNOWFLAKE_OAUTH_INTEGRATION_A');

      Esempio di risposta

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

    Mantenere queste credenziali al sicuro e non condividerle. Questi verranno utilizzati per configurare il OAuth client.

  3. Autorizzare l’utente e recuperare il codice di autorizzazione

    1. Aprire il seguente URL in un browser.

      https://<your_account>.snowflakecomputing.com/oauth/authorize?client_id=<OAUTH_CLIENT_ID>&response_type=code&redirect_uri=https://localhost:8080/oauth/callback
    2. Completare il flusso di autorizzazione.

      1. Accedere usando le credenziali Snowflake.

      2. Concedere le autorizzazioni richieste. Si verrà reindirizzati all’URI di callback con un codice di autorizzazione.

    3. Estrarre il codice di autorizzazione copiando il parametro code dall’URL di reindirizzamento.

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

      Il codice di autorizzazione è valido per un periodo di tempo limitato e può essere utilizzato una sola volta.

  4. Memorizza OAuth le credenziali in Gestione dei segreti AWS

    Crea un account segreto Gestione dei segreti AWS con la seguente struttura.

    { "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" }

    Campi obbligatori

    • redirect_uri— URI di OAuth reindirizzamento ottenuto dal passaggio 1.

    • client_secret— segreto OAuth del cliente ottenuto dalla Fase 2.

    • token_url— Snowflake L'endpoint del OAuth token.

    • client_id— L'ID OAuth client del passaggio 2.

    • username: il nome utente Snowflake per il connettore.

    • auth_code: il codice di autorizzazione che ottenuto al passaggio 3.

Dopo aver creato un segreto, si ottiene un ARN segreto che è possibile usare nella propria connessione Glue quando si crea una connessione a un’origine dati.