La API Service Account Credentials crea credenciales de corta duración para las cuentas de servicio de Gestión de Identidades y Accesos (IAM). También puedes usar esta API para firmar JSON Web Tokens (JWTs), así como blobs de datos binarios que contengan otros tipos de tokens.
La API IAM también contiene métodos para firmar JWTs y blobs binarios. Desde el 1 de julio del 2020, estos métodos están obsoletos en la API REST y en todas las bibliotecas de cliente de la API IAM. Además, si usas Google Cloud CLI para firmar JWTs, puede que tengas que añadir una nueva reclamación al conjunto de reclamaciones del JWT. Puedes seguir usando los métodos obsoletos, pero no admiten funciones avanzadas como el envío de solicitudes HTTP por lotes. Te recomendamos que migres a la API de credenciales de cuentas de servicio.
En comparación con la API IAM, la API de credenciales de cuentas de servicio ofrece más flexibilidad en cuanto al tiempo de vencimiento de los JWTs firmados. Además, la API Service Account Credentials añade varios métodos de API nuevos para generar tokens de suplantación de identidad.
En esta página se explica cómo actualizar el código para usar la API Service Account Credentials. Si quieres enviarnos algún comentario sobre este cambio, puedes rellenar el formulario de comentarios. También puedes usar la dirección de correo iam-sign-deprecation-public@google.com para solicitar asistencia y enviar comentarios detallados.
Antes de empezar
-
Enable the Service Account Credentials API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Habilitar los registros de auditoría
Si quieres recibir registros de auditoría de las solicitudes para firmar JWTs y blobs, debes habilitar los registros de auditoría de acceso a datos de la API IAM. Si habilitas los registros de auditoría de acceso a datos para la API IAM, también se habilitarán para la API Service Account Credentials.
Hay algunas diferencias notables entre las entradas de registro que genera cada API:
Diferencias en las entradas del registro de auditoría | |
---|---|
Nombre del método |
API IAM
El nombre del método (
API Service Account Credentials El nombre del método es uno de los siguientes:
|
Tipo de solicitud |
API IAM
El tipo de solicitud (
API Service Account Credentials El tipo de solicitud es uno de los siguientes:
|
Nombre del servicio |
API IAM
El nombre del servicio ( API Service Account Credentials
El nombre del servicio es |
Los registros de auditoría de acceso a los datos se tienen en cuenta para calcular la asignación mensual gratuita de ingesta de datos de registro. Si superas esta asignación, se te cobrará por la ingesta de registros. Para obtener más información, consulta la página Precios de Google Cloud Observability.
Migrar código para firmar JWTs
En esta sección se describe cómo migrar el código que firma JWTs a la API de credenciales de cuentas de servicio.
Firmar JWTs con la API REST
En la siguiente tabla se muestran las diferencias entre firmar un JWT con la API REST de IAM y firmar un JWT con la API de credenciales de cuenta de servicio. Actualiza tu código para reflejar estas diferencias:
Diferencias al firmar un JWT | |
---|---|
Endpoints HTTP |
API IAM La API IAM usa los siguientes métodos y endpoints HTTP:
API Service Account Credentials Usa el siguiente método HTTP y endpoint. No sustituyas el carácter comodín por el ID del proyecto:
En esta URL, |
Cuerpo de la solicitud |
API IAM El cuerpo de la solicitud incluye un campo Si proporcionas una reclamación de tiempo de vencimiento ( API Service Account Credentials El cuerpo de la solicitud incluye un campo
|
Cuerpo de la respuesta |
Ambas APIs usan los mismos campos en el cuerpo de la respuesta. |
Firmar JWTs con una biblioteca de cliente
Las bibliotecas de cliente de la API Service Account Credentials son independientes de las bibliotecas de cliente de la API IAM.
Para usar la API Service Account Credentials, añade su biblioteca de cliente a tu aplicación y actualiza el código para usar la nueva biblioteca de cliente:
C#
Añade la biblioteca de cliente de credenciales de cuenta de servicio para C# a tu aplicación. Usa el
método SignJwt()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para C#, puedes quitarla de tu aplicación.
Go
Añade la biblioteca cliente de credenciales de cuenta de servicio para Go a tu aplicación. Usa
IamCredentialsClient.SignJwt() function
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para Go, puedes quitarla de tu aplicación.
Java
Añade la biblioteca de cliente de credenciales de cuenta de servicio para Java a tu aplicación. Usa el
método IamCredentialsClient#signJwt()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para Java, puedes quitarla de tu aplicación.
Node.js
Añade la biblioteca de cliente de credenciales de cuenta de servicio para Node.js a tu aplicación. Usa el
método signJwt()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de gestión de identidades y accesos para Node.js, puedes quitarla de tu aplicación.
PHP
Añade la biblioteca cliente de credenciales de cuenta de servicio para PHP a tu aplicación. Usa el
método signJwt()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para PHP, puedes quitarla de tu aplicación.
Python
Añade la biblioteca de cliente de credenciales de cuenta de servicio para Python a tu aplicación. Usa el
método sign_jwt()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente iam_credentials
, puedes quitarla de tu aplicación.
Ruby
Añade la biblioteca cliente de credenciales de cuenta de servicio para Ruby a tu aplicación. Usa el
método sign_service_account_jwt()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para Ruby, puedes quitarla de tu aplicación.
Migrar código para firmar blobs binarios
En esta sección se describe cómo migrar código que firma blobs binarios a la API de credenciales de cuentas de servicio.
Firmar blobs binarios con la API REST
En la siguiente tabla se muestran las diferencias entre firmar un blob binario con la API REST de IAM y firmar un blob binario con la API de credenciales de cuentas de servicio. Actualiza tu código para reflejar estas diferencias:
Diferencias al firmar un blob binario | |
---|---|
Endpoints HTTP |
API IAM La API IAM usa los siguientes métodos y endpoints HTTP:
API Service Account Credentials Usa el siguiente método HTTP y endpoint. No sustituyas el carácter comodín por el ID del proyecto:
En esta URL, |
Cuerpo de la solicitud |
API IAM El cuerpo de la solicitud incluye un campo API Service Account Credentials El cuerpo de la solicitud incluye un campo |
Cuerpo de la respuesta |
API IAM El cuerpo de la respuesta contiene un campo API Service Account Credentials El cuerpo de la respuesta contiene un campo |
Firmar blobs binarios con una biblioteca de cliente
Las bibliotecas de cliente de la API Service Account Credentials son independientes de las bibliotecas de cliente de la API IAM.
Para usar la API Service Account Credentials, añade su biblioteca de cliente a tu aplicación y actualiza el código para usar la nueva biblioteca de cliente:
C++
Si usas la biblioteca de cliente de Cloud Storage para C++ para firmar blobs, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Actualiza a la versión 0.9.0 o a una posterior de
google-cloud-cpp
.
Si usas otra biblioteca de cliente para firmar blobs:
Si necesitas ayuda, ponte en contacto con iam-sign-deprecation-public@google.com
.
C#
Si usas la biblioteca de cliente de IAM para C#,ya sea directamente o como dependencia de otra biblioteca de cliente:
Añade la biblioteca de cliente de credenciales de cuenta de servicio para C# a tu aplicación. Usa el
método SignBlob()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para C#, puedes quitarla de tu aplicación.
Si usas el SDK de administrador de Firebase para .NET, ya sea directamente o como dependencia de otra biblioteca de cliente, sigue estos pasos:
Actualiza firebase-admin-dotnet
a la versión 1.17.1 o a una posterior.
Si usas otra biblioteca de cliente para firmar blobs:
Si necesitas ayuda, ponte en contacto con iam-sign-deprecation-public@google.com
.
Go
Si usas la biblioteca de cliente de IAM para Go,ya sea directamente o como dependencia de otra biblioteca de cliente:
Añade la biblioteca cliente de credenciales de cuenta de servicio para Go a tu aplicación. Usa
IamCredentialsClient.SignBlob() function
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para Go, puedes quitarla de tu aplicación.
Si usas el SDK de administrador de Go de Firebase, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Actualiza firebase-admin-go
a la versión 4.1.0 o a una posterior.
Si usas otra biblioteca de cliente para firmar blobs:
Si necesitas ayuda, ponte en contacto con iam-sign-deprecation-public@google.com
.
Java
Si usas la biblioteca de cliente de IAM para Java, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Añade la biblioteca de cliente de credenciales de cuenta de servicio para Java a tu aplicación. Usa el
método IamCredentialsClient#signBlob()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para Java, puedes quitarla de tu aplicación.
Si usas la biblioteca de autenticación de Google para Java, ya sea directamente o como dependencia de otra biblioteca de cliente, sigue estos pasos:
Actualiza a la versión 0.14.0 o a una posterior de google-auth-library-java
.
Si usas el SDK de administrador de Java de Firebase, ya sea directamente o como dependencia de otra biblioteca de cliente, sigue estos pasos:
Actualiza firebase-admin-java
a la versión 7.0.1 o a una posterior.
Si usas otra biblioteca de cliente para firmar blobs:
Si necesitas ayuda, ponte en contacto con iam-sign-deprecation-public@google.com
.
Node.js
Si usas la biblioteca de cliente de IAM para Node.js,ya sea directamente o como dependencia de otra biblioteca de cliente:
Añade la biblioteca de cliente de credenciales de cuenta de servicio para Node.js a tu aplicación. Usa el
método signBlob()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de gestión de identidades y accesos para Node.js, puedes quitarla de tu aplicación.
Si usas la biblioteca de autenticación de Google para Node.js, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Actualiza a la versión 6.0.0 o a una posterior de google-auth-library-nodejs
.
Si usas el SDK de administrador de Firebase Node.js, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Actualiza a la versión 8.13.0 o a una posterior de firebase-admin-node
.
Si usas otra biblioteca de cliente para firmar blobs:
Si necesitas ayuda, ponte en contacto con iam-sign-deprecation-public@google.com
.
PHP
Si usas la biblioteca de cliente de IAM para PHP, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Añade la biblioteca cliente de credenciales de cuenta de servicio para PHP a tu aplicación. Usa el
método signBlob()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para PHP, puedes quitarla de tu aplicación.
Si usas la biblioteca de autenticación de Google para PHP, ya sea directamente o como dependencia de otra biblioteca de cliente, sigue estos pasos:
Actualiza a la versión 1.5.0 o a una posterior de google-auth-library-php
.
Si usas otra biblioteca de cliente para firmar blobs:
Si necesitas ayuda, ponte en contacto con iam-sign-deprecation-public@google.com
.
Python
Si usas la biblioteca de cliente de IAM para Python,ya sea directamente o como dependencia de otra biblioteca de cliente:
Añade la biblioteca de cliente de credenciales de cuenta de servicio para Python a tu aplicación. Usa el
método sign_blob()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente iam_credentials
, puedes quitarla de tu aplicación.
Si usas la biblioteca de autenticación de Google para Python, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Actualiza google-auth-library-python
a la versión 1.21.2 o a una posterior.
Si usas el cliente de Python para Cloud Storage, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Actualiza a la versión 1.30.0 o a una posterior de python-storage
.
Si usas otra biblioteca de cliente para firmar blobs:
Si necesitas ayuda, ponte en contacto con iam-sign-deprecation-public@google.com
.
Ruby
Si usas la biblioteca de cliente de IAM para Ruby, ya sea directamente o como dependencia de otra biblioteca de cliente, haz lo siguiente:
Añade la biblioteca cliente de credenciales de cuenta de servicio para Ruby a tu aplicación. Usa el
método sign_service_account_blob()
para generar una firma.
El nombre de la cuenta de servicio debe usar el carácter comodín -
para representar el ID del proyecto:
Válido: nombre con carácter comodín
projects/-/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
No válido: nombre con ID de proyecto
projects/my-project/serviceAccounts/my-service-account@my-project.iam.gserviceaccount.com
Si ya no usas la biblioteca de cliente de IAM para Ruby, puedes quitarla de tu aplicación.
Si usas otra biblioteca de cliente para firmar blobs:
Si necesitas ayuda, ponte en contacto con iam-sign-deprecation-public@google.com
.
Migrar código que usa la CLI de gcloud
La CLI de Google Cloud proporciona comandos que usan la API IAM para firmar JWTs y blobs binarios, entre los que se incluyen los siguientes:
A partir del 1 de julio del 2021, actualizaremos estos comandos para usar la API de credenciales de cuentas de servicio. Este cambio no afectará a los comandos para firmar blobs.
Si usas gcloud CLI para firmar JWTs, debes seguir estos pasos antes del 1 de julio del 2021:
Comprueba si incluyes la reclamación de tiempo de vencimiento (
exp
) en el conjunto de reclamaciones JWT.Si ya incluye esta reclamación, no tiene que hacer ningún cambio. Puedes saltarte los pasos restantes.
Si no incluyes esta reclamación, continúa con el siguiente paso.
Comprueba si usas el JWT firmado para autenticarte en las APIs de Google o en otra API que requiera la reclamación
exp
.Si omites esta reclamación, la API de IAM la establecerá automáticamente en 1 hora en el futuro. Por el contrario, la API de credenciales de cuentas de servicio no define este campo automáticamente.
Si tienes claro que no necesitas la reclamación
exp
, no tienes que hacer ningún cambio. Puedes saltarte los pasos restantes.Si sabes que necesitas la reclamación
exp
o no estás seguro, continúa con el siguiente paso.Actualiza el código para crear JWTs de forma que añada la reclamación
exp
al conjunto de reclamaciones del JWT.Puedes programar la reclamación de
exp
con hasta 1 hora de antelación.
Consultar cuotas
La cuota de la API Service Account Credentials es independiente de la cuota de la API IAM. Si has recibido un aumento de cuota para firmar JWTs y blobs con la API IAM, es posible que también tengas que solicitar un aumento para la API Service Account Credentials.
Para ver tu cuota y el uso real de ambas APIs, así como para solicitar un aumento de la cuota si es necesario, haz lo siguiente:
En la Google Cloud consola, ve a la página Cuotas.
Selecciona un proyecto. Puedes hacer clic en un proyecto reciente o en Seleccionar proyecto para buscar todos tus proyectos.
En el cuadro de texto Filtrar tabla situado encima de la tabla, introduzca
Sign requests per minute
y, a continuación, seleccione el valor que aparece.En el cuadro de texto Filtrar tabla, selecciona O en la lista desplegable.
En el cuadro de texto Filtrar tabla, introduce
Generate credentials
y, a continuación, selecciona el valor que aparece.La consola Google Cloud muestra el uso actual de la firma de JWTs y blobs durante el último minuto, el pico de uso por minuto de los últimos 7 días y la cuota actual, que aparece en la columna Límite.
Compara las cuotas de cada fila de la tabla y asegúrate de que tu cuota de la API Service Account Credentials sea superior al pico de uso de la API IAM de los últimos siete días.
Opcional: Si tu cuota de la API Service Account Credentials es demasiado baja, selecciona la casilla de la API Service Account Credentials y haz clic en Editar cuotas. Rellena el formulario para solicitar un aumento de cuota.
Repite estos pasos en cada proyecto en el que uses la API de IAM para firmar JWTs y blobs.
Siguientes pasos
- Consulta cómo crear un JWT firmado o crear un blob binario firmado con la API REST de credenciales de cuenta de servicio.
- Consulta los detalles de la API REST de la API Service Account Credentials.
- Consulta las cuotas y los límites de IAM.