Option 3 : Configuration des identifiants de connexion de l’utilisateur AWS IAM pour accéder à Amazon S3

Cette section décrit comment configurer une stratégie de sécurité pour un compartiment S3 et des identifiants de connexion d’un utilisateur IAM spécifique pour accéder à une zone de préparation externe de manière sécurisée.

Dans ce chapitre :

Étape 1 : Configuration d’une politique d’accès à un compartiment S3

Conditions de contrôle d’accès AWS

Snowflake requiert les autorisations suivantes sur un compartiment S3 et un dossier pour accéder aux fichiers dans le dossier (et tout sous-dossier) :

  • s3:GetBucketLocation

  • s3:GetObject

  • s3:GetObjectVersion

  • s3:ListBucket

Note

Les autorisations supplémentaires suivantes sont nécessaires pour effectuer des actions SQL supplémentaires :

Autorisation

Action SQL

s3:PutObject

Décharger les fichiers dans le compartiment.

s3:DeleteObject

Il est possible de purger automatiquement les fichiers de la zone de préparation après un chargement réussi ou d’exécuter des instructions REMOVE pour supprimer manuellement des fichiers.

Comme bonne pratique, Snowflake recommande la création d’une politique IAM et d’un utilisateur pour l’accès de Snowflake au compartiment S3. Vous pouvez alors joindre la politique à l’utilisateur, et utiliser les identifiants de sécurité générés par AWS pour que l’utilisateur puisse accéder aux fichiers dans le compartiment.

Création d’une politique IAM

Les instructions étape par étape suivantes décrivent comment configurer les permissions d’accès pour Snowflake dans votre console de gestion AWS de sorte que vous puissiez utiliser un compartiment S3 pour charger et décharger les données :

  1. Connectez-vous à la console de gestion AWS.

  2. Dans le tableau de bord d’accueil, sélectionnez Identity & Access Management (IAM) :

    Gestion des identités et de l'accès dans la console de gestion AWS
  3. Cliquez sur Account settings dans le volet de navigation de gauche.

  4. Développez la liste Security Token Service Regions, recherchez la région AWS qui correspond à la région où se trouve votre compte et choisissez Activate si le statut est Inactive.

  5. Cliquez sur Policies dans le volet de navigation de gauche.

  6. Cliquez sur Create Policy :

    Bouton Créer une politique de la page Politiques
  7. Cliquez sur l’onglet JSON .

  8. Ajoutez le document de politique qui permettra à Snowflake d’accéder au compartiment et au dossier S3.

    La politique suivante (au format JSON) fournit à Snowflake les autorisations d’accès requises pour le compartiment et le chemin de dossier spécifiés. Vous pouvez copier et coller le texte dans l’éditeur de stratégies :

    Note

    • Assurez-vous de remplacer le bucket et le prefix par votre nom de compartiment actuel et le préfixe du chemin du dossier.

    • Les Amazon Resource Names (ARN) pour les compartiments dans des régions gouvernementales ont un préfixe arn:aws-us-gov:s3:::.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:GetObjectVersion",
                  "s3:DeleteObject",
                  "s3:DeleteObjectVersion"
                ],
                "Resource": "arn:aws:s3:::<bucket_name>/<prefix>/*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": "arn:aws:s3:::<bucket_name>",
                "Condition": {
                    "StringLike": {
                        "s3:prefix": [
                            "<prefix>/*"
                        ]
                    }
                }
            }
        ]
    }
    
    Copy

    Note

    La définition de la condition "s3:prefix": sur ["*"] ou ["<chemin>/*"] donne accès à tous les préfixes dans le compartiment spécifié ou le chemin dans le compartiment, respectivement.

  9. Cliquez sur Review policy.

  10. Entrez le nom de la stratégie (ex. : snowflake_access) et une description facultative. Cliquez ensuite sur Create policy pour créer la politique.

    Bouton Créer une politique de la page Examiner les politiques

Étape 2 : Création d’un utilisateur IAM AWS

  1. Choisissez Users dans le volet de navigation de gauche, puis Add user.

  2. Sur la page Add user, entrez un nouveau nom d’utilisateur (par ex. snowflake1). Sélectionnez Programmatic access comme type d’accès, puis cliquez sur Next :

    Page Ajouter un utilisateur
  3. Cliquez sur Attach existing policies directly, et sélectionnez la stratégie que vous avez créée précédemment. Puis cliquez sur Next :

    Page Définir des autorisations
  4. Examinez les détails de l’utilisateur, puis cliquez sur Create user.

    Page Examiner les détails de l'utilisateur
  5. Enregistrez les identifiants d’accès. La façon la plus simple de les enregistrer est de cliquer sur Download Credentials pour les écrire dans un fichier (par ex. credentials.csv)

    Attachement d'une politique sur la page Détails de l'utilisateur

    Attention

    Une fois que vous quittez cette page, la clé d’accès secrète ne sera plus disponible dans la console AWS. Si vous perdez la clé, vous devez générer un nouvel ensemble d’identifiants pour l’utilisateur.

Désormais, vous avez accompli les opérations suivantes :

  • J’ai créé une politique IAM pour un compartiment.

  • J’ai créé un utilisateur IAM et lui ai généré des identifiants d’accès.

  • J’ai associé la politique à l’utilisateur.

Avec la clé AWS et la clé secrète pour le compartiment S3, vous avez les identifiants nécessaires pour accéder à votre compartiment S3 dans Snowflake en utilisant une zone de préparation externe.

Note

Snowflake met en cache les informations d’identification temporaires pendant une période qui ne peut dépasser le délai d’expiration de 60 minutes. Si vous révoquez l’accès à partir de Snowflake, les utilisateurs pourraient être en mesure de répertorier les fichiers et de charger des données à partir de l’emplacement de stockage dans le Cloud jusqu’à l’expiration du cache.

Étape 3 : Création d’une zone de préparation externe (c.-à-d., S3)

Créez une zone de préparation externe qui fait référence aux informations d’identification AWS que vous avez créées.

Créez une zone de préparation à l’aide de la commande CREATE STAGE , ou vous pouvez choisir de modifier une zone de préparation externe existante et définir l’option CREDENTIALS.

Note

Les identifiants de connexion sont traités séparément des autres paramètres de la zone de préparation tels que ENCRYPTION et FILE_FORMAT. La prise en charge de ces autres paramètres est la même quel que soit l’identifiant utilisé pour accéder à votre compartiment S3 externe.

Par exemple, définissez mydb.public comme base de données et schéma actuels pour la session utilisateur, puis créez une zone de préparation nommée my_S3_stage. Dans cet exemple, la zone de préparation fait référence au compartiment S3 et au chemin mybucket/load/files. Les fichiers du compartiment S3 sont chiffrés avec le chiffrement côté serveur (AWS_SSE_KMS) :

USE SCHEMA mydb.public;

CREATE OR REPLACE STAGE my_S3_stage
  URL='s3://mybucket/load/files/'
  CREDENTIALS=(AWS_KEY_ID='1a2b3c' AWS_SECRET_KEY='4x5y6z')
  ENCRYPTION=(TYPE='AWS_SSE_KMS' KMS_KEY_ID = 'aws/key');
Copy

Suivant : Chiffrement de fichiers de données AWS