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.
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
Dans ce document, vous utilisez 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.
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. Pour en savoir plus, consultez la section Effectuer un nettoyage.
En plus des ressources Google Cloud, ce tutoriel utilise les ressources Amazon Web Services (AWS) suivantes, qui peuvent être payantes :
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Activer les API Access Context Manager, Cloud Storage, and Storage Transfer Service.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Activer les API Access Context Manager, Cloud Storage, and Storage Transfer Service.
-
Dans la console Google Cloud, activez Cloud Shell.
En bas de la fenêtre de la console Google Cloud, une session Cloud Shell démarre et affiche une invite de ligne de commande. Cloud Shell est un environnement shell dans lequel Google Cloud CLI est déjà installé, et dans lequel des valeurs sont déjà définies pour votre projet actuel. L'initialisation de la session peut prendre quelques secondes.
- Dans Google 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 firebase.projects.get
resourcemanager.projects.get
resourcemanager.projects.list
storage.buckets.*
storage.objects.*
accesscontextmanager.accessLevels.*
accesscontextmanager.accessPolicies.*
accesscontextmanager.accessPolicies.setIamPolicy
accesscontextmanager.accessPolicies.update
accesscontextmanager.accessZones.*
accesscontextmanager.policies.*
accesscontextmanager.servicePerimeters.*
resourcemanager.organizations.get
Le rôle Administrateur de l'espace de stockage dispose des autorisations suivantes :
Le rôle Administrateur Access Context Manager dispose des autorisations suivantes :
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
- Dans AWS Management Console, accédez à la page IAM.
- Cliquez sur Stratégies, puis sur Créer une stratégie.
- Dans l'éditeur visuel, cliquez sur Stratégie IAM.
- Cliquez sur S3.
Sous Niveau d'accès, sélectionnez les cases à cocher suivantes :
- List (Liste)
- Read (Lire)
- Write (Écrire)
Dans le volet Ressources, cliquez sur Spécifique.
Dans le volet Bucket, cliquez sur Ajouter un ARN.
Dans le champ Bucket Name (Nom du bucket), saisissez le nom du bucket depuis lequel vous souhaitez transférer des données.
Cliquez sur Review Policy (Examiner une stratégie) et saisissez un nom tel que
transfer-user-policy
.Cliquez sur Create Policy (Créer une stratégie).
Ajouter des utilisateurs AWS IAM à votre stratégie AWS IAM
- Dans AWS Management Console, accédez à la page IAM.
- Cliquez sur Users (Utilisateurs), puis sur Add User (Ajouter un utilisateur).
- Dans le champ Nom, saisissez
transfer-user
. - 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. - 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.
- 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.
Dans Google Cloud Console, accédez à la page du Navigateur Cloud Storage.
Cliquez sur Créer un bucket.
Dans le champ Nom, saisissez un nom (tel que
project-id-destination-bucket
, oùproject-id
représente votre ID de projet Google Cloud).Pour la classe de stockage par défaut du bucket, cliquez sur Stockage régional.
Dans la liste déroulante Emplacement, cliquez sur la région dans laquelle les données du bucket seront stockées.
Cliquez sur Créer.
Trouver le nom de votre compte de service de transfert de stockage
Le service de transfert de stockage utilise un compte de service géré par Google pour communiquer avec les ressources Cloud Storage et Pub/Sub de votre projet. Vous devez maintenant déterminer le nom de votre compte de service, qui vous sera demandé dans la suite de ce tutoriel. Si vous n'avez jamais utilisé le service de transfert de stockage, la commande suivante crée automatiquement son compte de service. Pour en savoir plus sur les comptes de service gérés par Google, consultez la page Comptes de service.
- Pour déterminer le nom de votre compte de service, accédez à la page de l'API Storage Transfer Service.
Dans le champ Chaîne, saisissez votre ID de projet Google Cloud.
Le nom du compte de service est généralement au format suivant :
project-PROJECT_NUMBER@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.
Accédez à la page Paramètres dans Google Cloud Console.
Prenez note de votre ID de projet Google Cloud et du nom de l'organisation.
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é.
Dans Google Cloud Console, accédez à la page VPC Service Controls.
Cliquez sur Nouveau périmètre.
Dans le champ Nom, saisissez un nom pour le périmètre (par exemple,
data-transfer-perimeter
).Laissez l'option Périmètre standard sélectionnée.
Cliquez sur Ajouter un projet, puis ajoutez le projet créé au cours de ce tutoriel à la liste des projets à protéger.
Cliquez sur API Cloud Storage.
Conservez la valeur par défaut pour le paramètre Niveaux d'accès.
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.
Dans Cloud Shell, créez un fichier YAML nommé
conditions.yaml
qui répertorie les comptes principaux auxquels vous souhaitez accorder un accès :- members: - serviceAccount:project-project-number@storage-transfer-service.iam.gserviceaccount.com - user:sysadmin@example.com
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-id
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 quetrusted-identity-ingest
.policy-id
est l'ID (numéro) de la règle d'accès de votre organisation.- La propriété
combine-function
est définie surOR
. La valeur par défautAND
indique que toutes les conditions doivent être satisfaites pour que l'accès soit accordé. La valeurOR
permet d'accorder l'accès aux comptes principaux, 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-id/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
Dans Google Cloud Console, accédez à VPC Service Controls.
Cliquez sur Modifier pour VPC Service Controls.
Cliquez sur Niveau d'accès, puis sélectionnez le niveau d'accès
trusted-identity-ingest
.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
Dans Google Cloud Console, accédez à la page Transfert.
Cliquez sur Créer un transfert.
Cliquez sur Bucket Amazon S3.
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.
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.
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
).Sous Configurer le transfert, planifiez la tâche de transfert en choisissant Exécuter.
(Facultatif) Modifiez le nom de la tâche de transfert.
Sous Description, saisissez un nom descriptif unique qui vous permettra d'identifier plus facilement votre tâche de transfert.
Cliquez sur Create (Créer).
Nettoyer
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Étapes suivantes
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Centre d'architecture cloud.
- Découvrez d'autres façons d'activer des niveaux d'accès à l'aide d'Access Context Manager.