Cloud Storage usa una cuenta de servicio administrada por Google, conocida como agente de servicio, para mover datos a un depósito de Cloud Storage. Este agente de servicio se crea la primera vez que llamas a googleServiceAccounts.get
.
No es necesario que el bucket de destino pertenezca al mismo proyecto que el agente de servicio. Los pasos son los mismos sin importar el proyecto en el que se encuentre el bucket.
Permisos de usuario
Para otorgar los permisos necesarios al agente de servicio, debes tener los permisos relevantes en el bucket de destino:
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
Los roles Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner
) o Storage Admin (roles/storage.admin
) otorgan los permisos necesarios.
Otorga permisos automáticamente en la consola de Google Cloud
Si usas la consola de Google Cloud para crear tu transferencia y tienes los permisos enumerados en Permisos de usuario, el agente de servicio recibirá automáticamente los permisos necesarios en tu bucket de destino.
Puedes omitir los pasos en esta página. Si es necesario, configura el acceso a tu fuente y, luego, crea una transferencia.
Permisos necesarios
El agente de servicio debe tener los siguientes permisos para acceder al bucket de destino:
Permiso | Descripción |
---|---|
storage.buckets.get |
Permite que la cuenta de servicio obtenga la ubicación del bucket. |
storage.objects.create |
Permite que la cuenta de servicio agregue objetos al bucket. |
storage.objects.delete |
Permite que la cuenta de servicio borre objetos en el bucket.
Necesario si configuras Ten en cuenta que si el bucket de destino tiene habilitado el control de versiones de objetos, ni |
storage.objects.list |
Permite que la cuenta de servicio enumere los objetos en el bucket. Se requiere si estableces overwriteObjectsAlreadyExistingInSink en false o deleteObjectsUniqueInSink en true . |
El siguiente rol predefinido otorga los permisos necesarios:
- Escritor de buckets heredados de almacenamiento (
roles/storage.legacyBucketWriter
)
Cualquier rol de Cloud Storage marcada como rol legacy
solo se puede otorgar a nivel de bucket.
Para obtener una lista completa de las funciones de Cloud Storage y los permisos que contienen, consulta las funciones de IAM.
Otorga los permisos necesarios.
Para otorgar el rol de Escritor de depósitos heredados de almacenamiento al agente de servicio, sigue los pasos a continuación.
Busca el correo electrónico del agente de servicio
Ve a la página de referencia de
googleServiceAccounts.get
.Se abrirá un panel interactivo con el título Prueba este método.
En el panel, en Parámetros de solicitud, ingresa el ID del proyecto. El proyecto que especifiques aquí debe ser el proyecto que usas para administrar el Servicio de transferencia de almacenamiento, que puede ser diferente del proyecto del bucket de destino.
Haz clic en Ejecutar.
El correo electrónico del agente de servicio se muestra como el valor de
accountEmail
. Copia este valor.El correo electrónico del agente de servicio usa el formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Agrega el agente de servicio a una política a nivel de bucket
Console
- En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
Haz clic en el menú Ampliado del bucket (
) asociado al bucket en el que deseas asignarle un rol a una principal.Elige Editar acceso.
Haz clic en el botón + Agregar principal.
En el campo Principales nuevas, ingresa el correo electrónico de la cuenta de tu agente de servicio.
Selecciona
Storage Legacy Bucket Writer
en el menú desplegable Selecciona un rol.Haz clic en Guardar.
gcloud
Usa el comando gcloud storage buckets add-iam-policy-binding
:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketWriter
Aquí:
BUCKET_NAME
es el nombre del bucket para el cual le otorgas acceso a la principal. Por ejemplo,my-bucket
YOUR_AGENT_EMAIL
es el correo electrónico de la cuenta del agente que copiaste en Encuentra el correo electrónico del agente de servicio.
Muestras de código
C++
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Para obtener más información, consulta la API de C++ de Cloud Storage documentación de referencia.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
C#
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Para obtener más información, consulta la API de C# de Cloud Storage documentación de referencia.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Para obtener más información, consulta la API de Go de Cloud Storage documentación de referencia.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Java.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Node.js.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
PHP
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Para obtener más información, consulta la API de PHP de Cloud Storage documentación de referencia.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Para obtener más información, consulta la API de Python de Cloud Storage documentación de referencia.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Para obtener información sobre cómo instalar y usar la biblioteca cliente de Cloud Storage, consulta Bibliotecas cliente de Cloud Storage. Si deseas obtener más información, consulta la documentación de referencia de la API de Cloud Storage Ruby.
Para autenticarte en Cloud Storage, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
JSON
Tener la gcloud CLI instalada e inicializada, lo que te permite generar un token de acceso para el encabezado
Authorization
.Crea un archivo JSON que contenga la siguiente información:
{ "bindings":[ { "role": "roles/storage.legacyBucketWriter", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Aquí:
Usa
cURL
para llamar a la API de JSON con una solicitudPUT setIamPolicy
:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
Aquí:
JSON_FILE_NAME
es la ruta de acceso del archivo que creaste en el paso 2.OAUTH2_TOKEN
es el token de acceso que generaste en el paso 1.BUCKET_NAME
es el nombre del bucket al que le quieres otorgar acceso al principal. Por ejemplo,my-bucket
Para obtener más información sobre cómo asignar roles de IAM a los recursos de Cloud Storage, consulta la documentación de IAM de Cloud Storage.