Tipos de tokens

Cloud de Confiance by S3NS emite varios tipos de tokens, que se diferencian por su finalidad y por las partes entre las que se intercambian.

En la siguiente tabla se ofrece una descripción general de las principales categorías de tokens, dentro de las cuales se encuentran los diferentes tipos de tokens.

Categoría de token Ruta de comunicación Finalidad
Tokens de acceso Servidor de autorización Cliente API de Google Permite que los clientes llamen a las APIs de Cloud de Confiance by S3NS .
Tokens de concesión de tokens Servidor de autorización Cliente Permite a los clientes obtener tokens nuevos o diferentes, posiblemente en un momento posterior.
Tokens de identidad Servidor de autorización Cliente Permite que los clientes identifiquen al usuario con el que están interactuando.

Los tokens de acceso y de identidad son tokens de portador. Los tokens de portador son una clase general de tokens que conceden acceso a la parte que los posee.

Para usar tokens de portador en la autenticación, se necesita un protocolo cifrado, como HTTPS. Si se intercepta un token de portador, un agente pernicioso puede usarlo para obtener acceso.

Si los tokens de portador no proporcionan suficiente seguridad para tu caso práctico, puedes reducir el riesgo de robo de tokens mediante el acceso contextual, limitando la duración de los tokens de acceso o usando una solución de seguridad de la capa de transporte (TLS) mutua, como Chrome Enterprise Premium.

Tokens de acceso

Los tokens de acceso permiten que los clientes hagan llamadas autenticadas a las APIs. Cloud de Confiance by S3NS Cloud de Confiance by S3NS admite varios tipos de tokens de acceso, que tienen las siguientes propiedades en común:

  • Autentican una entidad principal, que puede ser un usuario o una carga de trabajo.

  • Se emiten para un cliente concreto.

  • Son de corta duración y caducan al cabo de unas horas como máximo.

  • Están restringidas a determinados permisos de OAuth, endpoints o recursos. Esto significa que, por lo general, un token de acceso no concede acceso a todos los recursos de un usuario, sino solo a un subconjunto de ellos.

Los tokens de acceso pueden diferir en los siguientes aspectos:

  • Emisor: la parte que emite el token.

  • Principal: el tipo de principal que puede autenticar el token.

  • Restricciones: las restricciones que se pueden imponer al token.

En la siguiente tabla se enumeran los diferentes tipos de tokens de acceso:

Tipo de token Emisor Directores Restricciones
Token de acceso de la cuenta de servicio Cloud de Confiance by S3NS Servidor de autorización de IAM Cuenta de servicio permiso de OAuth
JSON Web Token (JWT) de la cuenta de servicio Cliente Cuenta de servicio Permiso de OAuth o API
Token de acceso federado Cloud de Confiance by S3NS Servidor de autorización de gestión de identidades y accesos
  • Principal de grupo de identidades de Workforce
  • Principal del grupo de identidades de carga de trabajo
permiso de OAuth
Token de límite de acceso de credenciales Cloud de Confiance by S3NS Servidor de autorización de gestión de identidades y accesos
  • Usuario (usuario gestionado)
  • Usuario (cuenta de consumidor)
  • Cuenta de servicio
Objetos de Cloud Storage específicos
Token de límite de acceso de credenciales emitido por el cliente Cliente Cuenta de servicio Objetos de Cloud Storage específicos

Los distintos tipos de tokens de acceso también tienen diferentes propiedades de seguridad:

  • Formato: algunos tokens de acceso son opacos, lo que significa que tienen un formato propietario y no se pueden inspeccionar. Otros tokens se codifican como JSON Web Token, que el cliente puede decodificar.
  • Tiempo de vida: los tokens se diferencian en el tiempo de vida y en el grado en que se pueden modificar.

  • Revocabilidad: algunos tokens se pueden revocar. Los demás tokens siguen siendo válidos hasta que caduquen.

En la siguiente tabla se resumen las diferencias entre los tipos de token de acceso.

