Avant de transférer des données depuis un bucket Azure Storage, vous devez configurer l'accès à ce bucket afin 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 de signature d'accès partagé (SAP). Les jetons SAP peuvent être spécifiés directement lors de la création d'une tâche de transfert ou stockés 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.
Les identifiants fédérés sont transmis dans un objet
federatedIdentityConfiglors de la création de la tâche de transfert.
Ce document fournit également des informations sur l'ajout d'adresses IP de service worker du service de transfert de stockage à votre pare-feu Azure Storage pour autoriser l'accès. Pour en savoir plus, consultez la section Restrictions d'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 : East US (États-Unis Est), East US 2 (États-Unis Est 2), West US (États-Unis Ouest), West US 2 (États-Unis Ouest 2), West US 3 (États-Unis Ouest 3), Central US (États-Unis Centre), North Central US (États-Unis Centre Nord), South Central US (États-Unis Centre Sud), West Central US (États-Unis Centre Ouest), Canada Central (Canada Centre), Canada East (Canada Est), Brazil South (Brésil Sud)
- Asie-Pacifique : Australia Central (Australie Centre), Australia East (Australie Est), Australia Sud-Est (Australie Sud-Est), Central India (Inde Centre), South India (Inde Sud), West India (Inde Ouest), Southeast Asia (Asie du Sud-Est), East Asia (Asie de l'Est), Japan East (Japon Est), Japan West (Japon Ouest), Korea South (Corée du Sud), Korea Central (Corée du Centre)
- Europe, Moyen-Orient, Afrique (EMEA) : France Central (France Centre), Germany West Central (Allemagne Centre Ouest), Norway East (Norvège Est), Sweden Central (Suède Centre), Switzerland North (Suisse Nord), North Europe (Europe du Nord), West Europe (Europe de l'Ouest), UK South (Royaume-Uni Sud), UK West (Royaume-Uni Ouest), Qatar Central (Qatar Centre), UAE North (Émirats arabes unis Nord), South Africa North (Afrique du Sud Nord)
Option 1 : S'authentifier à l'aide d'un jeton SAP
Pour configurer l'accès à un conteneur Microsoft Azure Storage à l'aide d'un jeton SAP, 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 obtenir des instructions, consultez la section Accorder un accès limité aux ressources Azure Storage à l'aide de signatures d'accès partagé.
Les Allowed services (Services autorisés) doivent inclure Blob.
Pour Allowed resource types (Types de ressources autorisés), sélectionnez Container (Conteneur) et Object (Objet).
Les Allowed permissions (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 Delete (Supprimer).
Le délai d'expiration par défaut pour les jetons SAP est de 8 heures. Définissez un délai d'expiration raisonnable vous permettant 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.
Les Allowed protocols (Protocoles autorisés) doivent être HTTPS only (HTTPS seulement).
Une fois le jeton créé, notez la valeur du jeton SAP qui est renvoyé. Vous aurez besoin de cette valeur lors de la configuration de 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 SAP 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 puissant, un contrôle des accès basé sur les rôles et une journalisation 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 SAP 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 une SAP de service dont la portée est limitée au conteneur Azure spécifié dans la tâche de transfert.
Activer l'API
Activer l'API Secret Manager
Rôles requis pour activer les API
Pour activer les API, vous avez besoin de l'autorisation serviceusage.services.enable. Si vous
avez créé le projet, vous disposez probablement déjà de cette autorisation via le
rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le
rôle Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin).
Découvrez comment attribuer des rôles.
Configurer des autorisations supplémentaires
Autorisations des utilisateurs
L'utilisateur qui crée le secret a besoin 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 a besoin du 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 dans la Google Cloud console.
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é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
Pour créer un secret avec Secret Manager :
console Cloud
Accédez à la page Secret Manager dans la Google Cloud console.
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 le nom complet de la ressource du secret :
Sélectionnez l'onglet Overview (Présentation).
Copiez la valeur de Nom de la ressource. Elle 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 '{
"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 complet de la ressource du secret :
gcloud secrets describe SECRET_NAME
Notez la valeur de name dans la réponse. Elle 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
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 la ressource Secret Manager en tant que valeur du
transferSpec.azureBlobStorageDataSource.credentialsSecret champ :
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 sur la création d'un transfert, consultez la section Créer des transferts.
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 la nécessité de transmettre directement des identifiants au service de transfert de stockage.
Pour configurer l'identité fédérée, suivez ces instructions.
Configurer des identifiants Google Cloud
Pour autoriser le service de transfert de stockage à créer des jetons d'identification OpenID Connect (OIDC) :
Agent de service
Si votre tâche de transfert ne spécifie pas de serviceAccount (c'est-à-dire que vous ne
déléguez pas les autorisations de l'agent de service à un compte de service géré par l'utilisateur),
attribuez le rôle Créateur de jetons du compte de service
(roles/iam.serviceAccountTokenCreator) à l'agent de service :
Récupérez l'
accountEmailde l'agent de service :- Accédez à la page de référence
googleServiceAccounts.get. - Sous Paramètres des requêtes, saisissez votre ID du projet.
- Cliquez sur Exécuter. L'
accountEmailet lesubjectIdsont renvoyés.
- Accédez à la page de référence
Attribuez le rôle Créateur de jetons du compte de service (
roles/iam.serviceAccountTokenCreator) à l'agent de service lui-même. Suivez les instructions de la section Gérer l'accès aux comptes de service.
Compte de service géré par l'utilisateur
Si vous déléguez les autorisations de l'agent de service à un compte de service géré par l'utilisateur, vos identifiants Google sont configurés lorsque vous configurez la délégation d'autorisations. Aucune étape supplémentaire n'est requise.
Configurer des identifiants Microsoft
Commencez par enregistrer une application et ajouter un identifiant fédéré :
- Connectez-vous à https://portal.azure.com.
- Accédez à la page App registrations (Inscriptions d'applications).
- Cliquez sur New registration (Nouvelle inscription).
- Saisissez un nom. Par exemple,
azure-transfer-app. - Sélectionnez Accounts in this organizational directory only (Comptes de ce répertoire organisationnel uniquement).
- Cliquez sur Register (S'inscrire). L'application est créée. Notez l'
Application (client) ID(ID [client] de l'application) et leDirectory (tenant) ID(ID [de locataire] de l'annuaire). Vous pouvez également les récupérer ultérieurement sur la page Overview (Présentation) de l'application. - Cliquez sur Certificates &secrets (Certificats et secrets), puis sélectionnez l'onglet Federated credentials (Identifiants fédérés).
- Cliquez sur Add credential (Ajouter un identifiant).
Sélectionnez Other issuer (Autre émetteur) comme scénario et saisissez les informations suivantes :
- Émetteur :
https://accounts.google.com Identifiant du sujet : selon que vous utilisez l'agent de service par défaut ou un compte de service géré par l'utilisateur :
- Le
subjectIdde votre agent de service, que vous avez récupéré dans Configurer des identifiants Google Cloud. - Le
uniqueIdde votre compte de service géré par l'utilisateur. Pour savoir comment récupérer cette valeur, consultez la section Récupérer l'ID unique d'un compte de service pour en savoir plus.
- Le
Nom unique de 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 Storage Accounts (Comptes de stockage) de votre compte Azure.
- Sélectionnez votre compte de stockage, puis Containers (Conteneurs) dans la section Data storage (Stockage de données).
- Cliquez sur le bucket auquel vous souhaitez accorder l'accès.
- Dans le menu de gauche, cliquez sur Access Control (IAM) (Contrôle d'accès [IAM]), puis sélectionnez l'onglet Roles (Rôles).
- Cliquez sur le menu à développer (
...) à côté d'un rôle, puis sélectionnez Clone (Cloner). - Saisissez un nom pour ce rôle personnalisé et sélectionnez Start from scratch (Partir de zéro). Cliquez sur Suivant.
- Cliquez sur Add permissions (Ajouter des autorisations), puis recherchez
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read. - Cliquez sur la fiche Microsoft Storage qui s'affiche.
- Sélectionnez le bouton radio Data actions (Actions sur les données).
- Sélectionnez Read : Read Blob (Lecture : lire l'objet blob).
- Cliquez sur Ajouter.
- Si vous supprimez des objets à la source après le transfert, cliquez à nouveau sur Add permissions (Ajouter des autorisations), puis recherchez
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete. - Cliquez sur la fiche Microsoft Storage qui s'affiche, sélectionnez Data actions (Actions sur les données), puis sélectionnez Delete : Delete blob (Supprimer : supprimer l'objet blob).
- Cliquez sur Ajouter.
- Cliquez sur Review + create (Examiner et créer), puis sur Create (Créer). Vous êtes redirigé vers la page Access Control (IAM) (Contrôle d'accès [IAM]) du bucket.
- Cliquez sur Add (Ajouter), puis sélectionnez Add role assignment (Ajouter une attribution de rôle).
- Dans la liste des rôles, sélectionnez votre rôle personnalisé, puis cliquez sur Next (Suivant).
- Cliquez sur Select members (Sélectionner des membres).
- Dans le champ Select (Sélectionner), saisissez le nom de l'application que vous avez enregistrée précédemment. Par exemple,
azure-transfer-app. - Cliquez sur la vignette de l'application, puis sur Select (Sélectionner).
- Cliquez sur Review + assign (Examiner et attribuer).
Transmettre les identifiants de votre 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'Application (client) ID (ID [client] de l'application) et le
Directory (tenant) ID (ID [de locataire] de l'annuaire) que vous avez enregistrés lors des étapes Configure Microsoft credentials (Configuration des identifiants Microsoft) dans les champs client_id et tenant_id.
"federatedIdentityConfig": {
"client_id": "efghe9d8-4810-800b-8f964ed4057f",
"tenant_id": "abcd1234-c8f0-4cb0-b0c5-ae4aded60078"
}
Voici un exemple de requête de création de tâche :
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",
"federatedIdentityConfig": {
"client_id": "AZURE_CLIENT_ID",
"tenant_id": "AZURE_TENANT_ID"
}
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Pour en savoir plus sur la création d'un transfert, consultez la section Créer des transferts.
Restrictions liées aux 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 d'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 de l'utiliser pour les requêtes 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 récupère des plages d'adresses IP à partir d'un fichier JSON, consultez cet article de la documentation cloud privé virtuel documentation.
Pour ajouter ces plages en tant qu'adresses IP autorisées, suivez les instructions de l'article Microsoft Azure, Configurer des pare-feu et des réseaux virtuels Azure Storage.