En esta página se explica cómo crear credenciales de duración reducida para una cuenta de servicio, que puedes usar para suplantar la identidad de la cuenta de servicio. En función del tipo de token que crees, el token de corta duración proporciona la identidad (en el caso de los tokens de ID) o los permisos (en el caso de los tokens de acceso) asociados a la cuenta de servicio.
Si la arquitectura de tu sistema requiere que uses una serie de llamadas de generación de tokens, puedes usar una cadena de delegación formada por varias cuentas de servicio. En la mayoría de los casos, el método directo, tal como se explica en esta página, es suficiente.
Antes de empezar
-
Enable the IAM and Service Account Credentials APIs:
gcloud services enable iam.googleapis.com
iamcredentials.googleapis.com Configura la autenticación.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada. Después de iniciar sesión, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Go
Para usar las Go muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada.
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local en la documentación de autenticación. Trusted Cloud
Java
Para usar las Java muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada.
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local en la documentación de autenticación. Trusted Cloud
Node.js
Para usar las Node.js muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada.
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local en la documentación de autenticación. Trusted Cloud
Python
Para usar las Python muestras de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada.
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local en la documentación de autenticación. Trusted Cloud
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI y, a continuación, inicia sesión en gcloud CLI con tu identidad federada.
Para obtener más información, consulta el artículo Autenticación para usar REST de la documentación sobre autenticación de Trusted Cloud .
Familiarízate con las cuentas de servicio de gestión de identidades y accesos.
Consulta información sobre la suplantación de identidad de cuentas de servicio.
Determina qué tipo de token necesitas y sigue los pasos correspondientes que se indican en las secciones siguientes:
Crear un token de acceso de corta duración
La mayoría de las APIs de Google aceptan tokens de acceso para la autenticación. Cuando generas un token de acceso mediante la suplantación de identidad de una cuenta de servicio, el token de acceso no incluye un token de actualización, lo que significa que, cuando el token caduque, debes repetir el proceso de suplantación de identidad para generar uno nuevo.
Para obtener más información, consulta Tokens de acceso.
Para crear un token de acceso de corta duración, sigue estos pasos:
Proporcionar los permisos necesarios
Una solicitud directa implica dos identidades: la persona que llama, que solicita la credencial, y la cuenta de servicio para la que se crea la credencial. La forma de configurar los permisos depende de si el llamante se autentica como una cuenta de servicio o como una cuenta de usuario.
Si quieres ejecutar un comando de la API REST o de la CLI de gcloud en esta página en un entorno de desarrollo local, el llamador puede representarse mediante credenciales de usuario. En el caso de las cargas de trabajo automatizadas, como una aplicación que se ejecuta en Compute Engine, el llamante debe estar representado por una cuenta de servicio.
Cuenta de servicio
Cuando la aplicación que llama usa una cuenta de servicio como identidad, se implican las siguientes entidades:
Cuenta de servicio de llamadas (
CALLER_SA
)Esta cuenta de servicio representa la aplicación que llama, que emite la solicitud de las credenciales de corta duración.
-
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le conceden los roles de gestión de identidades y accesos necesarios para el token de corta duración. Esta es la cuenta de servicio para la que se crea el token de corta duración.
Para dar permisos a
CALLER_SA
para crear credenciales de corta duración paraPRIV_SA
, asigna aCALLER_SA
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) enPRIV_SA
.Asigna el rol necesario en
PRIV_SA
:Consola
-
En la Trusted Cloud consola, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
-
Haz clic en la dirección de correo de la cuenta de servicio con privilegios,
PRIV_SA
. - Haz clic en la pestaña Permisos.
- En Principales con acceso a esta cuenta de servicio, haz clic en Conceder acceso.
-
Introduce la dirección de correo de la cuenta de servicio de la persona que llama,
CALLER_SA
.Por ejemplo,
demo@my-project.s3ns-system.iam.gserviceaccount.com
. -
Selecciona el rol Creador de tokens de cuenta de servicio
(
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para asignar el rol a la cuenta de servicio.
gcloud
El comando
gcloud iam service-accounts add-iam-policy-binding
asigna un rol a una cuenta de servicio.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_SA
: la dirección de correo de la cuenta de servicio que representa la aplicación que solicita el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Lee la política de permitir para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de autorización de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Si no has concedido ningún rol a la cuenta de servicio, la respuesta solo contendrá un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para conceder a
CALLER_SA
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de ejemplo del paso anterior, añade lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Escribe la política de permiso actualizada:
El método
serviceAccounts.setIamPolicy
define una política de permiso actualizada para la cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.Por ejemplo, para definir la política de permiso que se muestra en el paso anterior, sustituye
POLICY
por lo siguiente, dondeCALLER_SA
es la cuenta de servicio que crea el token de corta duración:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Credenciales de usuario
Si quieres usar la CLI de Google Cloud para generar tokens de corta duración o generar tokens de corta duración desde un entorno de desarrollo local, puedes usar una cuenta de usuario para generar los tokens. A menudo, puedes usar tu propia cuenta de usuario.
Cuando usas una cuenta de usuario para generar tokens de corta duración, se implican las siguientes identidades:
Cuenta de la persona que llama (
CALLER_ACCOUNT
)Esta cuenta de usuario se usa para generar credenciales de corta duración para la cuenta de servicio con privilegios.
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le conceden los roles de gestión de identidades y accesos necesarios para el token de corta duración. Esta es la cuenta de servicio para la que se crea el token de corta duración.
Para permitir que
CALLER_ACCOUNT
cree credenciales de corta duración paraPRIV_SA
, asigna aCALLER_ACCOUNT
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) enPRIV_SA
.Asigna el rol necesario en
PRIV_SA
:Consola
-
En la Trusted Cloud consola, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
-
Haz clic en la dirección de correo de la cuenta de servicio con privilegios,
PRIV_SA
. - Haz clic en la pestaña Permisos.
- En Principales con acceso a esta cuenta de servicio, haz clic en Conceder acceso.
-
Introduce el identificador principal de la cuenta de la persona que llama,
CALLER_ACCOUNT
.Por ejemplo,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com
. -
Selecciona el rol Creador de tokens de cuenta de servicio
(
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para asignar el rol a la cuenta de usuario.
gcloud
El comando
gcloud iam service-accounts add-iam-policy-binding
asigna un rol a una cuenta de servicio.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_ACCOUNT
: la dirección de correo de la cuenta de usuario que se usa para solicitar el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lee la política de permitir para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de autorización de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Si no has concedido ningún rol a la cuenta de servicio, la respuesta solo contendrá un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para asignar
CALLER_ACCOUNT
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de ejemplo del paso anterior, añade lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
-
Escribe la política de permiso actualizada:
El método
serviceAccounts.setIamPolicy
define una política de permiso actualizada para la cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.Por ejemplo, para definir la política de permiso que se muestra en el paso anterior, sustituye
POLICY
por lo siguiente, dondeCALLER_ACCOUNT
es la cuenta de usuario que crea el token de corta duración:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Generar el token de acceso
Puedes generar un token de acceso de OAuth 2.0 mediante la CLI de gcloud, la API REST o las bibliotecas de cliente de Cloud y las bibliotecas de cliente de la API de Google.
Si usas la API REST y tu sistema está configurado para permitir que los tokens tengan una duración ampliada, puedes crear un token con una duración superior a la predeterminada. Google Cloud CLI no admite la configuración de un tiempo de vida para el token.
Los ejemplos que se muestran a continuación están diseñados para usarse en un entorno de desarrollo local. El llamador debe estar representado por una cuenta de usuario, no por una cuenta de servicio.
Genera un token de acceso OAuth 2.0 para una cuenta de servicio:
gcloud
Asegúrate de que has iniciado sesión en gcloud CLI con la cuenta de usuario de la persona que llama.
Genera un token para la cuenta de servicio con el comando
gcloud auth print-access-token
.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (PowerShell)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Windows (cmd.exe)
gcloud auth print-access-token --impersonate-service-account=PRIV_SA
Deberías recibir una respuesta similar a la siguiente:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.s3ns-system.iam.gserviceaccount.com]. ya29.c.b0AXv0zTPnzTnDV8F8Aj5Fgy46Yf2v_v8eZIoKq7xGpfbpXuy23aQ1693m3gAuE8AZga7w6kdagN7a9bfdDYbdeoGY0CMHOClsCwIdutL7k_RFC672lOCbUgF5hS8Iu2nCA8hle-11LJXBLmaxFmH08ZTBJLuDrWSNd8cYqGYFunSC1K1qLIPBF18tsa0hxVgKPucI8b1A9L8_MK1JGLGcr0n7-zY77_lmbcdODG3NmIbLOGWOutjJgqSO_YoeCKK2QTUZIp5PG7RkKlXWnmYJA9pEahzNoQrs5sWZctc2bia9af_ITzqqlXC9h1Kj5-me6e8rd734MJvpagqYazRk0gGWpMb03XmMGpgPc_FBp4pnX9rGOzW83SNpcDz8zeFO1Q0Bo3N7CuZougjRce0y8I2_4rtw5ME_nV3wrCWa..................................................................................................................................................................................................................................................................................................
-
REST
La API Service Account Credentials
serviceAccounts.generateAccessToken
genera un token de acceso de OAuth 2.0 para una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
LIFETIME
: cantidad de tiempo que falta para que caduque el token de acceso, en segundos. Por ejemplo,300s
.De forma predeterminada, el tiempo de vida máximo del token es de 1 hora (3600 segundos). Para ampliar el tiempo de vida máximo de estos tokens a 12 horas (43.200 segundos), añade la cuenta de servicio a una política de organización que incluya la restricción de la lista
constraints/iam.allowServiceAccountCredentialLifetimeExtension
.
Método HTTP y URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateAccessToken
Cuerpo JSON de la solicitud:
{ "scope": [ "https://www.googleapis.com/auth/cloud-platform" ], "lifetime": "LIFETIME" }
Para enviar tu solicitud, despliega una de estas opciones:
Si la solicitud
generateAccessToken
se ha completado correctamente, el cuerpo de la respuesta contiene un token de acceso de OAuth 2.0 y un tiempo de vencimiento. A continuación, se puede usar elaccessToken
para autenticar una solicitud en nombre de la cuenta de servicio hasta que se alcance elexpireTime
:{ "accessToken": "eyJ0eXAi...NiJ9", "expireTime": "2020-04-07T15:01:23.045123456Z" }
Go
Java
Node.js
Python
Crear un token de ID de OpenID Connect (OIDC)
Los tokens de ID siguen la especificación de OpenID Connect (OIDC). Un número limitado de servicios y aplicaciones aceptan tokens de ID.
Para obtener más información, consulta Tokens de ID.
Para crear un token de ID, completa estas tareas:
Proporciona los permisos necesarios a la persona que llama.
Usa el rol Creador de tokens de identidad OpenID Connect de cuenta de servicio (
roles/iam.serviceAccountOpenIdTokenCreator
) para crear un token de ID. Este rol es diferente del que usas para otros tipos de tokens.
Proporcionar los permisos necesarios
Una solicitud directa implica dos identidades: la persona que llama, que solicita la credencial, y la cuenta de servicio para la que se crea la credencial. La forma de configurar los permisos depende de si el llamante se autentica como una cuenta de servicio o como una cuenta de usuario.
Si quieres ejecutar un comando de la API REST o de la CLI de gcloud en esta página en un entorno de desarrollo local, el llamador puede representarse mediante credenciales de usuario. En el caso de las cargas de trabajo automatizadas, como una aplicación que se ejecuta en Compute Engine, el llamante debe estar representado por una cuenta de servicio.
Cuenta de servicio
Cuando la aplicación que llama usa una cuenta de servicio como identidad, se implican las siguientes entidades:
Cuenta de servicio de llamadas (
CALLER_SA
)Esta cuenta de servicio representa la aplicación que llama, que emite la solicitud de las credenciales de corta duración.
-
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le conceden los roles de gestión de identidades y accesos necesarios para el token de corta duración. Esta es la cuenta de servicio para la que se crea el token de corta duración.
Para dar permisos a
CALLER_SA
para crear credenciales de corta duración paraPRIV_SA
, asigna aCALLER_SA
el rol Creador de tokens de identidad OpenID Connect de cuenta de servicio (roles/iam.serviceAccountOpenIdTokenCreator
) enPRIV_SA
.Asigna el rol necesario en
PRIV_SA
:Consola
-
En la Trusted Cloud consola, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
-
Haz clic en la dirección de correo de la cuenta de servicio con privilegios,
PRIV_SA
. - Haz clic en la pestaña Permisos.
- En Principales con acceso a esta cuenta de servicio, haz clic en Conceder acceso.
-
Introduce la dirección de correo de la cuenta de servicio de la persona que llama,
CALLER_SA
.Por ejemplo,
demo@my-project.s3ns-system.iam.gserviceaccount.com
. -
Selecciona el rol Creador de tokens de identidad OpenID Connect de cuenta de servicio (
roles/iam.serviceAccountOpenIdTokenCreator
). - Haz clic en Guardar para asignar el rol a la cuenta de servicio.
gcloud
El comando
gcloud iam service-accounts add-iam-policy-binding
asigna un rol a una cuenta de servicio.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_SA
: la dirección de correo de la cuenta de servicio que representa la aplicación que solicita el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Lee la política de permitir para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de autorización de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Si no has concedido ningún rol a la cuenta de servicio, la respuesta solo contendrá un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para asignar a
CALLER_SA
el rol Creador de tokens de identidad OpenID Connect de cuenta de servicio (roles/iam.serviceAccountOpenIdTokenCreator
).Por ejemplo, para modificar la respuesta de ejemplo del paso anterior, añade lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Escribe la política de permiso actualizada:
El método
serviceAccounts.setIamPolicy
define una política de permiso actualizada para la cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.Por ejemplo, para definir la política de permiso que se muestra en el paso anterior, sustituye
POLICY
por lo siguiente, dondeCALLER_SA
es la cuenta de servicio que crea el token de corta duración:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Credenciales de usuario
Si quieres usar la CLI de Google Cloud para generar tokens de corta duración o generar tokens de corta duración desde un entorno de desarrollo local, puedes usar una cuenta de usuario para generar los tokens. A menudo, puedes usar tu propia cuenta de usuario.
Cuando usas una cuenta de usuario para generar tokens de corta duración, se implican las siguientes identidades:
Cuenta de la persona que llama (
CALLER_ACCOUNT
)Esta cuenta de usuario se usa para generar credenciales de corta duración para la cuenta de servicio con privilegios.
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le conceden los roles de gestión de identidades y accesos necesarios para el token de corta duración. Esta es la cuenta de servicio para la que se crea el token de corta duración.
Para permitir que
CALLER_ACCOUNT
cree credenciales de corta duración paraPRIV_SA
, asigna aCALLER_ACCOUNT
el rol Creador de tokens de identidad de OpenID Connect de cuenta de servicio (roles/iam.serviceAccountOpenIdTokenCreator
) enPRIV_SA
.Asigna el rol necesario en
PRIV_SA
:Consola
-
En la Trusted Cloud consola, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
-
Haz clic en la dirección de correo de la cuenta de servicio con privilegios,
PRIV_SA
. - Haz clic en la pestaña Permisos.
- En Principales con acceso a esta cuenta de servicio, haz clic en Conceder acceso.
-
Introduce el identificador principal de la cuenta de la persona que llama,
CALLER_ACCOUNT
.Por ejemplo,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com
. -
Selecciona el rol Creador de tokens de identidad OpenID Connect de cuenta de servicio (
roles/iam.serviceAccountOpenIdTokenCreator
). - Haz clic en Guardar para asignar el rol a la cuenta de usuario.
gcloud
El comando
gcloud iam service-accounts add-iam-policy-binding
asigna un rol a una cuenta de servicio.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_ACCOUNT
: la dirección de correo de la cuenta de usuario que se usa para solicitar el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountOpenIdTokenCreator --format=json
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lee la política de permitir para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de autorización de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Si no has concedido ningún rol a la cuenta de servicio, la respuesta solo contendrá un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para asignar
CALLER_ACCOUNT
el rol Creador de tokens de identidad OpenID Connect de cuenta de servicio (roles/iam.serviceAccountOpenIdTokenCreator
).Por ejemplo, para modificar la respuesta de ejemplo del paso anterior, añade lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
-
Escribe la política de permiso actualizada:
El método
serviceAccounts.setIamPolicy
define una política de permiso actualizada para la cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.Por ejemplo, para definir la política de permiso que se muestra en el paso anterior, sustituye
POLICY
por lo siguiente, dondeCALLER_ACCOUNT
es la cuenta de usuario que crea el token de corta duración:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Generar el token de ID
Puedes generar un token de ID de OpenID Connect (OIDC) mediante la CLI de gcloud, la API REST o las bibliotecas de cliente de Cloud y las bibliotecas de cliente de la API de Google.
Los ejemplos que se muestran a continuación están diseñados para usarse en un entorno de desarrollo local. El llamador debe estar representado por una cuenta de usuario, no por una cuenta de servicio.
Los tokens de ID de OIDC son válidos durante 1 hora (3600 segundos).
Genera un token de ID de OIDC firmado por Google para una cuenta de servicio:
gcloud
Asegúrate de que has iniciado sesión en gcloud CLI con la cuenta de usuario de la persona que llama.
Genera un token para la cuenta de servicio con el comando
gcloud auth print-identity-token
.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
AUDIENCE_NAME
: la audiencia del token, normalmente la URL de la aplicación o el servicio al que se usará el token para acceder.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (PowerShell)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Windows (cmd.exe)
gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
Deberías recibir una respuesta similar a la siguiente:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.s3ns-system.iam.gserviceaccount.com]. eyJhbGciOiJSUzI1NiIsImtpZDNhMDg4ZDRmZmMjJkYTVmZTM5MDZjY2MiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ3d3cuZXhhbXBsJhenAiOiIxMTYzwNDYyMDk0ODIiLCJleHAiOjE2NTQ4ODU0MzEsImlhdCI6MTY1NDg4MTgzMSwiaXN6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViIMDQ2MjA5NDgyIn0.F7mu8IHj5VQdu7ItFrnYAKyGd7YqXuOP_rFLc98q8BaFBycAF1zAQnSnwqnSUXba0UK9PDT_-IOry68qLwBObz4XlX9lk0ehpN0O0W9FcFToKLB6wefXXPd4h7xtuPe5KzmpSOqj2Qqv34HriGw00Nqd-oGSgNY_lZ4wGEf4rT4oQa_kEcrY57Q2G6pwd769BhgeFwoLi5aK_Cv2kvf_zfMszC-xlkP9zwWQ8XinJBwe-qcQBa4NTgrbueNtXsEjccBS366zmw
-
REST
El método
serviceAccounts.generateIdToken
de la API Service Account Credentials genera un token de ID de OIDC para una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
AUDIENCE_NAME
: la audiencia del token, normalmente la URL de la aplicación o el servicio al que se usará el token para acceder.
Método HTTP y URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateIdToken
Cuerpo JSON de la solicitud:
{ "audience": "AUDIENCE_NAME", "includeEmail": "true" }
Para enviar tu solicitud, despliega una de estas opciones:
Si la solicitud
generateId
se ha completado correctamente, el cuerpo de la respuesta contiene un token de ID válido durante 1 hora. Latoken
se puede usar para autenticar una solicitud en nombre de la cuenta de servicio:{ "token": "eyJ0eXAi...NiJ9" }
Crear un JSON Web Token (JWT) autofirmado
Los JSON Web Tokens (JWTs) autofirmados son útiles en diversas situaciones:
- Comunicación segura entre tus propias aplicaciones. En este caso, una aplicación puede firmar un token que otra aplicación puede verificar con fines de autenticación.
- Tratar una cuenta de servicio como un proveedor de identidades firmando un JWT que contenga reclamaciones arbitrarias sobre un usuario, una cuenta o un dispositivo.
Para crear un JWT, completa estas tareas:
Proporcionar los permisos necesarios
Una solicitud directa implica dos identidades: la persona que llama, que solicita la credencial, y la cuenta de servicio para la que se crea la credencial. La forma de configurar los permisos depende de si el llamante se autentica como una cuenta de servicio o como una cuenta de usuario.
Si quieres ejecutar un comando de la API REST o de la CLI de gcloud en esta página en un entorno de desarrollo local, el llamador puede representarse mediante credenciales de usuario. En el caso de las cargas de trabajo automatizadas, como una aplicación que se ejecuta en Compute Engine, el llamante debe estar representado por una cuenta de servicio.
Cuenta de servicio
Cuando la aplicación que llama usa una cuenta de servicio como identidad, se implican las siguientes entidades:
Cuenta de servicio de llamadas (
CALLER_SA
)Esta cuenta de servicio representa la aplicación que llama, que emite la solicitud de las credenciales de corta duración.
-
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le conceden los roles de gestión de identidades y accesos necesarios para el token de corta duración. Esta es la cuenta de servicio para la que se crea el token de corta duración.
Para dar permisos a
CALLER_SA
para crear credenciales de corta duración paraPRIV_SA
, asigna aCALLER_SA
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) enPRIV_SA
.Asigna el rol necesario en
PRIV_SA
:Consola
-
En la Trusted Cloud consola, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
-
Haz clic en la dirección de correo de la cuenta de servicio con privilegios,
PRIV_SA
. - Haz clic en la pestaña Permisos.
- En Principales con acceso a esta cuenta de servicio, haz clic en Conceder acceso.
-
Introduce la dirección de correo de la cuenta de servicio de la persona que llama,
CALLER_SA
.Por ejemplo,
demo@my-project.s3ns-system.iam.gserviceaccount.com
. -
Selecciona el rol Creador de tokens de cuenta de servicio
(
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para asignar el rol a la cuenta de servicio.
gcloud
El comando
gcloud iam service-accounts add-iam-policy-binding
asigna un rol a una cuenta de servicio.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_SA
: la dirección de correo de la cuenta de servicio que representa la aplicación que solicita el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Lee la política de permitir para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de autorización de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Si no has concedido ningún rol a la cuenta de servicio, la respuesta solo contendrá un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para conceder a
CALLER_SA
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de ejemplo del paso anterior, añade lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Escribe la política de permiso actualizada:
El método
serviceAccounts.setIamPolicy
define una política de permiso actualizada para la cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.Por ejemplo, para definir la política de permiso que se muestra en el paso anterior, sustituye
POLICY
por lo siguiente, dondeCALLER_SA
es la cuenta de servicio que crea el token de corta duración:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Credenciales de usuario
Si quieres usar la CLI de Google Cloud para generar tokens de corta duración o generar tokens de corta duración desde un entorno de desarrollo local, puedes usar una cuenta de usuario para generar los tokens. A menudo, puedes usar tu propia cuenta de usuario.
Cuando usas una cuenta de usuario para generar tokens de corta duración, se implican las siguientes identidades:
Cuenta de la persona que llama (
CALLER_ACCOUNT
)Esta cuenta de usuario se usa para generar credenciales de corta duración para la cuenta de servicio con privilegios.
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le conceden los roles de gestión de identidades y accesos necesarios para el token de corta duración. Esta es la cuenta de servicio para la que se crea el token de corta duración.
Para permitir que
CALLER_ACCOUNT
cree credenciales de corta duración paraPRIV_SA
, asigna aCALLER_ACCOUNT
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) enPRIV_SA
.Asigna el rol necesario en
PRIV_SA
:Consola
-
En la Trusted Cloud consola, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
-
Haz clic en la dirección de correo de la cuenta de servicio con privilegios,
PRIV_SA
. - Haz clic en la pestaña Permisos.
- En Principales con acceso a esta cuenta de servicio, haz clic en Conceder acceso.
-
Introduce el identificador principal de la cuenta de la persona que llama,
CALLER_ACCOUNT
.Por ejemplo,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com
. -
Selecciona el rol Creador de tokens de cuenta de servicio
(
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para asignar el rol a la cuenta de usuario.
gcloud
El comando
gcloud iam service-accounts add-iam-policy-binding
asigna un rol a una cuenta de servicio.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_ACCOUNT
: la dirección de correo de la cuenta de usuario que se usa para solicitar el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lee la política de permitir para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de autorización de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Si no has concedido ningún rol a la cuenta de servicio, la respuesta solo contendrá un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para asignar
CALLER_ACCOUNT
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de ejemplo del paso anterior, añade lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
-
Escribe la política de permiso actualizada:
El método
serviceAccounts.setIamPolicy
define una política de permiso actualizada para la cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.Por ejemplo, para definir la política de permiso que se muestra en el paso anterior, sustituye
POLICY
por lo siguiente, dondeCALLER_ACCOUNT
es la cuenta de usuario que crea el token de corta duración:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Generar el JWT
Genera un JWT autofirmado:
REST
El método
serviceAccounts.signJwt
de la API Service Account Credentials firma un JWT con la clave privada gestionada por el sistema de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
JWT_PAYLOAD
: la carga útil de JWT que se va a firmar, que es un objeto JSON que contiene un conjunto de reclamaciones de JWT. Incluye las reclamaciones necesarias para el caso práctico que quieras y para cumplir los requisitos de validación del servicio al que llamas. Si llamas a una API de Google, consulta la guía de autenticación de Google para ver los requisitos de las reclamaciones.La reclamación
exp
(hora de vencimiento) no debe ser posterior a 12 horas. Si llamas a una API de Google, la reclamaciónexp
no debe establecerse con más de una hora de antelación.La siguiente carga útil de ejemplo contiene reclamaciones para llamar a una API de Google, donde
EXP
es una marca de tiempo entera que representa la hora de vencimiento:{ \"iss\": \"PRIV_SA\", \"sub\": \"PRIV_SA\", \"aud\": \"https://firestore.googleapis.com/\", \"iat\": 1529350000, \"exp\": EXP }
Método HTTP y URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signJwt
Cuerpo JSON de la solicitud:
{ "payload": "JWT_PAYLOAD" }
Para enviar tu solicitud, despliega una de estas opciones:
Si la solicitud
signJwt
se ha completado correctamente, el cuerpo de la respuesta contiene un JWT firmado y el ID de la clave de firma que se ha usado para firmar el JWT. Puedes usar el valorsignedJwt
como token de portador para autenticar directamente una solicitud en nombre de la cuenta de servicio. El token es válido hasta la hora de vencimiento especificada en la solicitud:{ "keyId": "42ba1e...fc0a", "signedJwt": "eyJ0eXAi...NiJ9" }
Crear un objeto binario (blob) autofirmado
Los objetos binarios autofirmados, o blobs, se usan para transmitir datos binarios de forma que se conozca el origen de los datos (porque el blob está autofirmado). Los blobs se pueden usar para crear firmas, un objeto de Cloud Storage necesario para varios flujos de autenticación, incluidas las URLs firmadas. Para obtener información sobre las firmas, consulta la documentación de Cloud Storage.
Para crear un objeto binario autofirmado, sigue estos pasos:
Proporcionar los permisos necesarios
Una solicitud directa implica dos identidades: la persona que llama, que solicita la credencial, y la cuenta de servicio para la que se crea la credencial. La forma de configurar los permisos depende de si el llamante se autentica como una cuenta de servicio o como una cuenta de usuario.
Si quieres ejecutar un comando de la API REST o de la CLI de gcloud en esta página en un entorno de desarrollo local, el llamador puede representarse mediante credenciales de usuario. En el caso de las cargas de trabajo automatizadas, como una aplicación que se ejecuta en Compute Engine, el llamante debe estar representado por una cuenta de servicio.
Cuenta de servicio
Cuando la aplicación que llama usa una cuenta de servicio como identidad, se implican las siguientes entidades:
Cuenta de servicio de llamadas (
CALLER_SA
)Esta cuenta de servicio representa la aplicación que llama, que emite la solicitud de las credenciales de corta duración.
-
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le conceden los roles de gestión de identidades y accesos necesarios para el token de corta duración. Esta es la cuenta de servicio para la que se crea el token de corta duración.
Para dar permisos a
CALLER_SA
para crear credenciales de corta duración paraPRIV_SA
, asigna aCALLER_SA
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) enPRIV_SA
.Asigna el rol necesario en
PRIV_SA
:Consola
-
En la Trusted Cloud consola, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
-
Haz clic en la dirección de correo de la cuenta de servicio con privilegios,
PRIV_SA
. - Haz clic en la pestaña Permisos.
- En Principales con acceso a esta cuenta de servicio, haz clic en Conceder acceso.
-
Introduce la dirección de correo de la cuenta de servicio de la persona que llama,
CALLER_SA
.Por ejemplo,
demo@my-project.s3ns-system.iam.gserviceaccount.com
. -
Selecciona el rol Creador de tokens de cuenta de servicio
(
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para asignar el rol a la cuenta de servicio.
gcloud
El comando
gcloud iam service-accounts add-iam-policy-binding
asigna un rol a una cuenta de servicio.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_SA
: la dirección de correo de la cuenta de servicio que representa la aplicación que solicita el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator --format=json
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "serviceAccount:CALLER_SA" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwXhCB4eyjY=", "version": 1 }
REST
-
Lee la política de permitir para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de autorización de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Si no has concedido ningún rol a la cuenta de servicio, la respuesta solo contendrá un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para conceder a
CALLER_SA
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de ejemplo del paso anterior, añade lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Escribe la política de permiso actualizada:
El método
serviceAccounts.setIamPolicy
define una política de permiso actualizada para la cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.Por ejemplo, para definir la política de permiso que se muestra en el paso anterior, sustituye
POLICY
por lo siguiente, dondeCALLER_SA
es la cuenta de servicio que crea el token de corta duración:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Credenciales de usuario
Si quieres usar la CLI de Google Cloud para generar tokens de corta duración o generar tokens de corta duración desde un entorno de desarrollo local, puedes usar una cuenta de usuario para generar los tokens. A menudo, puedes usar tu propia cuenta de usuario.
Cuando usas una cuenta de usuario para generar tokens de corta duración, se implican las siguientes identidades:
Cuenta de la persona que llama (
CALLER_ACCOUNT
)Esta cuenta de usuario se usa para generar credenciales de corta duración para la cuenta de servicio con privilegios.
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le conceden los roles de gestión de identidades y accesos necesarios para el token de corta duración. Esta es la cuenta de servicio para la que se crea el token de corta duración.
Para permitir que
CALLER_ACCOUNT
cree credenciales de corta duración paraPRIV_SA
, asigna aCALLER_ACCOUNT
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) enPRIV_SA
.Asigna el rol necesario en
PRIV_SA
:Consola
-
En la Trusted Cloud consola, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
-
Haz clic en la dirección de correo de la cuenta de servicio con privilegios,
PRIV_SA
. - Haz clic en la pestaña Permisos.
- En Principales con acceso a esta cuenta de servicio, haz clic en Conceder acceso.
-
Introduce el identificador principal de la cuenta de la persona que llama,
CALLER_ACCOUNT
.Por ejemplo,
//iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com
. -
Selecciona el rol Creador de tokens de cuenta de servicio
(
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para asignar el rol a la cuenta de usuario.
gcloud
El comando
gcloud iam service-accounts add-iam-policy-binding
asigna un rol a una cuenta de servicio.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_ACCOUNT
: la dirección de correo de la cuenta de usuario que se usa para solicitar el token de corta duración.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud iam service-accounts add-iam-policy-binding PRIV_SA \ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (PowerShell)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ` --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Windows (cmd.exe)
gcloud iam service-accounts add-iam-policy-binding PRIV_SA ^ --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator --format=json
Deberías recibir una respuesta similar a la siguiente:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lee la política de permitir para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de autorización de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Si no has concedido ningún rol a la cuenta de servicio, la respuesta solo contendrá un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para asignar
CALLER_ACCOUNT
el rol Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de ejemplo del paso anterior, añade lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
-
Escribe la política de permiso actualizada:
El método
serviceAccounts.setIamPolicy
define una política de permiso actualizada para la cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto. Trusted Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.Por ejemplo, para definir la política de permiso que se muestra en el paso anterior, sustituye
POLICY
por lo siguiente, dondeCALLER_ACCOUNT
es la cuenta de usuario que crea el token de corta duración:{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "CALLER_ACCOUNT" ] } ] }
Método HTTP y URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Generar el blob autofirmado
Genera un blob autofirmado para la cuenta de servicio:
REST
El método
serviceAccounts.signBlob
de la API Service Account Credentials firma un blob mediante la clave privada gestionada por el sistema de una cuenta de servicio.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
PRIV_SA
: la dirección de correo de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
BLOB_PAYLOAD
: cadena de bytes codificada en base64. Por ejemplo,VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu
.
Método HTTP y URL:
POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signBlob
Cuerpo JSON de la solicitud:
{ "payload": "BLOB_PAYLOAD" }
Para enviar tu solicitud, despliega una de estas opciones:
Si la solicitud
signBlob
se ha completado correctamente, el cuerpo de la respuesta contiene un blob firmado y el ID de la clave de firma que se ha usado para firmar el blob. Puedes usar el valorsignedBlob
como token de portador para autenticar directamente una solicitud en nombre de la cuenta de servicio. El token es válido hasta que caduque la clave privada gestionada por el sistema de la cuenta de servicio. El ID de esta clave es el valor del campokeyId
de la respuesta.{ "keyId": "42ba1e...fc0a", "signedBlob": "eyJ0eXAi...NiJ9" }
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-08-20 (UTC).
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Me falta la información que necesito","missingTheInformationINeed","thumb-down"],["Es demasiado complicado o hay demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Está obsoleto","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema de muestras o código","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-08-20 (UTC)."],[[["This page details how to create short-lived credentials for service accounts, enabling impersonation using methods such as direct token generation instead of delegation chains."],["To create short-lived access tokens, the caller (user or service account) requires the Service Account Token Creator role (`roles/iam.serviceAccountTokenCreator`) on the privilege-bearing service account (`PRIV_SA`)."],["You can grant the necessary role through the Google Cloud Console, `gcloud` command-line tool, or REST API, with specific steps provided for each method, depending on whether the caller is a user or service account."],["The document outlines how to generate access tokens, OIDC ID tokens, and self-signed JWTs using `gcloud` and REST API, alongside examples of code snippets in various programming languages."],["The document also provides a summary section of the permissions required, and their respective gcloud and rest methods to achieve that, along with a glossary of key terms."]]],[]]