Tipo de token Formato Introspectable Desde siempre hasta hoy Revocable
Token de acceso de la cuenta de servicio Opaco No De 5 minutos a 12 horas No
JSON Web Token (JWT) de la cuenta de servicio JWT N/A Entre 5 minutos y 1 hora No
Token de acceso federado Opaco No Consulta Tokens de acceso federados. No
Token de límite de acceso a credenciales Opaco No Consulta Tokens de límite de acceso de credenciales. No
Token de límite de acceso de credenciales emitido por el cliente Opaco No N/A No

Tokens de acceso de cuentas de servicio

Los tokens de acceso de cuentas de servicio autentican una cuenta de servicio. Los tokens son opacos.

En el caso de un token de acceso de cuenta de servicio, la API devuelve un resultado similar al siguiente ejemplo:

{
  "azp": "000000000000000000000",
  "aud": "000000000000000000000",
  "scope": "https://www.googleapis.com/auth/userinfo.email",
  "exp": "1744687132",
  "expires_in": "3568",
  "email": "service-account@example.s3ns.iam.gserviceaccount.com",
  "email_verified": "true",
  "access_type": "online"
}

Un token de cuenta de servicio incluye los siguientes campos:

Campo Nombre Descripción
aud Audiencia La cuenta de servicio para la que se genera el token, equivalente a la parte autorizada.
azp Parte autorizada La cuenta de servicio que ha solicitado el token, identificada por su ID único.
email Dirección de correo principal

Dirección de correo de la cuenta de servicio.

Este campo solo está presente si el token incluye el ámbito https://www.googleapis.com/auth/userinfo.email.

exp Caducidad Hora de vencimiento del token en formato de tiempo de época de Unix.

Los tokens de acceso de las cuentas de servicio no se pueden revocar y siguen siendo válidos hasta que caducan.

De forma predeterminada, los tokens de acceso de la cuenta de servicio caducan al cabo de una hora. Con el método serviceAccounts.generateAccessToken, puedes solicitar tokens con diferentes tiempos de vida. Como los tiempos de vida de los tokens más largos pueden aumentar el riesgo, debes configurar la restricción iam.allowServiceAccountCredentialLifetimeExtension para permitir que los clientes soliciten tokens de acceso de cuentas de servicio con tiempos de vida superiores a una hora.

JSON Web Tokens de cuentas de servicio

Los JSON Web Tokens (JWTs) de las cuentas de servicio autentican una cuenta de servicio. Mientras que un servidor de autorización emite tokens de acceso de cuenta de servicio, el cliente puede emitir JWTs de cuenta de servicio.

A veces se denominan JWTs "autofirmados". Pueden ser útiles cuando necesites autenticarte en algunas APIs de Google sin obtener un token de acceso del servidor de autorización, por ejemplo, al crear tus propias bibliotecas de cliente.

Para emitir un JWT de cuenta de servicio, los clientes deben seguir estos pasos:

  1. Prepara una carga útil de firma web JSON que incluya la dirección de correo electrónico de la cuenta de servicio, un ámbito de OAuth o un endpoint de API, y un tiempo de vencimiento.

  2. Firma la carga útil con una clave de cuenta de servicio de la cuenta de servicio correspondiente. Los clientes pueden firmar la carga útil sin conexión mediante una clave de cuenta de servicio gestionada por el usuario o con conexión mediante el método signJwt y una clave de cuenta de servicio gestionada por Google. Para obtener más información, consulta Crear un JSON Web Token autofirmado.

Un JWT de cuenta de servicio decodificado tiene un aspecto similar al siguiente, con SIGNATURE sustituido por la firma del token:

{
  "alg": "RS256",
  "kid": "290b7bf588eee0c35d02bf1164f4336229373300",
  "typ": "JWT"
}.{
  "iss": "service-account@example.s3ns.iam.gserviceaccount.com",
  "sub": "service-account@example.s3ns.iam.gserviceaccount.com",
  "scope": "https://www.googleapis.com/auth/cloud-platform",
  "exp": 1744851267,
  "iat": 1744850967
}.SIGNATURE

En lugar de especificar un ámbito de OAuth en la clave scope, un JWT de cuenta de servicio puede especificar un endpoint de API en la clave aud:

