Transférer des données d'Amazon S3 vers Cloud Storage à l'aide de VPC Service Controls et du service de transfert de stockage

Ce tutoriel explique comment renforcer la sécurité des transferts de données d'Amazon Simple Storage Service (Amazon S3) vers Cloud Storage en utilisant le service de transfert de stockage avec un périmètre VPC Service Controls. Ce tutoriel s'adresse aux propriétaires de données qui disposent de données hébergées sur Amazon S3 et souhaitent les traiter ou les transférer en toute sécurité vers Google Cloud.

Pour ce tutoriel, nous partons du principe que vous connaissez bien Amazon Web Services (AWS) et que vous maîtrisez les principes de base de l'utilisation de données au sein de magasins d'objets. Ce tutoriel applique une méthode de contrôle d'accès reposant sur un compte de service et sur l'utilisation d'Access Context Manager. Pour utiliser des niveaux d'accès plus avancés que ne le permet la méthode basée sur un compte de service, reportez-vous à la section Créer un niveau d'accès.

Le schéma suivant présente l'architecture de VPC Service Controls.

Architecture de VPC Service Controls configurée pour interdire toute communication entre les services Google Cloud à l'extérieur du périmètre contrôlé.

Dans le schéma ci-dessus, VPC Service Controls interdit explicitement la communication entre les services Google Cloud, sauf si les deux projets se trouvent dans le périmètre contrôlé.

Objectifs

  • Configurer l'accès à AWS
  • Créer un périmètre VPC Service Controls
  • Créer une stratégie d'accès et un niveau d'accès à l'aide d'Access Context Manager
  • Mettre en œuvre le service de transfert de stockage pour transférer des données entre Amazon S3 et Cloud Storage
  • Programmer le service de transfert de stockage pour récupérer des données de manière planifiée

Coûts

Ce tutoriel utilise les composants facturables suivants de Google Cloud :

L'utilisation du service de transfert de stockage n'entraîne pas de frais supplémentaires. Cependant, les tarifs de Cloud Storage et les coûts des fournisseurs externes s'appliquent lors de l'utilisation du service.

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Une fois que vous avez terminé ce tutoriel, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Consultez la page Effectuer un nettoyage pour en savoir plus.

En plus des ressources Google Cloud, ce tutoriel utilise les ressources Amazon Web Services (AWS) suivantes, qui peuvent être payantes :

