Métodos de autenticación en Google

Este documento te ayuda a comprender algunos métodos y conceptos clave de la autenticación y dónde obtener ayuda para implementar o solucionar problemas de autenticación. El enfoque principal de la documentación de autenticación es para los servicios de Google Cloud, pero la lista de casos de uso de autenticación y el material introductorio de esta página incluyen también casos de uso para otros productos de Google.

Introducción

La autenticación es el proceso mediante el cual se confirma tu identidad mediante el uso de algún tipo de credencial. La autenticación consiste en demostrar que eres quien dices ser.

Google proporciona muchas APIs y servicios, que requieren autenticación para acceder. Google también proporciona una serie de servicios que alojan aplicaciones escritas por nuestros clientes. Estas aplicaciones también deben determinar la identidad de sus usuarios.

Me gustaría... Información
Autenticarme en un servicio de Google Cloud desde mi aplicación con un lenguaje de programación de alto nivel. Configurar las credenciales predeterminadas de la aplicación y, luego, usar una de las bibliotecas cliente de Cloud.
Autenticarme en una aplicación que se ejecute en Cloud Run o Cloud Functions. Obtener un token de ID de OpenID Connect (OIDC) y proporciónarlo con mi solicitud.
Implementar la autenticación de usuario para una aplicación que accede a los servicios y recursos de Google o Google Cloud. Consultar Cómo autenticar usuarios de aplicaciones para ver una comparación de las opciones.
Prueba algunos comandos gcloud en mi entorno de desarrollo local. Inicializa la CLI de gcloud.
Prueba algunas solicitudes a la API de REST de Google Cloud en mi entorno de desarrollo local. Usa una herramienta de línea de comandos como curl para llamar a la API de REST.
Probar un fragmento de código incluido en la documentación de mi producto Configura credenciales predeterminadas de la aplicación de manera local y, luego, instala la biblioteca cliente de tu producto en tu entorno local. La biblioteca cliente busca las credenciales automáticamente.
Obtener ayuda con otro caso práctico de autenticación. Consultar la página Casos prácticos de autenticación.
Consultar una lista de los productos que proporciona Google en el espacio de administración de identidades y accesos. Consultar la página Productos de administración de identidades y accesos de Google.

Elige el método de autenticación adecuado para tu caso de uso

Cuando accedes a los servicios de Google Cloud mediante Google Cloud CLI, las bibliotecas cliente de Cloud, las herramientas que admiten las credenciales predeterminadas de la aplicación (ADC), como Terraform, o las solicitudes de REST usa el siguiente diagrama para ayudarte a elegir un método de autenticación:

Árbol de decisión para elegir el método de autenticación según el caso de uso

En este diagrama, se te guiará a través de las siguientes preguntas:

  1. ¿Ejecutas código en un entorno de desarrollo de un solo usuario, como tu propia estación de trabajo, Cloud Shell o una interfaz de escritorio virtual?
    1. Si es así, continúa con la pregunta 4.
    2. De lo contrario, continúa con la pregunta 2.
  2. ¿Ejecutas código en Google Cloud?
    1. Si es así, continúa con la pregunta 3.
    2. De lo contrario, continúa con la pregunta 5.
  3. ¿Ejecutas contenedores en Google Kubernetes Engine o GKE Enterprise?
    1. Si es así, usa la federación de identidades para cargas de trabajo para GKE a fin de conectar cuentas de servicio a los Pods de Kubernetes.
    2. De lo contrario, conecta una cuenta de servicio al recurso.
  4. ¿Tu caso de uso requiere una cuenta de servicio?

    Por ejemplo, deseas configurar la autenticación y la autorización de manera coherente para tu aplicación en todos los entornos.

    1. De lo contrario, autentica con credenciales de usuario.
    2. Si es así, usa la identidad de una cuenta de servicio con credenciales de usuario.
  5. ¿Tu carga de trabajo se autentica con un proveedor de identidad externo que admite la federación de identidades para cargas de trabajo?
    1. Si es así, configura la federación de identidades para cargas de trabajo para permitir que las aplicaciones que se ejecutan de forma local o en otros proveedores de servicios en la nube usen una cuenta de servicio.
    2. De lo contrario, crea una clave de cuenta de servicio.