{
  "alg": "RS256",
  "kid": "290b7bf588eee0c35d02bf1164f4336229373300",
  "typ": "JWT"
}.{
  "iss": "service-account@example.s3ns.iam.gserviceaccount.com",
  "sub": "service-account@example.s3ns.iam.gserviceaccount.com",
  "aud": "https://cloudresourcemanager.googleapis.com/",
  "exp": 1744854799,
  "iat": 1744851199
}.SIGNATURE

Un JWT de cuenta de servicio incluye los siguientes campos:

Campo Nombre Descripción
aud Audiencia Endpoints de API a los que el cliente tiene permiso para acceder. Solo es válido si no se especifica scope.
exp Caducidad Hora de vencimiento del token en formato de tiempo de época de Unix.
iat Hora del problema Hora en la que se emitió el token, en formato de tiempo de época de Unix.
iss Emisor El emisor del token, que es la propia cuenta de servicio.
scope permisos de OAuth Conjunto de APIs a las que el cliente tiene permiso para acceder, identificadas por el permiso de OAuth. Solo es válido si no se especifica aud.
sub Asunto Principal autenticado, que es la propia cuenta de servicio.

Los JWTs de cuentas de servicio pueden ser válidos durante un máximo de una hora y no se pueden revocar.

Tokens de acceso federados

Los tokens de acceso federados autentican una identidad principal de grupo de Workforce o una identidad principal de grupo de cargas de trabajo.

Workforce Identity Federation permite a los clientes intercambiar un token externo por un token de acceso federado que autentica a una entidad de un grupo de trabajo. El principal del grupo de identidades de Workforce se identifica mediante un identificador principal similar al siguiente:

principal://iam.googleapis.com/locations/global/workforcePools/POOL/subject/raha@altostrat.com.

La federación de identidades de cargas de trabajo permite a los clientes intercambiar un token externo por un token de acceso federado que autentica a una entidad de un grupo de cargas de trabajo. El principal del grupo de identidades de carga de trabajo se identifica mediante un identificador principal similar al siguiente:

principal://iam.googleapis.com/projects/PROJECT/locations/global/workloadIdentityPools/POOL/subject/SUBJECT_ATTRIBUTE_VALUE

Los tokens de acceso federados son opacos y no se pueden introspeccionar. Los tokens no se pueden revocar y siguen siendo válidos hasta que caduquen. Los vencimientos de cada tipo de token se definen de la siguiente manera:

  • La federación de identidades de Workforce define la caducidad del token como el menor de los dos valores siguientes:

    • Tiempo restante hasta que caduque la sesión de Workforce Identity Federation

    • 1 hora

    La caducidad de la sesión de Workforce Identity Federation se determina en función de la hora de inicio de sesión y de la duración de la sesión configurada para el grupo de Workforce Identity Federation.

  • La federación de identidades de cargas de trabajo define la caducidad del token para que coincida con la del token externo.

Tokens de límite de acceso a credenciales

Los tokens de límite de acceso de las credenciales autentican a un usuario o una cuenta de servicio y incluyen un límite de acceso. El límite de acceso restringe el token para que solo se pueda usar para acceder a un subconjunto definido de recursos de Cloud Storage.

A veces, los tokens de límite de acceso a credenciales se denominan de ámbito reducido porque se derivan de un token de entrada, pero tienen más restricciones en cuanto a los recursos a los que conceden acceso.

La caducidad de los tokens de límite de acceso de las credenciales se deriva de la caducidad del token de entrada, que un token de acceso de cuenta de servicio. Los tokens de límite de acceso a las credenciales son opacos y no se pueden inspeccionar ni revocar.

Tokens de límite de acceso de credenciales emitidos por el cliente

Los tokens de límite de acceso de credenciales emitidas por el cliente son similares a los tokens de límite de acceso de credenciales, pero están optimizados para situaciones en las que los clientes necesitan obtener tokens de límite de acceso de credenciales con diferentes límites de acceso con una frecuencia alta.

Los clientes pueden crear tokens de límite de acceso de credenciales emitidas por el cliente de forma local mediante las bibliotecas de cliente de Cloud y un token intermediario de límite de acceso, que deben actualizar periódicamente.

