Vous pouvez configurer l'accès à un bucket Amazon S3 à l'aide de l'une des deux méthodes suivantes:
Régions où le service est disponible
Le service de transfert de stockage peut transférer des données depuis les régions Amazon S3 suivantes :af-south-1
, ap-east-1
, ap-northeast-1
,
ap-northeast-2
, ap-northeast-3
, ap-south-1
,
ap-south-2
, ap-southeast-1
, ap-southeast-2
,
ap-southeast-3
, ca-central-1
, eu-central-1
,
eu-central-2
, eu-north-1
, eu-south-1
,
eu-south-2
, eu-west-1
, eu-west-2
, eu-west-3
, eu-west-3
, eu-south-1
, eu-west-3
, eu-west-3
, eu-west-3
,me-central-1
me-south-1
sa-east-1
us-east-1
us-east-2
us-west-1
us-west-2
Autorisations requises
Pour que vous puissiez déplacer des données depuis un bucket Amazon S3 à l'aide du service de transfert de stockage, votre compte utilisateur ou votre rôle d'identité fédérée doit disposer des autorisations appropriées pour le bucket:
Autorisation | Description | Utilisation |
---|---|---|
s3:ListBucket |
Permet au service de transfert de stockage de lister les objets présents dans le bucket. | Toujours obligatoire |
s3:GetObject |
Permet au service de transfert de stockage de lire des objets dans le bucket. | Obligatoire si vous transférez la version actuelle de tous les objets. Si votre fichier manifeste spécifie une version d'objet, utilisez plutôt s3:GetObjectVersion . |
s3:GetObjectVersion |
Permet au service de transfert de stockage de lire des versions spécifiques d'objets dans le bucket. | Obligatoire si votre fichier manifeste spécifie une version d'objet. Sinon, utilisez s3:GetObject . |
s3:DeleteObject |
Permet au service de transfert de stockage de supprimer des objets du bucket. | Obligatoire si vous définissez deleteObjectsFromSourceAfterTransfer sur true . |
S'authentifier à l'aide d'identifiants d'accès
Pour vous authentifier auprès d'AWS à l'aide d'un ID de clé d'accès et d'une clé secrète:
Créez un utilisateur AWS IAM (AWS Identity and Access Management) avec un nom facile à identifier, tel que
transfer-user
.Pour le type d'accès AWS, sélectionnez Access key - Programmatic access (Clé d'accès - Accès programmatique).
Attribuez l'un des rôles suivants à l'utilisateur:
- AmazonS3ReadOnlyAccess pour fournir un accès en lecture seule à la source Cela autorise les transferts, mais ne permet pas de supprimer des objets à la source une fois le transfert terminé.
- AmazonS3FullAccess si le transfert est configuré pour supprimer les objets de la source.
Un rôle personnalisé avec les autorisations appropriées du tableau Autorisations requises ci-dessus. Le fichier JSON correspondant aux autorisations minimales se présente comme suit:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME/*", "arn:aws:s3:::AWS_BUCKET_NAME" ] } ] }
Notez l'ID de clé d'accès et la clé d'accès secrète une fois l'utilisateur créé.
La manière dont vous transmettez l'ID de clé d'accès et la clé d'accès secrète au service de transfert de stockage dépend de l'interface que vous utilisez pour lancer le transfert.
console Cloud
Saisissez les valeurs directement dans le formulaire de création de job de transfert.
Pour commencer, consultez Créer des transferts.
gcloud CLI
Créez un fichier JSON au format suivant:
{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
Transmettez l'emplacement du fichier à la commande gcloud transfer jobs create
à l'aide de l'option source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/KEYFILE.JSON
API REST
Votre objet transferSpec
doit contenir les informations de clé dans l'objet awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"awsAccessKey": {
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Bibliothèques clientes
Consultez les exemples de la page Créer des transferts.
Enregistrez vos identifiants d'accès dans Secret Manager
Secret Manager est un service sécurisé qui stocke et gère les données sensibles telles que les mots de passe. Il utilise un chiffrement fort, un contrôle des accès basé sur les rôles et des journaux d'audit pour protéger vos secrets.
Le service de transfert de stockage peut utiliser Secret Manager pour protéger vos identifiants d'accès AWS. Chargez vos identifiants dans Secret Manager, puis transmettez le nom de la ressource de secret au service de transfert de stockage.
Activer l'API
Activez l'API Secret Manager
Configurer des autorisations supplémentaires
Autorisations des utilisateurs
L'utilisateur qui crée le secret doit disposer du rôle suivant:
- Administrateur Secret Manager (
roles/secretmanager.admin
)
Découvrez comment attribuer un rôle.
Autorisations de l'agent de service
L'agent de service du service de transfert de stockage nécessite le rôle IAM suivant:
- Accesseur de secrets Secret Manager (
roles/secretmanager.secretAccessor
)
Pour attribuer le rôle à votre agent de service:
console Cloud
Suivez les instructions pour récupérer l'adresse e-mail de votre agent de service.
Accédez à la page IAM de la console Google Cloud.
Cliquez sur Accorder l'accès.
Dans la zone de texte Nouveaux comptes principaux, saisissez l'adresse e-mail de l'agent de service.
Dans la liste déroulante Sélectionnez un rôle, recherchez et sélectionnez Accesseur de secrets Secret Manager.
Cliquez sur Enregistrer.
gcloud
Exécutez la commande gcloud projects add-iam-policy-binding
pour ajouter le rôle IAM à votre agent de service.
Suivez les instructions pour récupérer l'adresse e-mail de votre agent de service.
Dans la ligne de commande, saisissez la commande suivante:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Créer un secret
Créez un secret avec Secret Manager:
console Cloud
Accédez à la page Secret Manager dans la console Google Cloud.
Cliquez sur Créer un secret.
Saisissez un nom.
Dans la zone de texte Valeur du secret, saisissez vos identifiants au format suivant:
{ "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" }
Cliquez sur Créer un secret.
Une fois le secret créé, notez le nom de ressource complet du secret:
Sélectionnez l'onglet Overview (Présentation).
Copiez la valeur de l'ID de ressource. Il utilise le format suivant:
projects/1234567890/secrets/SECRET_NAME
gcloud
Pour créer un secret à l'aide de l'outil de ligne de commande gcloud, transmettez les identifiants au format JSON à la commande gcloud secrets create
:
printf '{
"accessKeyId": "AWS_ACCESS_KEY_ID",
"secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Récupérez le nom complet de la ressource du secret:
gcloud secrets describe SECRET_NAME
Notez la valeur de name
dans la réponse. Il utilise le format suivant:
projects/1234567890/secrets/SECRET_NAME
Pour en savoir plus sur la création et la gestion des secrets, consultez la documentation de Secret Manager.
Transmettre votre secret à la commande de création de tâche
L'utilisation de Secret Manager avec le service de transfert de stockage nécessite l'utilisation de l'API REST pour créer un job de transfert.
Transmettez le nom de la ressource Secret Manager en tant que valeur du champ transferSpec.awsS3DataSource.credentialsSecret
:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Secret Manager",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_BUCKET_NAME",
"credentialsSecret": "SECRET_RESOURCE_ID",
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
S'authentifier à l'aide d'une identité fédérée
Pour utiliser l'identité fédérée afin de s'authentifier auprès d'AWS:
Créez un rôle IAM dans AWS.
Sélectionnez Règle de confiance personnalisée comme type d'entité de confiance.
Copiez et collez la règle de confiance suivante:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "accounts.google.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:sub": "SUBJECT_ID" } } } ] }
Remplacez SUBJECT_ID par le
subjectID
du compte de service géré par Google, qui est automatiquement créé lorsque vous commencez à utiliser le service de transfert de stockage. Pour récupérersubjectID
:Accédez à la page de référence
googleServiceAccounts.get
.Un panneau interactif s'affiche, intitulé Essayer cette méthode.
Dans le panneau, sous Paramètres des requêtes, saisissez votre ID de projet. Le projet que vous spécifiez ici doit être celui que vous utilisez pour gérer le service de transfert de stockage.
Cliquez sur Exécuter.
subjectId
est inclus dans la réponse.
Accordez l'une des stratégies d'autorisation suivantes au rôle:
- AmazonS3ReadOnlyAccess fournit un accès en lecture seule à la source. Cela autorise les transferts, mais ne permet pas de supprimer des objets à la source une fois le transfert terminé.
- AmazonS3FullAccess si le transfert est configuré pour supprimer les objets de la source.
Un rôle personnalisé avec les autorisations appropriées du tableau Autorisations requises ci-dessus. Le fichier JSON correspondant aux autorisations minimales se présente comme suit:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::AWS_BUCKET_NAME/*", "arn:aws:s3:::AWS_BUCKET_NAME" ] } ] }
Attribuez un nom au rôle, puis créez-le.
Une fois le rôle créé, affichez les détails du rôle pour récupérer le nom de ressource Amazon (ARN). Notez cette valeur, car elle est au format
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
La manière dont vous transmettez l'ARN au service de transfert de stockage dépend de l'interface que vous utilisez pour lancer le transfert.
console Cloud
Saisissez l'ARN directement dans le formulaire de création de job de transfert.
Pour commencer, consultez Créer des transferts.
gcloud CLI
Créez un fichier JSON au format suivant:
{
"roleArn": "ARN"
}
Transmettez l'emplacement du fichier à la commande gcloud transfer jobs create
à l'aide de l'option source-creds-file
:
gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
--source-creds-file=PATH/TO/ARNFILE.JSON
API REST
Votre objet transferSpec
doit contenir les informations ARN dans l'objet awsS3DataSource
:
"transferSpec": {
"awsS3DataSource": {
"bucketName": "AWS_SOURCE_NAME",
"roleArn": "ARN"
},
"gcsDataSink": {
"bucketName": "GCS_SINK_NAME"
}
}
Bibliothèques clientes
Consultez les exemples de la page Créer des transferts.
Restrictions relatives aux adresses IP
Si votre projet AWS utilise des restrictions d'adresses IP pour l'accès au stockage, vous devez ajouter les plages d'adresses IP utilisées par les nœuds de calcul du service de transfert de stockage à votre liste d'adresses IP autorisées.
Comme ces plages d'adresses IP peuvent changer, nous publions les valeurs actuelles sous la forme d'un fichier JSON à une adresse permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Lorsqu'une nouvelle plage est ajoutée au fichier, nous attendons au moins sept jours avant de l'utiliser pour les requêtes provenant du service de transfert de stockage.
Nous vous recommandons d'extraire les données de ce document au moins une fois par semaine pour maintenir votre configuration de sécurité à jour. Pour obtenir un exemple de script Python qui extrait des plages d'adresses IP à partir d'un fichier JSON, consultez cet article de la documentation sur le cloud privé virtuel.
Pour ajouter ces plages en tant qu'adresses IP autorisées, utilisez le champ Condition
dans une stratégie de bucket, comme décrit dans la documentation AWS S3 : Gérer les accès en fonction d'adresses IP spécifiques.