Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Authentifiez-vous avec Snowflake
Vous pouvez configurer le connecteur Amazon Athena Snowflake pour utiliser l'authentification par paire de clés ou la méthode d'authentification pour vous connecter à votre entrepôt de OAuth données Snowflake. Les deux méthodes fournissent un accès sécurisé à Snowflake et éliminent le besoin de stocker les mots de passe dans des chaînes de connexion.
-
Authentification par paire de clés — Cette méthode utilise des paires de clés publiques ou privées RSA pour s'authentifier auprès de Snowflake. La clé privée signe numériquement les demandes d'authentification tandis que la clé publique correspondante est enregistrée dans Snowflake pour vérification. Cette méthode élimine le stockage des mots de passe.
-
OAuth authentification — Cette méthode utilise un jeton d'autorisation et un jeton d'actualisation pour s'authentifier auprès de Snowflake. Il prend en charge l'actualisation automatique des jetons, ce qui le rend adapté aux applications de longue durée.
Pour plus d'informations, consultez les sections Authentification et OAuth authentification
Prérequis
Avant de commencer, effectuez les opérations obligatoires suivantes :
-
Accès au compte Snowflake avec privilèges administratifs.
-
Compte utilisateur Snowflake dédié au connecteur Athena.
-
OpenSSL ou outils de génération de clés équivalents pour l'authentification par paire de clés.
-
AWS Secrets Manager accès pour créer et gérer des secrets.
-
Navigateur Web pour terminer OAuth le processus d' OAuth authentification.
Configuration de l'authentification par paire de clés
Ce processus implique la génération d'une paire de clés RSA, la configuration de votre compte Snowflake avec la clé publique et le stockage sécurisé de la clé privée. AWS Secrets Manager Les étapes suivantes vous guideront dans la création des clés cryptographiques, la configuration des autorisations Snowflake nécessaires et la configuration des AWS informations d'identification pour une authentification fluide.
Générer une paire de clés RSA
Générez une paire de clés privées et publiques à l'aide d'OpenSSL.
-
Pour générer une version non chiffrée, utilisez la commande suivante dans votre application de ligne de commande locale.
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
-
Pour générer une version cryptée, utilisez la commande suivante, qui est omise
-nocrypt
.openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out rsa_key.p8
-
Pour générer une clé publique à partir d'une clé privée.
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
Note
Ne partagez pas votre clé privée. La clé privée ne doit être accessible qu'à l'application qui doit s'authentifier auprès de Snowflake.
-
Extraire le contenu de la clé publique sans délimiteurs pour Snowflake
# Extract public key content (remove BEGIN/END lines and newlines) cat rsa_key.pub | grep -v "BEGIN\|END" | tr -d '\n'
Enregistrez cette sortie car vous en aurez besoin ultérieurement à l'étape suivante.
-
Configurer l'utilisateur Snowflake
Suivez ces étapes pour configurer un utilisateur Snowflake.
-
Créez un utilisateur dédié pour le connecteur Athena s'il n'existe pas déjà.
-- 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
; Accordez des privilèges d'authentification. Pour attribuer une clé publique à un utilisateur, vous devez disposer de l'un des rôles ou privilèges suivants.
-
Le
OWNERSHIP
privilègeMODIFY PROGRAMMATIC AUTHENTICATION METHODS
or de l'utilisateur. -
Le
SECURITYADMIN
rôle ou un rôle supérieur.
Accordez les privilèges nécessaires pour attribuer des clés publiques à l'aide de la commande suivante.
GRANT MODIFY PROGRAMMATIC AUTHENTICATION METHODS ON USER
athena_connector_user
TO ROLEyour_admin_role
;-
-
Attribuez la clé publique à l'utilisateur Snowflake à l'aide de la commande suivante.
ALTER USER
athena_connector_user
SET RSA_PUBLIC_KEY='RSAkey
';Vérifiez que la clé publique est correctement attribuée à l'utilisateur à l'aide de la commande suivante.
DESC USER
athena_connector_user
;
-
Stocker la clé privée dans AWS Secrets Manager
Convertissez votre clé privée au format requis par le connecteur.
# Read private key content cat rsa_key.p8
-
Créez un secret AWS Secrets Manager avec la structure suivante.
{ "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)
" }Note
L'en-tête et le pied de page sont facultatifs.
La clé privée doit être séparée par
\n
.
Configuration de OAuth l'authentification
Cette méthode d'authentification permet un accès sécurisé basé sur des jetons à Snowflake avec des fonctionnalités d'actualisation automatique des informations d'identification. Le processus de configuration consiste à créer une intégration de sécurité dans Snowflake, à récupérer les informations d'identification du OAuth client, à terminer le flux d'autorisation pour obtenir un code d'accès et à stocker les OAuth informations d'identification AWS Secrets Manager pour que le connecteur puisse les utiliser.
Créez une intégration de sécurité dans Snowflake
Exécutez la commande SQL suivante dans Snowflake pour créer une intégration de sécurité OAuth Snowflake.
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;Paramètres de configuration
-
TYPE = OAUTH
— Spécifie le type OAuth d'authentification. -
ENABLED = TRUE
— Active l'intégration de la sécurité. -
OAUTH_CLIENT = CUSTOM
— Utilise une configuration OAuth client personnalisée. -
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
— Définit le type de client pour les applications sécurisées. -
OAUTH_REDIRECT_URI
— L'URL de rappel pour le OAuth flux. Il peut s'agir de localhost pour les tests. -
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
— Active la génération de jetons d'actualisation. -
OAUTH_REFRESH_TOKEN_VALIDITY = 7776000
— Définit la validité du jeton d'actualisation (90 jours en secondes).
-
Récupérez les secrets des OAuth clients
-
Exécutez la commande SQL suivante pour obtenir les informations d'identification du client.
DESC SECURITY INTEGRATION '
MY_SNOWFLAKE_OAUTH_INTEGRATION_A
'; Récupérez les secrets OAuth du client.
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('
MY_SNOWFLAKE_OAUTH_INTEGRATION_A
');Exemple de réponse
{ "OAUTH_CLIENT_SECRET_2": "
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
", "OAUTH_CLIENT_SECRET": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
, "OAUTH_CLIENT_ID": "AIDACKCEVSQ6C2EXAMPLE
" }
Note
Conservez ces informations d'identification en lieu sûr et ne les partagez pas. Ils seront utilisés pour configurer le OAuth client.
-
Autoriser l'utilisateur et récupérer le code d'autorisation
Ouvrez l'URL suivante dans un navigateur.
https://
<your_account>
.snowflakecomputing.com/oauth/authorize?client_id=<OAUTH_CLIENT_ID>
&response_type=code&redirect_uri=https://localhost:8080/oauth/callbackTerminez le flux d'autorisation.
-
Connectez-vous à l'aide de vos informations d'identification Snowflake.
-
Accordez les autorisations demandées. Vous serez redirigé vers l'URI de rappel avec un code d'autorisation.
-
Extrayez le code d'autorisation en copiant le paramètre de code depuis l'URL de redirection.
https://localhost:8080/oauth/callback?code=
<authorizationcode>
Note
Le code d'autorisation est valide pour une durée limitée et ne peut être utilisé qu'une seule fois.
Stockez les OAuth informations d'identification dans AWS Secrets Manager
Créez un secret AWS Secrets Manager avec la structure suivante.
{ "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
" }Champs obligatoires
-
redirect_uri
— OAuth redirige l'URI que vous avez obtenu à l'étape 1. -
client_secret
— secret OAuth client que vous avez obtenu à l'étape 2. -
token_url
— Snowflake Le point de terminaison du OAuth jeton. -
client_id
— L'ID OAuth client indiqué à l'étape 2. -
username
— Le nom d'utilisateur Snowflake pour le connecteur. -
auth_code
— Le code d'autorisation que vous avez obtenu à l'étape 3.
-
Après avoir créé un secret, vous obtenez un ARN secret que vous pouvez utiliser dans votre connexion Glue lorsque vous créez une connexion à une source de données.