Los tokens de límite de acceso de credenciales emitidas por el cliente son opacos y no se pueden inspeccionar ni revocar.

Tokens de concesión de tokens

Los tokens de concesión de tokens permiten a los clientes obtener tokens nuevos o diferentes, posiblemente en otro momento. Cloud de Confiance by S3NS admite varios tipos diferentes de tokens de concesión de tokens, y todos ellos tienen lo siguiente en común:

  • Representan una autenticación anterior.

  • Autentican una entidad principal, que puede ser una identidad de Google (un usuario o una carga de trabajo) o una identidad externa.

  • Se pueden canjear por un token de acceso.

  • No se pueden usar para hacer llamadas a las APIs de Google, lo que las diferencia de los tokens de acceso.

Los tokens de concesión de tokens pueden diferir en los siguientes aspectos:

  • Emisor: la parte que emite el token.

  • Principal: el tipo de identidad principal que puede autenticar el token.

  • Restricciones: las restricciones que se pueden imponer al token.

En la siguiente tabla se enumeran los diferentes tipos de tokens de concesión de tokens.

Tipo de token Emisor Tipo de token de acceso canjeado Directores Restricciones
Token de actualización federado Cloud de Confiance by S3NS Servidor de autorización de gestión de identidades y accesos Token de acceso federado Principal de grupo de identidades de Workforce permiso de OAuth
Código de autorización federado Cloud de Confiance by S3NS Servidor de autorización de gestión de identidades y accesos Token de acceso federado Principal de grupo de identidades de Workforce permiso de OAuth
JSON Web Token externo Proveedor de identidades externo Token de acceso federado Principal externo Ninguno
Aserción o respuesta SAML externa Proveedor de identidades externo Token de acceso federado Principal externo Ninguno
Token de GetCallerIdentityAmazon Web Services (AWS) Proveedor de identidades externo Token de acceso federado Principal externo Ninguno

Los diferentes tipos de tokens de concesión de tokens también tienen diferentes propiedades de seguridad:

  • Formato: algunos tokens son opacos. El cliente puede decodificar otros tokens.

  • Tiempo de vida: los tokens tienen un tiempo de vida diferente y se pueden modificar en mayor o menor medida.

  • Multiuso: algunos tokens de concesión de tokens solo se pueden usar una vez. Otros tokens se pueden usar varias veces.

  • Revocabilidad: algunos tokens se pueden revocar. Los demás tokens siguen siendo válidos hasta que caduquen.

En la siguiente tabla se resumen las diferencias entre estas propiedades para los tokens que conceden tokens:

Tipo de token Formato Desde siempre hasta hoy Revocable Multiusos
Token de actualización federado Opaco Varía. Consulta Tokens de actualización federados. No
Código de autorización federado Opaco 10 minutos No No
Token externo o JSON Web Token externo JWT Depende del proveedor de identidades Depende del proveedor de identidades
Aserción o respuesta SAML externa SAML Depende del proveedor de identidades Depende del proveedor de identidades
Token de GetCallerIdentityAmazon Web Services (AWS) Blob de texto Depende del proveedor de identidades Depende del proveedor de identidades

Tokens de actualización federados

Los tokens de actualización federados son tokens opacos que permiten a los clientes obtener tokens de acceso para un principal de un grupo de identidades de la fuerza de trabajo si el usuario ha autorizado previamente a un cliente para que actúe en su nombre.

Al igual que los tokens de actualización, los tokens de actualización federados están vinculados a un cliente específico y solo se pueden usar en combinación con credenciales de cliente válidas, como un ID de cliente y un secreto de cliente.

A diferencia de los tokens de actualización, los tokens de actualización federados no se pueden revocar. El tiempo de vida de un token de actualización federado está vinculado a la sesión de identidad de los empleados que se usó para obtener el token y sigue siendo válido hasta que caduca la sesión.

Códigos de autorización federados

Al igual que los códigos de autorización, los códigos de autorización federados son tokens opacos de corta duración. Los códigos solo se deben usar durante la autenticación de usuarios como intermediarios entre el cliente y el Cloud de Confiance by S3NS servidor de autorización de IAM.