Tipos de autenticación

Se requiere autenticación para acceder a la mayoría de los recursos y aplicaciones. Esta documentación asiste a los profesionales técnicos que crean código de aplicación con uno de los siguientes objetivos:

OAuth 2.0

Las API de Google implementan y extienden el framework de OAuth 2.0. En el framework de OAuth 2.0, se describen varios “flujos” de autenticación o enfoques de autenticación. En general, la aplicación presenta credenciales, que representan una principal (ya sea un usuario o una cuenta de servicio), en un módulo intermedio llamado Servidor de autorización. El servidor de autorización responde con un token, que la aplicación puede usar para autenticarse con el servicio y acceder a los recursos. El token incluye uno o más permisos, que reflejan qué acceso está autorizado a realizar la aplicación. La aplicación presenta el token al servidor de recursos para obtener acceso a los recursos.

Métodos de autorización para servicios de Google Cloud

Los servicios de Google Cloud usan Identity and Access Management (IAM) para la autenticación. IAM ofrece control detallado, por principal y por recurso. Cuando te autenticas en los servicios de Google Cloud, por lo general, usas un permiso que incluye todos los servicios de Google Cloud (https://www.googleapis.com/auth/cloud-platform).

Los permisos de OAuth 2.0 pueden proporcionar una segunda capa de protección, que es útil si tu código se ejecuta en un entorno en el que la seguridad del token es una preocupación, como una app para dispositivos móviles. En esta situación, puedes usar permisos más detallados para reducir el riesgo en caso de que exista un token vulnerado. Los permisos de OAuth 2.0 también se usan para autorizar el acceso a los datos del usuario.

Credencial predeterminada de la aplicación

Application Default Credentials (ADC) es una estrategia que usan las bibliotecas de autenticación de Google para encontrar credenciales automáticamente según el entorno de la aplicación. Las bibliotecas de autenticación ponen esas credenciales a disposición de las bibliotecas cliente de Cloud y las bibliotecas cliente de las APIs de Google. Cuando usas ADC, tu código puede ejecutarse en un entorno de desarrollo o de producción sin cambiar la forma en que tu aplicación se autentica en los servicios y las APIs de Google Cloud.

Si escribes código que necesita usar los servicios de Google Cloud, debes usar las ADC siempre que sea posible. Usar las ADC puede simplificar el proceso de desarrollo, ya que te permite usar el mismo código de autenticación en una variedad de entornos.

Antes de usar ADC, debes proporcionar tus credenciales a ADC, según la ubicación en la que deseas que se ejecute tu código. ADC ubica las credenciales de forma automática y obtiene un token en segundo plano, lo que permite que tu código de autenticación se ejecute en diferentes entornos sin modificación. Por ejemplo, la misma versión de tu código podría autenticarse con las APIs de Google Cloud cuando se ejecuta en una estación de trabajo de desarrollo o en Compute Engine.

Tus credenciales de gcloud no son las mismas que proporcionas a ADC mediante la CLI de gcloud. Para obtener más información, consulta las credenciales de la CLI de gcloud y las credenciales de ADC.

Terminología

Es importante comprender los siguientes términos cuando se analiza la autenticación y la autorización.

Authentication

La autenticación es el proceso que determina la identidad de la principal que intenta acceder a un recurso.

Autorización

La autorización es el proceso que determina si la principal o la aplicación que intenta acceder a un recurso se autorizó para ese nivel de acceso.

Credenciales

Cuando en este documento se usa el término cuenta de usuario, se refiere a una cuenta de usuario administrada por tu proveedor de identidad y federada con la federación de identidades de personal.

Para la autenticación, las credenciales son un objeto digital que proporciona prueba de identidad. Las contraseñas, los PIN y los datos biométricos se pueden usar como credenciales, según los requisitos de la aplicación. Por ejemplo, cuando accedes a tu cuenta de usuario, proporcionas tu contraseña y cumples con cualquier requisito de autenticación de dos factores como prueba de que la cuenta te pertenece, y que una persona que actúa de mala fe no está falsificando tu identidad.

A veces, los tokens se denominan credenciales, pero en esta documentación se hace referencia a ellos como un objeto digital que demuestra que el emisor proporcionó las credenciales adecuadas, pero no son credenciales en sí.

El tipo de credencial que debes proporcionar depende del recurso que estés autenticando. Se pueden crear los siguientes tipos de credenciales en la consola de Google Cloud:

  • Claves de API

    A diferencia de otras credenciales, las claves de API no identifican un principal. Las claves de API proporcionan un proyecto de Google Cloud para fines de facturación y cuotas.

    Muchas APIs de Google no aceptan claves de API. Para obtener más información sobre las claves de API, consulta Claves de API.

  • IDs de clientes OAuth

    Los IDs de cliente de OAuth se usan para identificar una aplicación en Google. Esto es necesario cuando deseas acceder a los recursos que son propiedad de tus usuarios finales, también llamados OAuth de tres segmentos (3LO). Para obtener más información sobre cómo obtener y usar un ID de cliente de OAuth, consulta Configura OAuth 2.0.

Principal

Una principal es una identidad a la que se le puede otorgar acceso a un recurso. Para la autenticación, las APIs de Google admiten dos tipos de principales: cuentas de usuario y cuentas de servicio.

Usar una cuenta de usuario o una cuenta de servicio para la autenticación depende de tu caso de uso. Puedes usar ambas, cada una en diferentes etapas de tu proyecto o en diferentes entornos de desarrollo.

Cuentas de usuario

Las cuentas de usuario representan a un desarrollador, un administrador o cualquier otra persona que interactúe con los servicios y las APIs de Google.

Tu proveedor de identidad administra las cuentas de usuario y las federadas con la federación de identidades de personal.

Con una cuenta de usuario, puedes autenticarte en las APIs y los servicios de Google de las siguientes maneras:

Si deseas obtener una descripción general de las formas de configurar identidades para los usuarios en Google Cloud, consulta Identidades para los usuarios.

Cuentas de servicio

Las cuentas de servicio son cuentas que no representan a un usuario humano. Proporcionan una forma de administrar la autenticación y autorización cuando una persona no está involucrada de forma directa, como cuando una aplicación necesita acceder a los recursos de Google Cloud. IAM administra las cuentas de servicio.

En la siguiente lista, se proporcionan algunos métodos para usar una cuenta de servicio a fin de autenticarse en las APIs y los servicios de Google, desde el más seguro hasta el menos seguro. A fin de obtener más información, consulta Elige el método de autenticación correcto para tu caso de uso en esta página.

Para obtener una descripción general de las formas de configurar identidades de carga de trabajo, incluidas las cuentas de servicio, de Google Cloud, consulta Identidades para cargas de trabajo. Si deseas conocer las prácticas recomendadas, consulta Prácticas recomendadas para usar cuentas de servicio.

Token

Para la autenticación y la autorización, un token es un objeto digital que muestra que el emisor proporcionó las credenciales adecuadas que se intercambiaron por ese token. El token contiene información sobre la identidad del principal que realiza la solicitud y el tipo de acceso que están autorizados a realizar.

Los tokens se pueden considerar como llaves de hotel. Cuando te registras en un hotel y presentas la documentación adecuada en la recepción del hotel, recibes una llave que te permitirá acceder a recursos específicos del hotel. Por ejemplo, la llave podría darte acceso a tu habitación y al ascensor de invitados, pero no te otorgaría acceso a ninguna otra habitación ni al elevación de servicio.

A excepción de las claves de API, las APIs de Google no admiten credenciales directamente. Tu aplicación debe adquirir o generar un token y proporcionarlo a la API. Hay varios tipos de tokens. Para obtener más información, consulta los tipos de tokens.

Carga de trabajo y personal

Los productos de identidad y acceso de Google Cloud permiten el acceso a los servicios y recursos de Google para el acceso programático y los usuarios humanos. Google usa los términos carga de trabajo para el acceso programático y personal para el acceso del usuario.

La federación de Workload Identity te permite proporcionar acceso a las cargas de trabajo que se ejecutan fuera de Google sin tener que crear y administrar claves de cuentas de servicio.

La federación de Workforce Identity te permite usar un proveedor de identidad externo para autenticar y autorizar a un personal (un grupo de usuarios, como empleados, socios y contratistas) que usa IAM, a fin de que los usuarios puedan acceder a los servicios de Google Cloud.

¿Qué sigue?