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à.
Autenticazione 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 memorizzazione delle 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
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.
-
AWS Secrets Manager accesso per creare e gestire segreti.
-
Browser Web per completare il OAuth flusso per l' OAuth autenticazione.
Configura 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. AWS Secrets Manager I seguenti passaggi ti guideranno nella creazione delle chiavi crittografiche, nell'impostazione delle autorizzazioni Snowflake necessarie e nella configurazione delle credenziali per un'autenticazione senza interruzioni. AWS
Genera una coppia di chiavi RSA
Genera una coppia di key pair privata e pubblica usando OpenSSL.
-
Per generare una versione non crittografata, usa 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, utilizzate 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
Non condividete la vostra chiave privata. La chiave privata deve essere accessibile solo all'applicazione che deve autenticarsi con Snowflake.
-
Estrai 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'
Salva questo output poiché ti servirà più avanti nel passaggio successivo.
-
Configura l'utente Snowflake
Segui questi passaggi per configurare un utente Snowflake.
-
Crea 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 WAREHOUSEyour_warehouse
TO ROLEathena_connector_role
; GRANT USAGE ON DATABASEyour_database
TO ROLEathena_connector_role
; GRANT SELECT ON ALL TABLES IN DATABASEyour_database
TO ROLEathena_connector_role
; Concedi i privilegi di autenticazione. Per assegnare una chiave pubblica a un utente, è necessario disporre di uno dei seguenti ruoli o privilegi.
-
Il
OWNERSHIP
privilegioMODIFY PROGRAMMATIC AUTHENTICATION METHODS
or sull'utente. -
Il
SECURITYADMIN
ruolo o il livello superiore.
Concedi i privilegi necessari per assegnare le chiavi pubbliche con il seguente comando.
GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER
athena_connector_user
TO ROLEyour_admin_role
;-
-
Assegna la chiave pubblica all'utente Snowflake con il seguente comando.
ALTER USER
athena_connector_user
SET RSA_PUBLIC_KEY='RSAkey
';Verificate che la chiave pubblica sia stata assegnata correttamente all'utente con il seguente comando.
DESC USER
athena_connector_user
;
-
Memorizza la chiave privata in AWS Secrets Manager
Converti la tua chiave privata nel formato richiesto dal connettore.
# Read private key content cat rsa_key.p8
-
Crea un account segreto AWS Secrets Manager 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 sicuro e basato su token a Snowflake 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 credenziali per l'utilizzo da parte del connettore. OAuth AWS Secrets Manager
Crea 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'
— Imposta 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).
-
Recupera i segreti OAuth del cliente
-
Esegui il seguente comando SQL per ottenere le credenziali del client.
DESC SECURITY INTEGRATION '
MY_SNOWFLAKE_OAUTH_INTEGRATION_A
'; Recupera i segreti del OAuth client.
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('
MY_SNOWFLAKE_OAUTH_INTEGRATION_A
');Example response
{ "OAUTH_CLIENT_SECRET_2": "
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
", "OAUTH_CLIENT_SECRET": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
, "OAUTH_CLIENT_ID": "AIDACKCEVSQ6C2EXAMPLE
" }
Nota
Mantieni queste credenziali al sicuro e non condividerle. Queste verranno utilizzate per configurare il OAuth client.
-
Autorizza l'utente e recupera il codice di autorizzazione
Apri 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/callbackCompleta il flusso di autorizzazione.
-
Accedi utilizzando le tue credenziali Snowflake.
-
Concedi le autorizzazioni richieste. Verrai reindirizzato all'URI di callback con un codice di autorizzazione.
-
Estrai 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.
Memorizza OAuth le credenziali in AWS Secrets Manager
Crea un account segreto AWS Secrets Manager 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 che hai 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 hai ottenuto allo Step 3.
-
Dopo aver creato un segreto, ottieni un ARN segreto che puoi usare nella tua connessione Glue quando crei una connessione a una sorgente dati.