Los códigos de autorización están vinculados a un cliente, solo se pueden usar junto con credenciales de cliente válidas y solo se pueden usar una vez.

Tokens web JSON externos

Los tokens web JSON (JWTs) externos los emite un proveedor de identidades externo, como Microsoft Entra ID, Okta, Kubernetes o GitHub. Pueden diferir en su estructura y contenido.

Si configuras Workforce Identity Federation o Workload Identity Federation, puedes establecer una relación de confianza entre Cloud de Confiance by S3NS y un proveedor de identidades externo. Las cargas de trabajo pueden usar JWTs externos como tokens de concesión de tokens para obtener tokens de acceso federados.

Cuando usas Workforce Identity Federation, el token de acceso federado resultante autentica a un principal del grupo de identidades de Workforce.

Cuando usas la federación de identidades de cargas de trabajo, el token de acceso federado resultante autentica un principal del grupo de identidades de cargas de trabajo.

En ambos casos, el identificador de la entidad principal se deriva de una o varias reclamaciones del JWT externo.

Para que sean compatibles con la federación de identidades de trabajo o de cargas de trabajo, los JWTs externos deben cumplir requisitos específicos.

Aserciones o respuestas SAML externas

Las aserciones lenguaje de marcado para confirmaciones de seguridad (SAML) externas son aserciones SAML 2.0 emitidas por un proveedor de identidades externo, como Microsoft Entra ID, Okta o Servicios de federación de Active Directory. Estas aserciones SAML externas se pueden incluir de forma opcional en una respuesta SAML 2.0 o cifrarse.

Al igual que con los JSON Web Tokens externos, puedes configurar la federación de identidades de trabajo o la federación de identidades de cargas de trabajo para que las cargas de trabajo puedan usar aserciones o respuestas SAML externas como tokens de concesión de tokens para obtener tokens de acceso federados.

Para que sean compatibles con la federación de identidades de Workforce o de cargas de trabajo, las aserciones SAML externas deben cumplir requisitos específicos.

Token de GetCallerIdentityAmazon Web Services (AWS)

Los tokens externos de AWS GetCallerIdentity son blobs de texto que contienen una solicitud firmada a la API de GetCallerIdentityAWS. Al igual que con los tokens web JSON externos, puedes configurar la federación de identidades de Workforce o la federación de identidades de cargas de trabajo para que las cargas de trabajo puedan usar estos blobs de texto como token de concesión de tokens para obtener tokens de acceso federados.

Tokens de identidad

Los tokens de ID permiten a los clientes identificar al usuario con el que están interactuando. Cloud de Confiance by S3NS admite varios tipos de tokens de ID, y todos tienen lo siguiente en común:

Los tokens de identidad pueden diferir en los siguientes aspectos:

  • Audiencia: la parte que debe decodificar y consumir el token.

  • Emisor: la parte que emite el token.

  • Tiempo de vida: los tokens tienen un tiempo de vida diferente y se pueden modificar en mayor o menor medida.

  • Principal: el tipo de identidad principal que puede autenticar el token.

En la siguiente tabla se enumeran los diferentes tipos de tokens de identidad.

Tipo de token Emisor Audiencia Principal Desde siempre hasta hoy
Token de ID de cuenta de servicio Cloud de Confiance by S3NS Servidor de autorización de gestión de identidades y accesos Libertad para elegir cualquier audiencia Cuenta de servicio 1 hora
Aserción de Identity-Aware Proxy (IAP) IAP
  • Backend
  • Aplicación de App Engine
  • Usuario (usuario gestionado)
  • Usuario (cuenta de consumidor)
  • Principal de grupo de identidades de Workforce
10 minutos

Tokens de ID de cuenta de servicio

Los tokens de ID de cuenta de servicio son tokens web JSON (JWTs) que autentican una cuenta de servicio.

A diferencia de los JWTs de cuentas de servicio y las aserciones de JWT de cuentas de servicio, los tokens de ID de cuentas de servicio no están firmados por una clave de cuenta de servicio. En su lugar, los tokens de ID de la cuenta de servicio están firmados por el conjunto de claves web de JSON (JWKS) de Google.