Avant de commencer

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Dans Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Cloud.

    Accéder à la page de sélection du projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Activer les API Access Context Manager, Cloud Storage, and Storage Transfer Service.

    Activer les API

  5. Dans Cloud Console, activez Cloud Shell.

    Activer Cloud Shell

    En bas de la fenêtre de Cloud Console, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel le SDK Cloud est déjà installé (y compris l'outil de ligne de commande gcloud), et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.

  6. Dans Cloud Console, accédez à la page IAM et administration pour attribuer à votre compte le rôle d'administrateur de l'espace de stockage et d'administrateur Access Context Manager.
    Accéder à la page IAM et administration
  7. Le rôle Administrateur de l'espace de stockage dispose des autorisations suivantes :

    • firebase.projects.get
    • resourcemanager.projects.get
    • resourcemanager.projects.list
    • storage.buckets.*
    • storage.objects.*

    Le rôle Administrateur Access Context Manager dispose des autorisations suivantes :

    • accesscontextmanager.accessLevels.*
    • accesscontextmanager.accessPolicies.*
    • accesscontextmanager.accessPolicies.setIamPolicy
    • accesscontextmanager.accessPolicies.update
    • accesscontextmanager.accessZones.*
    • accesscontextmanager.policies.*
    • accesscontextmanager.servicePerimeters.*
    • resourcemanager.organizations.get

Configurer l'accès à AWS

Dans ce tutoriel, vous allez vous appuyer sur des utilisateurs existants d'AWS Identity and Access Management (AWS IAM) pour créer une stratégie AWS IAM permettant de communiquer avec le service de transfert de stockage. Ces stratégies et ces utilisateurs sont nécessaires pour authentifier votre connexion à Google Cloud et pour sécuriser vos données en transit. Pour suivre ce tutoriel, vous devez disposer d'un bucket Amazon S3 depuis lequel transférer des données. Vous avez la possibilité d'utiliser un bucket Amazon S3 existant ou de créer un bucket. Vous pouvez utiliser un compte AWS bac à sable ou de test pour ne pas affecter les ressources de production du même compte.

Créer une stratégie AWS IAM pour le service de transfert de stockage et appliquer celle-ci à votre bucket

  1. Dans AWS Management Console, accédez à la page IAM.
  2. Cliquez sur Stratégies, puis sur Créer une stratégie.
  3. Dans l'éditeur visuel, cliquez sur Stratégie IAM.
  4. Cliquez sur S3.
  5. Sous Niveau d'accès, sélectionnez les cases à cocher suivantes :

    • List (Liste)
    • Read (Lire)
    • Write (Écrire)
  6. Dans le volet Ressources, cliquez sur Spécifique.

  7. Dans le volet Bucket, cliquez sur Ajouter un ARN.

  8. Dans le champ Bucket Name (Nom du bucket), saisissez le nom du bucket depuis lequel vous souhaitez transférer des données.

  9. Cliquez sur Review Policy (Examiner une stratégie) et saisissez un nom tel que transfer-user-policy.

  10. Cliquez sur Create Policy (Créer une stratégie).

Ajouter des utilisateurs AWS IAM à votre stratégie AWS IAM

  1. Dans AWS Management Console, accédez à la page IAM.
  2. Cliquez sur Users (Utilisateurs), puis sur Add User (Ajouter un utilisateur).
  3. Dans le champ Nom, saisissez transfer-user.
  4. Pour Access Type (Type d'accès), cliquez sur Programmatic Access (Accès par programmation) et joignez la stratégie transfer-user-policy que vous avez créée pour cet utilisateur.
  5. Une fois l'utilisateur créé, prenez note de votre paire ID d'accès/clé secrète, qui vous sera demandée dans la suite de ce tutoriel.
  6. Cliquez sur Enregistrer.

Créer un bucket Cloud Storage

Avant de pouvoir activer un périmètre VPC Service Controls, vous devez créer un bucket Cloud Storage.

  1. Dans Cloud Console, accédez au navigateur Cloud Storage.

    Accéder au navigateur Cloud Storage

  2. Cliquez sur Créer un bucket.

  3. Dans le champ Nom, saisissez un nom (tel que project-id-destination-bucket, où project-id représente votre ID de projet Google Cloud).

  4. Pour la classe de stockage par défaut du bucket, cliquez sur Stockage régional.

  5. Dans la liste déroulante Emplacement, cliquez sur la région dans laquelle les données du bucket seront stockées.

  6. Cliquez sur Créer.

Trouver le nom de votre compte de service de transfert de stockage

Vous devez maintenant déterminer le nom de votre compte de service, qui vous sera demandé dans la suite de ce tutoriel. Pour en savoir plus sur les comptes de service gérés par Google, consultez la page Comptes de service.

  1. Pour déterminer le nom de votre compte de service, accédez à la page de l'API Storage Transfer Service.
  2. Dans le champ Chaîne, saisissez votre ID de projet Google Cloud.

    Le nom du compte de service est au format suivant : project-project-id@storage-transfer-service.iam.gserviceaccount.com.

Créer votre stratégie d'accès dans Access Context Manager

Une stratégie d'accès collecte les périmètres de service et les niveaux d'accès que vous avez créés pour votre organisation. Une organisation ne peut disposer que d'une seule stratégie d'accès.

  1. Accédez à la page Paramètres dans Cloud Console.

    Accéder à la page "Paramètres"

  2. Prenez note de votre ID de projet Google Cloud et du nom de l'organisation.

  3. Dans Cloud Shell, créez une stratégie :

    gcloud access-context-manager policies create \
        --organization organization-id --title policy-title
    
    • organization-id est l'ID d'organisation que vous venez de récupérer.
    • policy-title est le titre du périmètre. Par exemple, Example-Company-Access-Policy.

    Voici le résultat :

    Create request issued
    Waiting for operation [accessPolicies/policy-title/create/policy-number] to complete...done.
    Created.
    

    policy-number représente un ID unique attribué au titre de la stratégie.

Créer votre périmètre VPC Service Controls

Lorsque vous entamez la création du périmètre VPC Service Controls, aucun trafic entrant n'est autorisé. Vous créez alors un niveau d'accès autorisant explicitement l'opération de transfert à envoyer des données dans le périmètre contrôlé.

  1. Dans Cloud Console, accédez à la page VPC Service Controls.

    Accéder à la page "VPC Service Controls"

  2. Cliquez sur Nouveau périmètre.

  3. Dans le champ Nom, saisissez un nom pour le périmètre (par exemple, data-transfer-perimeter).

  4. Laissez l'option Périmètre standard sélectionnée.

  5. Cliquez sur Ajouter un projet, puis ajoutez le projet créé au cours de ce tutoriel à la liste des projets à protéger.

  6. Cliquez sur API Cloud Storage.

  7. Conservez la valeur par défaut pour le paramètre Niveaux d'accès.

  8. Cliquez sur Enregistrer.

Créer un niveau d'accès dans la stratégie d'accès

Dans cette section, vous allez limiter les accès au VPC à l'aide du compte de service.

  1. Dans Cloud Shell, créez un fichier YAML nommé conditions.yaml qui répertorie les membres auxquels vous souhaitez accorder un accès :

     - members:
         - serviceAccount:project-project-id@storage-transfer-service.iam.gserviceaccount.com
         - user:sysadmin@example.com
     

  2. Créez le niveau d'accès :

    gcloud access-context-manager levels create name \
        --title title \
        --basic-level-spec ~./conditions.yaml \
        --combine-function=OR \
        --policy=policy-name
    
    • name est le nom unique du niveau d'accès. Ce nom doit commencer par une lettre et ne peut contenir que des lettres, des chiffres et des traits de soulignement.
    • title est un titre propre à la stratégie, tel que trusted-identity-ingest.
    • policy-name est le nom de la règle d'accès de votre organisation.
    • La propriété combine-function est définie sur OR. La valeur par défaut AND indique que toutes les conditions doivent être satisfaites pour que l'accès soit accordé. La valeur OR permet d'accorder l'accès aux membres même si d'autres conditions (telles que l'adresse IP ou les conditions héritées d'autres niveaux d'accès requis) ne sont pas remplies.

    Le résultat ressemble à ce qui suit :

    Create request issued for: name
    Waiting for operation [accessPolicies/policy-name/accessLevels/name/create/access-level-number] to complete...done.
    Created level name.
    

    access-level-number représente un ID unique attribué au niveau d'accès.

Lier le niveau d'accès à VPC Service Controls

  1. Dans Cloud Console, accédez à VPC Service Controls.

    Accéder à la page "VPC Service Controls"

  2. Cliquez sur Modifier pour VPC Service Controls.

  3. Cliquez sur Niveau d'accès, puis sélectionnez le niveau d'accès trusted-identity-ingest.

  4. Cliquez sur Save.

Désormais, les seules opérations autorisées à l'intérieur du périmètre contrôlé sont celles du compte de service que vous avez défini.

Lancer le transfert

  1. Dans Cloud Console, accédez à la page Transfert.

    Accéder à la page "Transfert"

  2. Cliquez sur Créer une tâche de transfert.

  3. Cliquez sur Bucket Amazon S3.

  4. Dans le champ Bucket Amazon S3, saisissez le nom du bucket Amazon S3 source tel qu'il apparaît dans la console AWS Management Console.

  5. Renseignez les champs ID de clé d'accès et Clé secrète en reportant les valeurs associées au bucket Amazon S3. Il s'agit des valeurs que vous avez notées au début de ce tutoriel.

  6. Dans le champ Sélectionner une destination, saisissez le nom du bucket que vous avez créé dans votre périmètre (par exemple, project-id-destination-bucket).

  7. Sous Configurer le transfert, planifiez la tâche de transfert en choisissant Exécuter.

  8. (Facultatif) Modifiez le nom de la tâche de transfert.

  9. Sous Description, saisissez un nom descriptif unique qui vous permettra d'identifier plus facilement votre tâche de transfert.

  10. Cliquez sur Créer.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce tutoriel soient facturées sur votre compte Google Cloud Platform, procédez comme suit :

Supprimer le projet

  1. Dans Cloud Console, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer .
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Étapes suivantes