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 dos 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 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 la 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 general sobre la autenticación, consulta la guía de autenticación de Google Cloud.
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. 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. 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 la CLI de gcloud, debes autenticarte con las credenciales de la cuenta de servicio.
Usa una cuenta de servicio existente o crea una nueva y descarga la clave privada asociada. Ten en cuenta que solo puedes descargar los datos de clave privada para una clave de cuenta de servicio cuando se crea la clave por primera vez.
Usa
gcloud auth activate-service-account
para autenticarte con la cuenta de servicio:gcloud auth activate-service-account --key-file KEY_FILE
KEY_FILE
es el nombre del archivo que contiene tus credenciales de la cuenta de servicio.
gcloud auth
usa el permiso cloud-platform
cuando obtiene un token de acceso.
Si tu instalación de gsutil fue independiente de la CLI de gcloud, 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 las credenciales predeterminadas de la aplicación para autenticarse fácilmente con las API de Google y enviar solicitudes a esas API. 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, como muestras de código, consulta la Guía de autenticación de Google Cloud.
Google Cloud
Si ejecutas tu aplicación en App Engine o en Compute Engine, el entorno ya proporciona la información de autenticación de una cuenta de servicio, por lo que no se requiere más configuración. Para Compute Engine, el alcance de la cuenta de servicio depende de cómo se crea la instancia. Consulta Configura el alcance del acceso de la cuenta de servicio para las instancias. En App Engine, se usa el alcance
cloud-platform
.Otros entornos
Para inicializar tu entorno local de producción o desarrollo, crea una cuenta de servicio de Google Cloud, descarga su clave y configura la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
a fin de usar la clave. Para obtener información paso a paso, consulta la sección sobre cómo configurar la autenticación con las bibliotecas cliente de Cloud Storage. Como alternativa a la configuración de una variable de entorno, también puedes usar la clave de la cuenta de servicio directamente en el código.
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.
En OAuth 2.0 Playground, haz clic en laversión 1 de la API de Cloud Storage y, luego, selecciona un nivel de acceso para la aplicación (
full_control
,read_only
oread_write
).Haz clic en Autorizar API.
Accede a tu Cuenta de Google cuando se te solicite. En el cuadro de diálogo que aparece, haz clic en Permitir.
En el paso 2 de la zona de pruebas, haz clic en Código de autorización de intercambio para tokens del código de autorización que aparece.
Copia tu token de acceso y, luego, inclúyelo en el encabezado
Authorization
de tu solicitud:Authorization: Bearer OAUTH2_TOKEN
El siguiente es un ejemplo de una solicitud que enumera los objetos de un bucket.
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 OAUTH2_TOKEN""https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/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 OAUTH2_TOKEN""https://BUCKET_NAME.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 para usar con la API de XML a fin de obtener acceso interoperable con Amazon S3, consulta Administra las claves HMAC para las cuentas de servicio.
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, así como el acceso federado con proveedores de identidad como Google, Facebook, Twitter y GitHub. Consulta ¿Por dónde empiezo con Firebase Authentication? a fin de obtener detalles sobre cómo configurar los sistemas de autenticación para diferentes casos de uso.
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.
¿Qué sigue?
- Obtén información sobre las descargas basadas en el navegador mediante la autenticación de cookies.
- Obtén información sobre cómo se usan las cuentas de servicio en general en Google Cloud y en particular en Cloud Storage.
- Obtén información sobre las claves de API, que se pueden usar para identificar una aplicación.