Antes de transferir datos de un segmento de Azure Storage, debe configurar el acceso a ese segmento para que el Servicio de transferencia de Storage pueda recuperar sus objetos.
El Servicio de transferencia de Storage admite los siguientes métodos de autenticación de Azure:
Tokens de firma de acceso compartido (SAS). Los tokens de SAS se pueden especificar directamente al crear un trabajo de transferencia o se pueden almacenar en Secret Manager.
Las claves compartidas de Azure se pueden almacenar en Secret Manager y el secreto se puede transferir al crear un trabajo de transferencia.
Las credenciales federadas se transfieren en un objeto
federatedIdentityConfig
durante la creación de la tarea de transferencia.
Este documento también incluye información sobre cómo añadir direcciones IP de trabajadores del Servicio de transferencia de Storage a tu firewall de Azure Storage para permitir el acceso. Para obtener más información, consulta Restricciones de IP.
Regiones disponibles
El Servicio de transferencia de Storage puede transferir datos de las siguientes regiones de almacenamiento de Microsoft Azure:- América: este de EE. UU., este de EE. UU. 2, oeste de EE. UU., oeste de EE. UU. 2, oeste de EE. UU. 3, centro de EE. UU., centro-norte de EE. UU., centro-sur de EE. UU., centro-oeste de EE. UU., centro de Canadá, este de Canadá y sur de Brasil
- Asia-Pacífico: Australia Central, Australia Este, Australia Sudeste, India Central, India del Sur, India del Oeste, Sudeste Asiático, Asia Oriental, Japón Este, Japón Oeste, Corea del Sur y Corea Central
- Europa, Oriente Medio y África (EMEA): Centro de Francia, Centro-oeste de Alemania, Este de Noruega, Centro de Suecia, Norte de Suiza, Norte de Europa, Oeste de Europa, Sur del Reino Unido, Oeste del Reino Unido, Centro de Catar, Norte de Emiratos Árabes Unidos, Norte de Sudáfrica
Opción 1: Autenticarse mediante un token de SAS
Sigue estos pasos para configurar el acceso a un contenedor de Microsoft Azure Storage mediante un token de SAS. También puedes guardar tu token de SAS en Secret Manager. Para ello, sigue las instrucciones que se indican en el artículo Autenticar con una clave compartida de Azure o un token de SAS en Secret Manager.
Crea o usa un usuario de Microsoft Azure Storage para acceder a la cuenta de almacenamiento del contenedor de blobs de Microsoft Azure Storage.
Crea un token de SAS a nivel de contenedor. Consulta las instrucciones en Conceder acceso limitado a recursos de Azure Storage mediante firmas de acceso compartido.
En Servicios permitidos debe incluirse Blob.
En Tipos de recursos permitidos, selecciona Contenedor y Objeto.
En Permisos permitidos deben incluirse Leer y Mostrar. Si la transferencia está configurada para eliminar objetos del origen, también debe incluir el permiso Eliminar.
El tiempo de expiración predeterminado de los tokens de SAS es de 8 horas. Define un tiempo de vencimiento razonable que te permita completar la transferencia correctamente.
No especifiques ninguna dirección IP en el campo Direcciones IP permitidas. Storage Transfer Service usa varias direcciones IP y no admite restricciones de direcciones IP.
En Protocolos permitidos, debe seleccionar Solo HTTPS.
Una vez creado el token, anota el valor del token SAS que se devuelve. Necesitará este valor al configurar la transferencia con el Servicio de transferencia de Storage.
Opción 2: Autenticarte mediante una clave compartida de Azure o un token de SAS en Secret Manager
Secret Manager es un servicio seguro que almacena y gestiona datos sensibles, como contraseñas. Utiliza un cifrado sólido, un control de acceso basado en roles y un registro de auditoría para proteger tus secretos.
El Servicio de transferencia de Storage admite nombres de recursos de Secret Manager que hacen referencia a tus credenciales de Azure almacenadas de forma segura.
Para usar una clave compartida de Azure, debes guardar la clave en Secret Manager. Los tokens de SAS se pueden guardar en Secret Manager o transferir directamente.
Cuando especifica una clave compartida, el Servicio de transferencia de Storage usa esa clave para generar una SAS de servicio cuyo ámbito se limita al contenedor de Azure especificado en el trabajo de transferencia.
Activar la API
Enable the Secret Manager API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin
), which
contains the serviceusage.services.enable
permission. Learn how to grant
roles.
Configurar permisos adicionales
Permisos de usuario
El usuario que cree el secreto debe tener el siguiente rol:
- Administrador de Secret Manager (
roles/secretmanager.admin
)
Consulta cómo conceder un rol.
Permisos de agente de servicio
El agente de servicio del Servicio de transferencia de Storage requiere el siguiente rol de gestión de identidades y accesos:
- Lector de recursos de Secret Manager (
roles/secretmanager.secretAccessor
)
Para conceder el rol a tu agente de servicio, sigue estos pasos:
consola de Cloud
Sigue las instrucciones para recuperar el correo de tu agente de servicio.
Ve a la página Gestión de identidades y accesos de la Google Cloud consola.
Haz clic en Conceder acceso.
En el cuadro de texto Nuevos principales, introduce el correo del agente de servicio.
En el menú desplegable Selecciona un rol, busca y selecciona Permiso para acceder a los recursos de Secret Manager.
Haz clic en Guardar.
gcloud
Usa el comando gcloud projects add-iam-policy-binding
para añadir el rol de gestión de identidades y accesos a tu agente de servicio.
Sigue las instrucciones para recuperar el correo de tu agente de servicio.
En la línea de comandos, introduce el siguiente comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Crear un secreto
Crea un secreto con Secret Manager:
consola de Cloud
Ve a la página Secret Manager en la Google Cloud consola.
Haz clic en Crear secreto.
Escribe un nombre.
En el cuadro de texto Valor del secreto, introduce tus credenciales en uno de los siguientes formatos.
{ "sas_token" : "SAS_TOKEN_VALUE" }
O:
{ "access_key" : "ACCESS_KEY" }
Haz clic en Crear secreto.
Una vez creado el secreto, anota el nombre completo del recurso:
Selecciona la pestaña Resumen.
Copia el valor de Nombre de recurso. Utiliza el siguiente formato:
projects/1234567890/secrets/SECRET_NAME
gcloud
Para crear un secreto con la herramienta de línea de comandos gcloud, envía las credenciales en formato JSON al comando gcloud secrets create
:
printf '{
"sas_token" : "SAS_TOKEN_VALUE"
}' | gcloud secrets create SECRET_NAME --data-file=-
O:
printf '{
"access_key" : "ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Recupera el nombre completo del recurso del secreto:
gcloud secrets describe SECRET_NAME
Anota el valor de name
en la respuesta. Utiliza el siguiente formato:
projects/1234567890/secrets/SECRET_NAME
Para obtener más información sobre cómo crear y gestionar secretos, consulta la documentación de Secret Manager.
Transfiere tu secreto al comando de creación de trabajos
Para usar Secret Manager con Storage Transfer Service, debe usar la API REST para crear un trabajo de transferencia.
Envía el nombre del recurso de Secret Manager como valor del campo 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"
}
}
}
Consulta Crear transferencias para obtener más información sobre cómo crear una transferencia.
Opción 3: Autenticar con una identidad federada
El Servicio de transferencia de Storage admite la federación de identidades de cargas de trabajo de Azure conGoogle Cloud. El Servicio de transferencia de Storage puede enviar solicitudes a Azure Storage a través de aplicaciones de Azure registradas, lo que elimina la necesidad de transferir credenciales directamente al Servicio de transferencia de Storage.
Para configurar la identidad federada, sigue estas instrucciones.
Configurar las credenciales de Google Cloud
Debe añadir el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) al agente de servicio del Servicio de transferencia de Storage para permitir la creación de tokens de ID de OpenID Connect (OIDC) para la cuenta.
Recupera el
accountEmail
y elsubjectId
del agente de servicio gestionado por Google que se crea automáticamente cuando empiezas a usar Storage Transfer Service. Para obtener estos valores, sigue estos pasos:Ve a la página de referencia de
googleServiceAccounts.get
.Se abrirá un panel interactivo titulado Prueba este método.
En el panel, en Parámetros de solicitud, introduce tu ID de proyecto. El proyecto que especifiques aquí debe ser el que utilices para gestionar el Servicio de transferencia de Storage.
Haz clic en la opción para ejecutar. Los elementos
accountEmail
ysubjectId
se incluyen en la respuesta. Guarda estos valores.
Asigna el rol Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
) al agente de servicio del Servicio de transferencia de Storage. Sigue las instrucciones que se indican en el artículo Gestionar el acceso a cuentas de servicio.
Configurar las credenciales de Microsoft
Primero, registra una aplicación y añade una credencial federada:
- Inicia sesión en https://portal.azure.com.
- Ve a la página Registros de aplicaciones.
- Haz clic en Nuevo registro.
- Escribe un nombre. Por ejemplo,
azure-transfer-app
. - Selecciona Solo cuentas de este directorio de la empresa.
- Haz clic en Registrarse. Se crea la aplicación. Ten en cuenta la
Application (client) ID
y laDirectory (tenant) ID
. También puedes recuperarlos más tarde en la página Resumen de la aplicación. - Haz clic en Certificados y secretos y selecciona la pestaña Credenciales federadas.
- Haz clic en Añadir credencial.
- Seleccione Otro emisor como situación e introduzca la siguiente información:
- Emisor:
https://accounts.google.com
- Identificador de asunto: el
subjectId
de tu agente de servicio, que has obtenido en Configurar Google Cloud credenciales. - Nombre único de la credencial federada.
- La audiencia debe seguir siendo
api://AzureADTokenExchange
.
- Emisor:
- Haz clic en Añadir.
A continuación, concede acceso a la aplicación a tu contenedor de Azure Storage:
- Ve a la página Cuentas de almacenamiento de tu cuenta de Azure.
- Selecciona tu cuenta de almacenamiento y, en la sección Almacenamiento de datos, selecciona Contenedores.
- Haga clic en el bucket al que quiera conceder acceso.
- En el menú de la izquierda, haz clic en Control de acceso (IAM) y selecciona la pestaña Roles.
- Haz clic en el menú adicional (
...
) situado junto a cualquier rol y selecciona Clonar. - Introduce un nombre para este rol personalizado y selecciona Empezar desde cero. Haz clic en Siguiente.
- Haz clic en Añadir permisos y busca
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
. - Haz clic en la tarjeta Almacenamiento de Microsoft que aparece.
- Selecciona el botón de radio Acciones con datos.
- Selecciona Leer : Leer blob.
- Haz clic en Añadir.
- Si va a eliminar objetos de la fuente después de la transferencia, haga clic de nuevo en Añadir permisos y busque
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
. - Haz clic en la tarjeta Microsoft Storage que aparece, selecciona Acciones de datos y, a continuación, Eliminar : eliminar blob.
- Haz clic en Añadir.
- Haz clic en Revisar y crear y, a continuación, en Crear. Se te redirige a la página Control de acceso (IAM) del cubo.
- Haz clic en Añadir y selecciona Añadir asignación de rol.
- En la lista de roles, selecciona el rol personalizado y haz clic en Siguiente.
- Haz clic en Seleccionar miembros.
- En el campo Seleccionar, introduce el nombre de la aplicación que hayas registrado anteriormente. Por ejemplo,
azure-transfer-app
. - Haz clic en la baldosa de la aplicación y, a continuación, en Seleccionar.
- Haz clic en Revisar y asignar.
Transfiere los identificadores de tu aplicación al comando de creación de trabajos
Los identificadores de tu aplicación se transfieren al comando de creación de trabajos mediante un objeto federatedIdentityConfig
. Copia el ID de aplicación (cliente) y el ID de directorio (cliente) que has guardado durante los pasos de Configurar credenciales de Microsoft en los campos client_id
y tenant_id
.
"federatedIdentityConfig": {
"client_id": "efghe9d8-4810-800b-8f964ed4057f",
"tenant_id": "abcd1234-c8f0-4cb0-b0c5-ae4aded60078"
}
Una solicitud de creación de trabajo de ejemplo tiene el siguiente aspecto:
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"
}
}
}
Consulta Crear transferencias para obtener más información sobre cómo crear una transferencia.
Restricciones de IP
Si restringe el acceso a sus recursos de Azure mediante un firewall de Azure Storage, debe añadir los intervalos de direcciones IP que utilizan los trabajadores del Servicio de Transferencia de Almacenamiento a su lista de IPs permitidas.
Como estos intervalos de IP pueden cambiar, publicamos los valores actuales en un archivo JSON en una dirección permanente:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Cuando se añade un nuevo intervalo al archivo, esperaremos al menos 7 días antes de usarlo para las solicitudes del Servicio de Transferencia de Almacenamiento.
Te recomendamos que extraigas datos de este documento al menos una vez a la semana para mantener actualizada tu configuración de seguridad. Para ver un ejemplo de una secuencia de comandos de Python que obtiene intervalos de IPs de un archivo JSON, consulta este artículo de la documentación de Virtual Private Cloud.
Para añadir estos intervalos como IPs permitidas, sigue las instrucciones del artículo de Microsoft Azure Configurar firewalls y redes virtuales de Azure Storage.