Tipos de credenciales compatibles con varios casos de uso

Descripción general

En la actualidad, gsutil admite varios tipos de credenciales o autenticación, además de la capacidad de acceder a datos públicos de forma anónima (consulta gsutil help anon para obtener más información sobre el acceso anónimo). Cada uno de estos tipos de credenciales se analiza en detalle a continuación, junto con información sobre la configuración y el uso de las credenciales mediante el SDK de Cloud o las instalaciones independientes de gsutil.

Configura o usa credenciales mediante la distribución del SDK de Cloud de Gsutil

Cuando se instala o se usa gsutil a través del SDK de Cloud (“gcloud”), el SDK de Cloud almacena las credenciales en un archivo que el usuario no puede editar ubicado en ~/.config/gcloud (cualquier manipulación de credenciales debe realizarse a través del comando gcloud auth). Si necesitas configurar varias credenciales (p. ej., una para una cuenta de usuario individual y otra para una cuenta de servicio), el comando gcloud auth administra las credenciales por ti y, también, te permite cambiar entre ellas (si deseas obtener más información, consulta https://cloud.google.com/sdk/gcloud/reference/auth).

Una vez que se configuraron las credenciales mediante gcloud auth, se usarán sin importar si el usuario tiene archivos de configuración boto (que se encuentran en ~/.boto, a menos que se especifique una ruta diferente en la variable de entorno BOTO_CONFIG). Sin embargo, gsutil seguirá buscando credenciales en el archivo de configuración boto si se necesita un tipo de credencial que no sea de Cloud Storage y que no se encuentre en el almacén de credenciales de gcloud (p. ej., una credencial HMAC para una cuenta de S3).

Configura o usa credenciales mediante la distribución independiente de Gsutil

Si instalaste una distribución independiente de gsutil (descargada desde https://pub.storage.googleapis.com/gsutil.tar.gz, https://pub.storage.googleapis.com/gsutil.zip o PyPi), las credenciales se configuran mediante el comando gsutil config y se almacenan en el archivo de configuración boto editable por el usuario (ubicado en ~/.boto, a menos que se especifique una ruta diferente en el entorno BOTO_CONFIG). En este caso, si deseas configurar varias credenciales (p. ej., una para una cuenta de usuario individual y otra para una cuenta de servicio), debes ejecutar gsutil config una vez por cada credencial y guardar cada uno de los archivos de configuración boto que se generaron (p. ej., cambiar el nombre de uno a ~/.boto_user_account y el segundo a ~/.boto_service_account). Además, debes cambiar entre las credenciales mediante la variable de entorno BOTO_CONFIG (p. ej., con la ejecución de BOTO_CONFIG=~/.boto_user_account gsutil ls).

Ten en cuenta que cuando usas la versión independiente de gsutil con la API de JSON, puedes configurar, como máximo, uno de los siguientes tipos de credenciales de Cloud Storage en un solo archivo de configuración boto: cuenta de usuario de OAuth2, cuenta de servicio de OAuth2. Además, es posible que tengas credenciales HMAC de S3 (necesarias para usar las URL s3://) y credenciales de cuentas de servicio internas de Google Compute Engine. Las credenciales de cuentas de servicio internas de Google Compute Engine se usan solo cuando no hay credenciales de OAuth2.

Tipos de credenciales compatibles

gsutil admite varios tipos de credenciales (el subconjunto específico depende de la distribución de gsutil que uses; consulta el análisis anterior).

Cuenta de usuario de OAuth2:
Este es el tipo preferido de credenciales para autenticar solicitudes en nombre de un usuario específico (que es el uso más común de gsutil). Este es el tipo predeterminado de credenciales que se creará cuando ejecutes “gsutil config” (o “gcloud init” para las instalaciones del SDK de Cloud). Para obtener más detalles sobre la autenticación de OAuth2, consulta https://developers.google.com/accounts/docs/OAuth2#scenarios.
HMAC:

A este tipo de credenciales pueden usarlo los programas que se implementan mediante la autenticación HMAC, que es un mecanismo de autenticación compatible con otros proveedores de servicios de almacenamiento en la nube. Este tipo de credenciales también se puede usar para el uso interactivo cuando se transfieren datos hacia y desde proveedores de servicios que admiten credenciales HMAC. Este es el tipo de credenciales que se creará cuando ejecutes “gsutil config -a”.

Ten en cuenta que es posible configurar credenciales HMAC para Cloud Storage y otro proveedor de servicios. También se pueden configurar credenciales de cuentas de usuario de OAuth2 para Cloud Storage y credenciales HMAC para otro proveedor de servicios. Si deseas hacerlo, después de ejecutar el comando “gsutil config” (o “gcloud init” para las instalaciones del SDK de Cloud), puedes editar el archivo de configuración ~/.boto que se generó y buscar comentarios sobre dónde se puedan agregar otras credenciales.

Para obtener más detalles sobre la autenticación HMAC, consulta lo siguiente:
https://developers.google.com/storage/docs/reference/v1/getting-startedv1#keys
Cuenta de servicio de OAuth2:

Este es el tipo de credenciales preferido para la autenticación en nombre de un servicio o una aplicación (en lugar de un usuario). Por ejemplo, si ejecutarás gsutil desde un trabajo cron nocturno para subir y descargar datos, usar una cuenta de servicio permite que el trabajo cron no dependa de las credenciales de un empleado individual en tu empresa. Este es el tipo de credenciales que se configurará cuando ejecutes “gsutil config -e”. Para configurar las credenciales de la cuenta de servicio cuando se instalan a través del SDK de Cloud, ejecuta “gcloud auth activate-service-account”.

Es importante tener en cuenta que una cuenta de servicio se considera un editor de forma predeterminada para el acceso a la API, en lugar de un propietario. En particular, el hecho de que los editores tengan acceso de PROPIETARIO en las LCA de objetos y depósitos predeterminados, pero las opciones de LCA estándar quiten el acceso de PROPIETARIO de los editores, puede generar resultados inesperados. La solución a este problema es usar “gsutil acl ch” en lugar de “gsutil acl set <canned-ACL>” para cambiar los permisos en un depósito.

A fin de configurar una cuenta de servicio para usar con “gsutil config -e” o “gcloud auth activate-service-account”, consulta lo siguiente:

Para obtener más detalles sobre las cuentas de servicio de OAuth2, consulta lo siguiente:
https://developers.google.com/accounts/docs/OAuth2ServiceAccount
Para obtener más información acerca de las funciones de la cuenta, consulta lo siguiente:
https://developers.google.com/console/help/#DifferentRoles
Cuenta de servicio interna de Google Compute Engine:

Este es el tipo de cuenta de servicio que se usa para las cuentas alojadas en App Engine o Google Compute Engine. Esas credenciales se crean de manera automática en Google Compute Engine cuando ejecutas el comando gcloud compute instances creates, y las credenciales se pueden controlar con la marca --scopes.

Para obtener más detalles sobre las cuentas de servicio de Google Compute Engine, consulta lo siguiente:
https://developers.google.com/compute/docs/authentication.
Para obtener más detalles sobre las cuentas de servicio de App Engine, consulta lo siguiente:
https://developers.google.com/appengine/docs/python/appidentity/overview.
Actúa en nombre de la cuenta de servicio:

Actuar en nombre de una cuenta de servicio es útil en situaciones en las que necesitas otorgar acceso a corto plazo a recursos específicos. Por ejemplo, si tienes un depósito de datos sensibles que suele ser de solo lectura y deseas otorgar acceso temporal de escritura a través de una cuenta de servicio confiable.

Puedes especificar qué cuenta de servicio usar para actuar en nombre de ella si ejecutas “gsutil -i”, “gsutil config” y editas el archivo de configuración boto o “gcloud config set auth/impersonate_service_account”.

Para actuar en nombre de una cuenta, se debe otorgar la función roles/iam.serviceAccountTokenCreator a tus credenciales originales en la cuenta de servicio de destino. Para obtener más información, consulta lo siguiente: