Autenticación de Cloud Storage

La mayoría de las operaciones que realizas en Cloud Storage se deben autenticar. Las únicas excepciones son las operaciones en objetos que permiten el acceso anónimo. Los objetos son accesibles de forma anónima si el grupo allUsers tiene el permiso READ. El grupo allUsers incluye a cualquier persona en la Internet.

OAuth 2.0

Autenticación

Cloud Storage usa OAuth 2.0 para la autenticación y autorización de API. La autenticación es el proceso que determina la identidad de un cliente. Los detalles de la autenticación varían según la forma en que accedas a Cloud Storage, pero se dividen en estos tipos generales:

  • Un flujo centrado en el servidor permite que una aplicación contenga las credenciales de una cuenta de servicio de forma directa para completar la autenticación. Usa este flujo si tu aplicación trabaja con sus propios datos en lugar de los datos del usuario. Los proyectos de Google Cloud Platform tienen cuentas de servicio predeterminadas que puedes usar, o bien puedes crear cuentas nuevas.

  • Un flujo centrado en el usuario permite que una aplicación obtenga credenciales de un usuario final. El usuario debe acceder para completar la autenticación. Usa este flujo si tu aplicación necesita acceder a los datos del usuario. Consulta la sección Credenciales de cuenta de usuario más adelante en esta página para conocer las situaciones en las que es adecuado usar un flujo centrado en el usuario.

Ten en cuenta que puedes usar ambos tipos de autenticación juntos en una aplicación. Para obtener más información complementaria sobre la autenticación, consulta la Guía de autenticación de Google Cloud Platform.

Alcances

La autorización es el proceso que determina qué permisos tiene una identidad autenticada en un conjunto de recursos especificados. OAuth 2.0 usa alcances para determinar si una identidad autenticada está autorizada. Las aplicaciones usan una credencial (obtenida de un flujo de autenticación centrado en el usuario o en el servidor) junto con uno o más alcances para solicitar un token de acceso de un servidor de autorización de Google a fin de acceder a los recursos protegidos. Por ejemplo, la aplicación A con un token de acceso con el alcance read-only solo puede realizar operaciones de lectura, mientras que la aplicación B con un token de acceso con el alcance read-write puede leer y modificar datos. Ninguna de las dos puede leer o modificar las listas de control de acceso en los objetos y depósitos; solo una aplicación con el alcance full-control puede hacerlo.

Tipo Descripción URL del alcance
read-only Solo permite el acceso de lectura a los datos, lo que incluye la enumeración de depósitos. https://www.googleapis.com/auth/devstorage.read_only
read-write Permite el acceso para leer y cambiar datos, pero no metadatos como las políticas de IAM. https://www.googleapis.com/auth/devstorage.read_write
full-control Permite el control total sobre los datos, incluida la capacidad de modificar las políticas de IAM. https://www.googleapis.com/auth/devstorage.full_control
cloud-platform.read-only Permite ver tus datos en los servicios de Google Cloud Platform. En Cloud Storage, esto es lo mismo que devstorage.read-only. https://www.googleapis.com/auth/cloud-platform.read-only
cloud-platform Permite ver y administrar datos en todos los servicios de Google Cloud Platform. En Cloud Storage, esto es lo mismo que devstorage.full-control. https://www.googleapis.com/auth/cloud-platform

Autenticación de gsutil

Con gsutil instalado desde el SDK de Cloud, debes autenticarte con las credenciales de la cuenta de servicio.

  1. Usa una cuenta de servicio existente o crea una nueva y descarga la clave privada asociada.

  2. Usa gcloud auth activate-service-account para autenticarte con la cuenta de servicio:

    gcloud auth activate-service-account --key-file [KEY_FILE]

    Aquí [KEY_FILE] es el nombre del archivo que contiene tus credenciales de la cuenta de servicio.

gcloud auth usa el alcance cloud-platform cuando obtiene un token de acceso.

Si tu instalación de gsutil fue independiente del SDK de Cloud, consulta la página de instalación de gsutil para obtener información sobre cómo autenticarte.

Autenticación de bibliotecas cliente

Las bibliotecas cliente pueden usar la credencial predeterminada de la aplicación para autenticarse con API de Google y enviarles solicitudes. Con las credenciales predeterminadas de la aplicación, puedes probar tu aplicación de forma local y, luego, implementarla sin cambiar el código subyacente. Para obtener más información, incluso muestras de código, consulta la guía de autenticación de Google Cloud Platform.

Autenticación de API

Para realizar solicitudes a la API de XML o la API de JSON de Cloud Storage mediante OAuth 2.0, incluye el token de acceso de tu aplicación en el encabezado Authorization en todas las solicitudes que requieran autenticación. Puedes generar un token de acceso desde OAuth 2.0 Playground.

Authorization: Bearer <oauth2_token>

A continuación, se muestra un ejemplo de una solicitud que enumera los objetos en un depósito.

API de JSON

Usa el método list del recurso Objetos.

GET /storage/v1/b/example-bucket/o HTTP/1.1
Host: www.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Para autorizar solicitudes desde la línea de comandos o realizar pruebas, puedes usar el comando curl con la siguiente sintaxis:

curl -H "Authorization: Bearer ACCESS_TOKEN" "https://www.googleapis.com/storage/v1/b/example-bucket/o"

Para realizar pruebas locales, puedes usar el comando gcloud auth application-default print-access-token a fin de generar un token.

API de XML

Usa una solicitud de enumerar objetos.

GET / HTTP/1.1
Host: example-bucket.storage.googleapis.com
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Para autorizar solicitudes desde la línea de comandos o realizar pruebas, puedes usar el comando curl con la siguiente sintaxis:

curl -H "Authorization: Bearer ACCESS_TOKEN" "https://example-bucket.storage.googleapis.com"

Para realizar pruebas locales, puedes usar el comando gcloud auth application-default print-access-token a fin de generar un token.

Debido a la complejidad de administrar y actualizar los tokens de acceso y el riesgo de seguridad cuando se trata con aplicaciones criptográficas de forma directa, recomendamos que uses una biblioteca cliente verificada.

Si buscas claves HMAC a fin de usarlas con la API de XML en el acceso interoperable con Amazon S3, consulta Administra claves HMAC para una migración simple.

Credenciales de cuenta de usuario

Usa credenciales de cuenta de usuario para la autenticación cuando tu aplicación requiere acceso a los datos en nombre de un usuario; de lo contrario, usa credenciales de cuenta de servicio. A continuación, se muestran ejemplos de situaciones en las que se pueden usar credenciales de cuenta de usuario:

  • Aplicaciones de servidor web
  • Aplicaciones instaladas y de escritorio
  • Aplicaciones para dispositivos móviles
  • JavaScript de cliente
  • Aplicaciones en dispositivos de entrada limitada

Para obtener más información sobre estas situaciones, consulta la página sobre situaciones de OAuth 2.0.

Si diseñas una aplicación de forma que admita múltiples opciones de autenticación para usuarios finales, usa Firebase Authentication, que admite la autenticación con correo electrónico y contraseña y, también, el acceso federado con proveedores de identidad como Google, Facebook, Twitter y GitHub.

Cuando un usuario final otorga un token de acceso a una aplicación en un flujo de autenticación centrado en el usuario, ese token de acceso solo tendrá los permisos disponibles para el usuario que lo otorga. Por ejemplo, si jane@gmail.com tiene el acceso read-only a example-bucket, una aplicación a la que Jane otorgó el acceso read-write no podrá escribir para example-bucket en su nombre.

Próximos pasos

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.