Tipos de credencial compatibles con diversos casos prácticos

Descripción general

En la actualidad, gsutil admite varios tipos de credenciales o autenticación. Cada uno de estos tipos de credenciales se analiza en detalle a continuación, junto con información de la configuración y el uso de las credenciales con el SDK de Cloud.

Configura o usa credenciales a través de 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 a través de 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 sigue 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).

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 tipo de credenciales se puede usar 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 crea cuando ejecutas gcloud init. Este tipo de credencial no es compatible con las versiones independientes de gsutil. 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 a través de 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 credencial que se crea cuando ejecutas 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. Para hacerlo, después de ejecutar el comando gcloud init, puedes editar el archivo de configuración ~/.boto que se generó y buscar comentarios sobre dónde se puedan agregar otras credenciales.

Si deseas obtener más detalles sobre la autenticación de HMAC, consulta Claves HMAC para Cloud Storage.

Cuenta de servicio de OAuth2:

Esta es una credencial que puedes usar cuando realizas la autenticación en nombre de un servicio o una aplicación (en lugar de un usuario). Por ejemplo, si planeas ejecutar gsutil a partir de un trabajo cron nocturno para subir o descargar datos, el uso de una cuenta de servicio significa que el trabajo cron no depende de las credenciales de un empleado individual de tu empresa. Este es el tipo de credenciales que se configura cuando ejecutas gcloud auth login con la marca --cred-file (o gsutil config -e cuando usas versiones independientes de gsutil).

Por lo general, debes evitar este tipo de credenciales, ya que requiere almacenar credenciales con muchos privilegios en tu entorno local, lo que crea posibles riesgos de seguridad. En cambio, la identidad temporal como cuenta de servicio o la federación de identidades para cargas de trabajo son las alternativas recomendadas cuando se autentica en nombre de un servicio o una aplicación.

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 <predefined-ACL>” para cambiar los permisos en un bucket.

Para configurar una cuenta de servicio para usar con gsutil, consulta Autoriza una cuenta de servicio con una clave de cuenta de servicio.

Si deseas obtener más detalles sobre las cuentas de servicio de OAuth2, consulta Usa OAuth 2.0 para aplicaciones de servidor a servidor.

Cuenta de servicio interna de Compute Engine:

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

Si deseas obtener más detalles sobre el uso de credenciales de cuenta de servicio para autenticar cargas de trabajo en Compute Engine, consulta https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances.

Para obtener más detalles sobre las cuentas de servicio de App Engine, consulta https://developers.google.com/appengine/docs/python/appidentity/overview.

Identidad temporal como 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 bucket 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 -e y editas el archivo de configuración boto o gcloud config set auth/impersonate_service_account [service_account_email_address].

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 https://cloud.google.com/docs/authentication/use-service-account-impersonation.

Credenciales de cuenta externa (federación de identidades para cargas de trabajo):

A través de la federación de Workload Identity, puedes acceder a los recursos de Google Cloud desde Amazon Web Services (AWS), Microsoft Azure o cualquier proveedor de identidad que admita OpenID Connect (OIDC) o SAML 2.0.

Para obtener más información, consulta https://cloud.google.com/iam/docs/workload-identity-federation.