Un token de ID de cuenta de servicio decodificado tiene un aspecto similar al siguiente, con SIGNATURE sustituido por la firma del token:

{
  "alg": "RS256",
  "kid": "c37da75c9fbe18c2ce9125b9aa1f300dcb31e8d9",
  "typ": "JWT"
}.{
  "aud": "example-audience",
  "azp": "112010400000000710080",
  "email": "service-account@example.s3ns.iam.gserviceaccount.com",
  "email_verified": true,
  "exp": 1745365618,
  "iat": 1745362018,
  "iss": "https://accounts.google.com",
  "sub": "112010400000000710080"
}.SIGNATURE

Un token de ID de cuenta de servicio incluye los siguientes campos:

Campo Nombre Descripción
aud Audiencia Identificador de la parte a la que va dirigido este token. El solicitante del token puede elegir el valor libremente.
azp Parte autorizada La cuenta de servicio que ha solicitado el token, identificada por su ID único.
exp Caducidad Hora de vencimiento del token en formato de tiempo de época de Unix.
iss Emisor El emisor del token, que siempre es https://accounts.google.com.
sub Asunto La cuenta de servicio que ha solicitado el token, identificada por su ID único.

El conjunto exacto de reclamaciones incluidas en un token de ID depende de la forma en que se solicite el token de ID. Por ejemplo, los tokens de ID solicitados por el servidor de metadatos de Compute Engine pueden incluir de forma opcional reclamaciones adicionales que afirmen la identidad de la VM. Los tokens de ID solicitados mediante la API IAM Credentials pueden incluir opcionalmente el ID de organización del proyecto de la cuenta de servicio.

Los tokens de ID de cuenta de servicio son válidos durante una hora y no se pueden revocar.

Aserciones de Identity-Aware Proxy

Las aserciones de Identity-Aware Proxy (IAP) son tokens web JSON (JWTs) que IAP transfiere a las aplicaciones web protegidas por IAP en el encabezado de solicitud HTTP x-goog-iap-jwt-assertion. Las aserciones de IAP autentican a un usuario y también sirven como prueba de que IAP ha autorizado una solicitud.

Las aserciones de IAP se firman con el JWKS de IAP. Este JWKS es un recurso global y se usan las mismas claves de firma para diferentes tipos de usuarios, incluidos los siguientes:

  • Cuentas de usuario gestionadas

  • Cuentas de consumidor

  • Cuentas de servicio

  • Principales de grupos de identidades de Workforce

Una aserción de IAP decodificada tiene un aspecto similar al siguiente, donde SIGNATURE se sustituye por la firma del token:

{
  "alg": "ES256",
  "typ": "JWT",
  "kid": "4BCyVw"
}.{
  "aud": "/projects/0000000000/global/backendServices/000000000000",
  "azp": "/projects/0000000000/global/backendServices/000000000000",
  "email": "user@example.com",
  "exp": 1745374290,
  "google": {
    "access_levels": [
      "accessPolicies/0000000000/accessLevels/Australia"
    ]
  },
  "iat": 1745373690,
  "identity_source": "WORKFORCE_IDENTITY",
  "iss": "https://cloud.google.com/iap",
  "sub": "sts.google.com:AAFTZ...Q",
  "workforce_identity": {
    "iam_principal": "principal://iam.googleapis.com/locations/global/workforcePools/example/subject/user-0000000000",
    "workforce_pool_name": "locations/global/workforcePools/example"
  }
}.SIGNATURE

Una aserción de compra en la aplicación incluye los siguientes campos:

Campo Nombre Descripción
aud Audiencia El servicio de backend, la aplicación de App Engine o el servicio de Cloud Run para el que se ha creado la aserción de IAP.
iss Emisor El emisor del token, que siempre es https://cloud.google.com/iap
sub Asunto

La entidad autenticada, identificada por su ID único.

Si IAP está configurado para usar identidades de Google, este ID es equivalente al ID expuesto en la API Directory.

Para obtener más información sobre las reclamaciones de aserción de IAP, consulta Verificar la carga útil de JWT.

Las aserciones de compras en aplicaciones son válidas durante 10 minutos y no se pueden revocar.