Las transferencias sin agente incluyen transferencias en Cloud Storage o desde Amazon S3, Azure Blob Storage o Data Lake Storage Gen2, o listas de URLs de objetos públicos. No requieren agentes de transferencia ni grupos de agentes.
Cuando transfieras datos entre proveedores de la nube en una transferencia sin agente, debes conceder permisos a dos principales:
- La cuenta de usuario que crea o gestiona la transferencia.
- Un agente de servicio gestionado por Google que se crea automáticamente la primera vez que interactúas con Storage Transfer Service. Puedes delegar los permisos del agente de servicio en una cuenta de servicio gestionada por el usuario. Consulta el artículo Delegar permisos de agente de servicio en una cuenta de servicio gestionada por el usuario.
Para saber cómo conceder roles de gestión de identidades y accesos, consulta el artículo sobre cómo conceder, cambiar y revocar el acceso a los recursos.
Método más sencillo para conceder permisos
La CLI de gcloud
se puede usar para conceder los permisos necesarios a la cuenta de usuario y a la cuenta de servicio gestionada por Google.
Estos permisos permiten al usuario crear, editar y eliminar trabajos de transferencia, así como definir o modificar límites de ancho de banda.
Si estos permisos son demasiado amplios para las políticas de tu organización, consulta las secciones posteriores de este documento para ver los permisos mínimos que requiere el Servicio de transferencia de Storage.
Para inspeccionar los permisos y mostrar los roles que faltan, ejecuta el siguiente comando:
gcloud transfer authorize
Para aplicar esos roles automáticamente, usa la marca --add-missing
:
gcloud transfer authorize --add-missing
Para conceder permisos a una cuenta de servicio gestionada por el usuario en lugar del usuario, pasa el archivo de clave de la cuenta de servicio:
gcloud transfer authorize --add-missing --creds-file=path/to/key.json
El comando concede los siguientes permisos.
Para el usuario o la cuenta de servicio gestionada por el usuario:
roles/owner
roles/storagetransfer.admin
roles/storagetransfer.transferAgent
roles/storage.objectAdmin
roles/pubsub.editor
Al agente de servicio gestionado por Google:
roles/storage.admin
roles/storagetransfer.serviceAgent
Para obtener instrucciones sobre cómo instalar la CLI de gcloud
, consulta la guía de inicio rápido de gcloud
.
Permisos de cuenta de usuario
La cuenta de usuario necesita permiso para ejecutar operaciones de Servicio de transferencia de Storage. Estos permisos se conceden a través de uno de estos dos roles: Usuario de Storage Transfer o Administrador de Storage Transfer.
Además, la cuenta necesita permiso para recuperar el agente de servicio gestionado por Google para comprobar sus permisos.
Para configurar la cuenta de usuario o la cuenta de servicio gestionada por el usuario, concede los siguientes permisos y roles de IAM.
Rol o permiso | Para qué sirve | Notas |
---|---|---|
resourcemanager.projects.getIamPolicy |
Este permiso se usa para confirmar que la cuenta de servicio gestionada por Google tiene los permisos necesarios para realizar una transferencia. | Para conceder este permiso, asigna el rol predefinido Lector de roles (roles/iam.roleViewer ) o crea un rol personalizado con este único permiso y asigna el rol personalizado. |
Uno de los siguientes roles: | ||
Administrador de Transferencia de Almacenamiento
(roles/storagetransfer.admin )
|
Permite todas las operaciones del Servicio de transferencia de Storage, incluida la eliminación de tareas de transferencia. | Para ver una lista detallada de los permisos concedidos, consulta Roles predefinidos del Servicio de transferencia de Storage. |
Usuario de transferencia de Storage
(roles/storagetransfer.user )
|
Permite al usuario crear, obtener, actualizar y mostrar transferencias. No permite que el usuario elimine trabajos de transferencia. | Para ver una lista detallada de los permisos concedidos, consulta Roles predefinidos del Servicio de transferencia de Storage. |
Permisos de agente de servicio gestionado por Google
El Servicio de transferencia de Storage usa un agente de servicio gestionado por Google para mover tus datos. Esta cuenta de servicio se crea automáticamente la primera vez que creas una tarea de transferencia, llamas a googleServiceAccounts.get
o visitas la página de creación de tareas en la consola de Google Cloud .
El formato de la cuenta de servicio suele ser project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Para obtener el identificador de tu cuenta de servicio, usa la llamada a la API [googleServiceAccounts.get
][googleServiceAccounts.get].
Asignación automática de roles
Hay dos formas de asignar automáticamente los roles correctos al agente del servicio:
Crea la transferencia con la Google Cloud consola. La consola aplica automáticamente los permisos necesarios.
Usa el valor
gcloud transfer authorize --add-missing
. Consulta el método más sencillo para conceder permisos.
Asignación manual de roles
Para permitir que el agente de servicio acceda a los recursos necesarios para completar las transferencias, asigna los siguientes roles o permisos equivalentes al agente de servicio.
Rol o permiso | Para qué sirve | Notas |
---|---|---|
Editor de segmentos heredados de Storage
(roles/storage.legacyBucketWriter )
|
Permite que el Servicio de transferencia de Storage lea los metadatos de los segmentos, muestre los objetos de los segmentos y escriba objetos en el segmento de destino. |
Concesión en el segmento de destino de Cloud Storage. Los roles de |
Lector de objetos de almacenamiento
(roles/storage.objectViewer )
|
Permite que el Servicio de transferencia de Storage copie objetos de una fuente de Cloud Storage. También permite que Storage Transfer Service determine si un archivo ya existe en el destino de Cloud Storage y si ha cambiado. |
Concede permisos en el segmento de origen de Cloud Storage si vas a transferir datos desde Cloud Storage. También debes conceder permisos en el segmento de destino de Cloud Storage si la transferencia está configurada para [sobrescribir objetos](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) en el sumidero cuando sean diferentes o nunca. No es necesario si la opción de transferencia es Sobrescribir siempre. Si es adecuado para tu situación, puedes asignar el rol a nivel de proyecto al proyecto desde el que se ejecuta el Servicio de Transferencia de Almacenamiento. |
Lector de segmentos heredados de Storage
(roles/storage.legacyBucketReader )
|
Permite que el servicio de transferencia de Storage lea los metadatos de los segmentos de Cloud Storage. |
Concede permisos en el segmento de origen de Cloud Storage si vas a transferir datos desde Cloud Storage. Los roles de |
Consulta las instrucciones en Conceder los permisos necesarios.
Delegar en una cuenta de servicio gestionada por el usuario
Puedes delegar los permisos del agente de servicio en una cuenta de servicio gestionada por el usuario. De esta forma, puede separar los permisos de los segmentos de diferentes trabajos de transferencia entre cuentas de servicio, en lugar de centralizarlos en un solo agente de servicio.
Para obtener más información, consulta el artículo Delegar permisos de agente de servicio en una cuenta de servicio gestionada por un usuario.
Transferencias de Cloud Storage entre proyectos
Para transferir objetos entre segmentos de Cloud Storage de distintos proyectos, debes conceder permiso a un único agente de servicio en el segmento de origen y en el de destino. El agente de servicio pertenece al proyecto desde el que estás creando la transferencia.
El usuario o la cuenta de servicio gestionada por el usuario solo necesita permisos en el proyecto que crea la transferencia.
Para obtener el correo del agente del servicio, consulta Buscar el correo del agente del servicio.
En el segmento de origen, asigna los siguientes roles a nivel de segmento al agente de servicio:
Storage Legacy Bucket Reader
Storage Object Viewer
En el cubo de destino, asigna el siguiente rol a nivel de cubo al agente de servicio same:
Storage Legacy Bucket Writer
Para obtener instrucciones sobre cómo asignar roles a nivel de segmento, consulta las siguientes páginas:
Los roles de Cloud Storage Legacy
no se pueden conceder a nivel de proyecto.
Restricciones de la organización
Si tu organización ha aplicado restricciones de políticas de organización, como restricciones de dominio (constraints/iam.allowedPolicyMemberDomains
) o inhabilitar la vinculación de cuentas de servicio a recursos de otros proyectos (constraints/iam.disableCrossProjectServiceAccountUsage
), estas restricciones deben actualizarse para que las transferencias entre proyectos se completen correctamente.
También puede que tengas que actualizar los ajustes de Controles de Servicio de VPC para admitir transferencias entre proyectos. Consulta Configurar Controles de Servicio de VPC para transferencias de almacenamiento de objetos en la nube.
Permisos de AWS y Microsoft
También debe configurar el acceso a los archivos de origen si están en AWS S3 o en Microsoft Azure Storage. En los siguientes documentos se detallan los pasos necesarios: