Avant de transférer des données depuis un bucket Azure Storage, vous devez configurer l'accès à ce bucket pour que le service de transfert de stockage puisse récupérer ses objets.
Le service de transfert de stockage est compatible avec les méthodes d'authentification Azure suivantes :
Jetons signature d'accès partagé (SAP). Les jetons SAS peuvent être spécifiés directement lors de la création d'un transfert ou être stockées dans Secret Manager.
Les clés partagées Azure peuvent être stockées dans Secret Manager et le secret transmis lors de la création d'une tâche de transfert.
Identifiants fédérés sont transmises dans un objet
federatedIdentityConfig
lors du job de transfert création.
Ce document contient également des informations sur l'ajout d'adresses IP de nœuds de calcul du service de transfert de stockage à votre pare-feu Azure Storage pour autoriser l'accès. Voir Restrictions relatives aux adresses IP.
Régions où le service est disponible
Le service de transfert de stockage peut transférer des données depuis les régions Microsoft Azure Storage suivantes :- Amériques : USA Est, USA Est 2, USA Ouest, USA Ouest 2, USA Ouest 3, USA Centre, USA Centre Nord, USA Centre Sud, USA Centre Ouest, Canada Centre, Canada Est, Brésil Sud
- Asie-Pacifique : Australia Central (Australie centre), Australia East (Australie est), Australia Southeast (Australie sud-est), Inde Centre, Inde Sud, Inde Ouest, Asie Sud-Est, Asie Est, Japon Est, Japon Ouest, Corée Sud, Corée Centre
- Europe, Moyen-Orient, Afrique (EMEA) : Allemagne Centre Ouest, France Centre, Norvège Est, Suède Centre, Suisse Nord, Europe Nord, Europe Ouest, Royaume-Uni Sud, Royaume-Uni Ouest, Qatar Centre, Émirats arabes unis Nord, Afrique du Sud Nord
Option 1: S'authentifier à l'aide d'un jeton SAS
Pour configurer l'accès à un conteneur Microsoft Azure Storage à l'aide d'un jeton SAS, procédez comme suit : Vous pouvez également enregistrer votre jeton SAP dans Secret Manager. Pour ce faire, suivez les instructions de la section S'authentifier à l'aide d'une clé partagée Azure ou d'un jeton SAP dans Secret Manager.
Créez un utilisateur Microsoft Azure Storage ou utilisez-en un existant pour accéder au compte de stockage de votre conteneur d'objets blob Microsoft Azure Storage.
Créez un jeton SAP au niveau du conteneur. Pour savoir comment procéder, consultez la section Accorder un accès limité aux ressources Azure Storage à l'aide de signatures d'accès partagé.
Blob doit figurer dans la liste des services autorisés.
Pour Allowed resource types (Types de ressources autorisés), sélectionnez Container (Conteneur) et Object (Objet).
Les autorisations accordées doivent inclure Read (Lecture) et List (Liste). Si le transfert est configuré pour supprimer des objets de la source, vous devez également inclure l'autorisation Supprimer.
Le délai d'expiration par défaut pour les jetons SAP est de 8 heures. Définissez une qui vous permet de finaliser votre transfert.
Ne spécifiez aucune adresse IP dans le champ Allowed IP addresses (Adresses IP autorisées). Le service de transfert de stockage utilise différentes adresses IP et n'est pas compatible avec la restriction d'adresses IP.
Le champ Allowed protocols (Protocoles autorisés) doit être défini sur HTTPS only (HTTPS uniquement).
Une fois le jeton créé, notez la valeur du jeton SAS qui est renvoyée. Vous avez besoin de cette valeur lorsque vous configurez votre transfert avec le service de transfert de stockage.
Option 2: S'authentifier à l'aide d'une clé partagée Azure ou d'un jeton SAS dans Secret Manager
Secret Manager est un service sécurisé qui stocke et gère les données sensibles comme les mots de passe. Il utilise un chiffrement fort, le contrôle des accès basé sur les rôles et les journaux d'audit pour protéger vos secrets.
Le service de transfert de stockage est compatible avec les noms de ressources Secret Manager qui font référence vos identifiants Azure stockés de manière sécurisée.
Pour utiliser une clé partagée Azure, vous devez l'enregistrer dans Secret Manager. Les jetons SAS peuvent être enregistrés dans Secret Manager ou transmis directement.
Lorsque vous spécifiez une clé partagée, le service de transfert de stockage l'utilise pour générer un SAS de service dont la portée est limitée au conteneur Azure spécifié dans la tâche de transfert.
Activer l'API
Enable the Secret Manager API.
Configurer des autorisations supplémentaires
Autorisations d'utilisateur
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 :
Cloud Console
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 le menu déroulant Sélectionner un rôle, recherchez et sélectionnez Accesseur de secrets Secret Manager.
Cliquez sur Enregistrer.
gcloud
Utilisez 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:
Cloud Console
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 dans l'un des formats suivants.
{ "sas_token" : "SAS_TOKEN_VALUE" }
ou
{ "access_key" : "ACCESS_KEY" }
Cliquez sur Créer un secret.
Une fois le secret créé, notez son nom de ressource complet :
Sélectionnez l'onglet Overview (Présentation).
Copiez la valeur de Nom de la 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 la méthode
Identifiants au format JSON pour la commande gcloud secrets create
:
printf '{
"sas_token" : "SAS_TOKEN_VALUE"
}' | gcloud secrets create SECRET_NAME --data-file=-
ou
printf '{
"access_key" : "ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Récupérez le nom de ressource complet 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 Documentation Secret Manager
Transmettre votre secret à la commande de création de job
Pour utiliser Secret Manager avec le service de transfert de stockage, vous devez utiliser l'API REST pour créer une tâche de transfert.
Transmettez le nom de ressource Secret Manager en tant que valeur du paramètre
Champ transferSpec.azureBlobStorageDataSource.credentialsSecret
:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Secret Manager",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"credentialsSecret": "SECRET_RESOURCE_ID",
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Pour en savoir plus, consultez Créer des transferts. pour en savoir plus sur la création d'un transfert.
Option 3 : S'authentifier à l'aide d'une identité fédérée
Le service de transfert de stockage est compatible avec la fédération d'identité de charge de travail Azure avec Google Cloud. Le service de transfert de stockage peut envoyer des requêtes à Azure Storage via des applications Azure enregistrées, ce qui élimine le besoin transmettre directement les identifiants au service de transfert de stockage.
Pour configurer l'identité fédérée, suivez ces instructions.
Configurer des identifiants Google Cloud
Vous devez ajouter le créateur de jetons du compte de service.
(roles/iam.serviceAccountTokenCreator
) au service de transfert de stockage
agent de service pour autoriser la création de jetons d'identification OpenID Connect (OIDC) pour le
de service.
Récupérez les
accountEmail
etsubjectId
de l'agent de service géré par Google créé automatiquement lorsque vous commencez à utiliser le service de transfert de stockage. Pour récupérer ces valeurs :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 de requête, saisissez votre ID de projet. Le projet que vous spécifiez ici doit être le projet que vous utilisez pour gérer le service de transfert de stockage.
Cliquez sur Exécuter. Les
accountEmail
etsubjectId
sont inclus dans la réponse. Enregistrez ces valeurs.
Attribuez le rôle Créateur de jetons du compte de service (
roles/iam.serviceAccountTokenCreator
) à l'agent de service du service de transfert de stockage. Suivez les instructions de la section Gérer l'accès aux comptes de service.
Configurer des identifiants Microsoft
Commencez par enregistrer une application et ajoutez des identifiants fédérés:
- Connectez-vous à https://portal.azure.com.
- Accédez à la page Enregistrements d'applications.
- Cliquez sur Nouvelle inscription.
- Saisissez un nom. Par exemple,
azure-transfer-app
. - Sélectionnez Comptes figurant dans cet annuaire organisation uniquement.
- Cliquez sur S'inscrire. L'application est créée. Notez que
Application (client) ID
etDirectory (tenant) ID
. Vous pouvez également Vous pourrez les récupérer ultérieurement sur la page Présentation de l'application. - Cliquez sur Certificats et secrets, puis sélectionnez l'onglet Identifiants fédérés.
- Cliquez sur Ajouter un identifiant.
- Sélectionnez Autre émetteur comme scénario, puis saisissez les informations suivantes :
- Émetteur:
https://accounts.google.com
- Identifiant d'objet :
subjectId
de votre agent de service, que vous avez récupéré dans Configurer des identifiants Google Cloud. - Nom unique pour l'identifiant fédéré.
- L'audience doit rester
api://AzureADTokenExchange
.
- Émetteur:
- Cliquez sur Ajouter.
Ensuite, accordez à l'application l'accès à votre conteneur Azure Storage:
- Accédez à la page Comptes de stockage de votre compte Azure.
- Sélectionnez votre compte de stockage, puis Containers (Conteneurs) dans la section Stockage de données.
- Cliquez sur le bucket auquel accorder l'accès.
- Cliquez sur Contrôle des accès (IAM) dans le menu de gauche et sélectionnez Rôles. .
- Cliquez sur le menu à développer (
...
) à côté de n'importe quel rôle, puis sélectionnez Cloner. - Attribuez un nom à ce rôle personnalisé, puis sélectionnez Commencer à zéro. Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations et recherchez
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Cliquez sur la carte Microsoft Storage qui s'affiche.
- Sélectionnez la case d'option Actions sur les données.
- Sélectionnez Read : Read Blob (Lire : Lire un blob).
- Cliquez sur Ajouter.
- Si vous comptez supprimer des objets de la source après le transfert, cliquez sur
Ajoutez des autorisations à nouveau et recherchez
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
- Cliquez sur la fiche Microsoft Storage qui s'affiche, sélectionnez Actions sur les données, puis Supprimer : supprimer le blob.
- Cliquez sur Ajouter.
- Cliquez sur Vérifier + Créer, puis sur Créer. Vous êtes redirigé vers l'instance Page Contrôle des accès (IAM).
- Cliquez sur Ajouter, puis sélectionnez Ajouter une attribution de rôle.
- Dans la liste des rôles, sélectionnez votre rôle personnalisé, puis cliquez sur Suivant.
- Cliquez sur Select members (Sélectionner des membres).
- Dans le champ Sélectionner, saisissez le nom de l'application que vous avez précédemment enregistrée. Exemple :
azure-transfer-app
- Cliquez sur la tuile de l'application, puis sur Sélectionner.
- Cliquez sur Examiner + attribuer.
Transmettre vos identifiants d'application à la commande de création de tâche
Les identifiants de votre application sont transmis à la commande de création de tâche à l'aide d'un objet federatedIdentityConfig
. Copiez l'ID (client) de l'application et l'
ID de l'annuaire (locataire) que vous avez enregistré lors de la
Configurer les identifiants Microsoft dans
les champs client_id
et tenant_id
.
"federatedIdentifyConfig": {
"client_id": "efghe9d8-4810-800b-8f964ed4057f",
"tenant_id": "abcd1234-c8f0-4cb0-b0c5-ae4aded60078"
}
Voici un exemple de requête de création d'emploi:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Azure Federated Identity",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"federatedIdentifyConfig": {
"client_id": "AZURE_CLIENT_ID",
"tenant_id": "AZURE_TENANT_ID"
}
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Pour en savoir plus, consultez Créer des transferts. pour en savoir plus sur la création d'un transfert.
Restrictions d'adresses IP
Si vous limitez l'accès à vos ressources Azure à l'aide d'un pare-feu Azure Storage, vous devez ajouter les plages d'adresses IP utilisées par les nœuds de calcul du service de transfert de stockage à votre liste les adresses IP autorisées.
Étant donné que ces plages d'adresses IP peuvent changer, nous publions les valeurs actuelles sous forme de 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 l'utilisation de cette plage pour les requêtes du service de transfert de stockage.
Nous vous recommandons d'extraire des données de ce document au moins une fois par semaine pour mettre à jour votre configuration de sécurité. 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, suivez les instructions de l'article Microsoft Azure Configurer les pare-feu et les réseaux virtuels Azure Storage.