En esta página, se explica cómo crear credenciales de corta duración para una cuenta de servicio, que puedes usar para actuar en nombre de la cuenta de servicio. Según el tipo de token que crees, el token de corta duración proporciona la identidad (para los tokens de ID) o los permisos (para los tokens de acceso) asociados a la cuenta de servicio.
Si la arquitectura del sistema requiere que uses una serie de llamadas de generación de tokens, puedes usar una cadena de delegación que consta de varias cuentas de servicio. En la mayoría de los casos, el método directo, como se explica en esta página, es suficiente.
Antes de comenzar
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the IAM and Service Account Credentials APIs:
gcloud services enable iam.googleapis.com
iamcredentials.googleapis.com Comprende las cuentas de servicio de IAM.
Comprende el identidad temporal como cuenta de servicio.
Comprende qué tipo de token necesitas y sigue los pasos adecuados que se proporcionan en las siguientes secciones:
Crea 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 el uso de la identidad de una cuenta de servicio, el token de acceso viene sin un token de actualización, lo que significa que cuando el token caduca, debes repetir el proceso de uso de la 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, completa estas tareas:
Otorga los permisos necesarios
Una solicitud directa involucra dos identidades: el emisor que solicita la credencial y la cuenta de servicio para la que se crea la credencial. La forma en que configuras los permisos depende de si el emisor se autentica como una cuenta de servicio o como una Cuenta de Google.
Si deseas ejecutar un comando de la CLI de gcloud o REST en esta página en un entorno de desarrollo local, el emisor puede estar representado por credenciales de usuario. Para las cargas de trabajo automatizadas, como una aplicación que se ejecuta en Compute Engine, el emisor debe estar representado por una cuenta de servicio.
Cuenta de servicio
Cuando la aplicación que realiza la llamada usa una cuenta de servicio como su identidad, se involucran las siguientes principales:
Cuenta de servicio del emisor (
CALLER_SA
)Esta cuenta de servicio representa la aplicación que realiza la llamada, que emite la solicitud para las credenciales de corta duración.
-
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le otorgan los roles de IAM 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 otorgar permisos CALLER_SA
para crear credenciales de corta duración para PRIV_SA
, otorgas el rol de creador del token de la cuenta de servicio CALLER_SA
(roles/iam.serviceAccountTokenCreator
) en PRIV_SA
.
Otorga el rol necesario en PRIV_SA
:
Consola
-
En la consola de Google Cloud, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
- Haz clic en la dirección de correo electrónico 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 Otorgar acceso.
-
Ingresa la dirección de correo electrónico de la cuenta de servicio del emisor,
CALLER_SA
.Por ejemplo,
demo@my-project.iam.gserviceaccount.com
. -
Selecciona el rol de Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para otorgar el rol a la cuenta de servicio.
gcloud
El comando gcloud iam service-accounts add-iam-policy-binding
otorga un rol a una cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_SA
: Es la dirección de correo electrónico de la cuenta de servicio que representa a 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 que figura a continuación:
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 permisos para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de permisos de una cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Si no otorgaste ningún rol en la cuenta de servicio, la respuesta contendrá solo un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para otorgar a
CALLER_SA
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de muestra del paso anterior, agrega lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Escribe la política de permisos actualizada:
Mediante el método
serviceAccounts.setIamPolicy
, se configura una política de permisos actualizada para la cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.-
POLICY
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.Por ejemplo, para establecer la política de permisos que se muestra en el paso anterior, reemplaza
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": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
HTTP method and URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política de permisos actualizada:
Credenciales de usuario
Cuando quieras usar Google Cloud CLI para generar tokens de corta duración o desees generar tokens de corta duración desde un entorno de desarrollo local, puedes usar una cuenta de usuario a fin de generar los tokens. A menudo, puedes usar tu propia Cuenta de Google.
Cuando usas una cuenta de usuario para generar tokens de corta duración, se involucran las siguientes identidades:
Cuenta de Google del emisor (
CALLER_ACCOUNT
)Esta cuenta de usuario se usa a fin de 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 otorgan los roles de IAM 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.
A fin de habilitar CALLER_ACCOUNT
para crear credenciales de corta duración para PRIV_SA
, otorga a CALLER_ACCOUNT
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) en PRIV_SA
.
Otorga el rol necesario en PRIV_SA
:
Consola
-
En la consola de Google Cloud, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
- Haz clic en la dirección de correo electrónico 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 Otorgar acceso.
-
Ingresa la dirección de correo electrónico de la Cuenta de Google del emisor,
CALLER_ACCOUNT
.Por ejemplo,
username@google.com
. -
Selecciona el rol de Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para otorgar el rol a la cuenta de usuario.
gcloud
El comando gcloud iam service-accounts add-iam-policy-binding
otorga un rol a una cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_ACCOUNT
: Es la dirección de correo electrónico 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 que figura a continuación:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lee la política de permisos para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de permisos de una cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Si no otorgaste ningún rol en la cuenta de servicio, la respuesta contendrá solo un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para otorgar a
CALLER_ACCOUNT
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de muestra del paso anterior, agrega lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Escribe la política de permisos actualizada:
Mediante el método
serviceAccounts.setIamPolicy
, se configura una política de permisos actualizada para la cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.-
POLICY
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.Por ejemplo, para establecer la política de permisos que se muestra en el paso anterior, reemplaza
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": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
HTTP method and URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política de permisos actualizada:
Genera el token de acceso
Puedes generar un token de acceso de OAuth 2.0 con la CLI de gcloud, la API de REST o las bibliotecas cliente de Cloud y las bibliotecas cliente de la API de Google.
Si usas la API de REST y tu sistema está configurado para permitir la extensión de la vida útil de los tokens, puedes crear un token con una vida útil más larga que la predeterminada. Google Cloud CLI no admite la configuración de una vida útil para el token.
Los siguientes ejemplos están diseñados para usarse en un entorno de desarrollo local; el emisor debe estar representado por una cuenta de usuario, en lugar de una cuenta de servicio.
Si deseas generar un token de acceso de OAuth 2.0 para una cuenta de servicio, haz lo siguiente:
gcloud
Accede a Google Cloud CLI como la Cuenta de Google del emisor.
gcloud auth login CALLER_ACCOUNT
Genera un token para la cuenta de servicio.
El comando
gcloud auth print-access-token
genera un token de acceso de OAuth 2.0 para una cuenta de servicio.Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico 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 que figura a continuación:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. ya29.c.b0AXv0zTPnzTnDV8F8Aj5Fgy46Yf2v_v8eZIoKq7xGpfbpXuy23aQ1693m3gAuE8AZga7w6kdagN7a9bfdDYbdeoGY0CMHOClsCwIdutL7k_RFC672lOCbUgF5hS8Iu2nCA8hle-11LJXBLmaxFmH08ZTBJLuDrWSNd8cYqGYFunSC1K1qLIPBF18tsa0hxVgKPucI8b1A9L8_MK1JGLGcr0n7-zY77_lmbcdODG3NmIbLOGWOutjJgqSO_YoeCKK2QTUZIp5PG7RkKlXWnmYJA9pEahzNoQrs5sWZctc2bia9af_ITzqqlXC9h1Kj5-me6e8rd734MJvpagqYazRk0gGWpMb03XmMGpgPc_FBp4pnX9rGOzW83SNpcDz8zeFO1Q0Bo3N7CuZougjRce0y8I2_4rtw5ME_nV3wrCWa..................................................................................................................................................................................................................................................................................................
-
REST
Mediante el método serviceAccounts.generateAccessToken
de la API de credenciales de la cuenta de servicio, se genera un token de acceso de OAuth 2.0 para una cuenta de servicio.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
LIFETIME
: Es la cantidad de tiempo que transcurre hasta que el token de acceso caduca, expresada en segundos. Por ejemplo,300s
.De forma predeterminada, la vida útil máxima del token es de 1 hora (3,600 segundos). Para extender la vida útil máxima de estos tokens a 12 horas (43,200 segundos), agrega la cuenta de servicio a una política de la organización que incluya la restricción de 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, expande una de estas opciones:
Si la solicitud generateAccessToken
tiene éxito, el cuerpo de la respuesta contendrá un token de acceso de OAuth 2.0 y un tiempo de caducidad. El accessToken
se puede usar para autenticar una solicitud en nombre de la cuenta de servicio hasta que se haya alcanzado el expireTime
.
{ "accessToken": "eyJ0eXAi...NiJ9", "expireTime": "2020-04-07T15:01:23.045123456Z" }
Go
Antes de poder usar este código de muestra, debes configurar las credenciales predeterminadas de la aplicación para la Cuenta de Google del emisor al que le otorgaste el rol necesario para actuar en nombre de la cuenta de servicio con privilegios.
Java
Antes de poder usar este código de muestra, debes configurar las credenciales predeterminadas de la aplicación para la Cuenta de Google del emisor al que le otorgaste el rol necesario para actuar en nombre de la cuenta de servicio con privilegios.
Node.js
Antes de poder usar este código de muestra, debes configurar las credenciales predeterminadas de la aplicación para la Cuenta de Google del emisor al que le otorgaste el rol necesario para actuar en nombre de la cuenta de servicio con privilegios.
Python
Antes de poder usar este código de muestra, debes configurar las credenciales predeterminadas de la aplicación para la Cuenta de Google del emisor al que le otorgaste el rol necesario para actuar en nombre de la cuenta de servicio con privilegios.
Crea un token de ID de OpenID Connect (OIDC)
Los tokens de ID siguen la especificación de OpenID Connect (OIDC). Una cantidad limitada de servicios y aplicaciones aceptan los tokens de ID.
Si deseas obtener más información, consulta Tokens de ID y Autenticación para aplicaciones alojadas en Cloud Run o Cloud Functions.
Para crear un token de ID, completa estas tareas:
Otorga al emisor los permisos necesarios.
Usa el rol de Creador de tokens de identidad de OpenID Connect para cuentas de servicio (
roles/iam.serviceAccountOpenIdTokenCreator
) a fin de crear un token de ID. Este es un rol diferente del que usas para otros tipos de token.
Otorga los permisos necesarios
Una solicitud directa involucra dos identidades: el emisor que solicita la credencial y la cuenta de servicio para la que se crea la credencial. La forma en que configuras los permisos depende de si el emisor se autentica como una cuenta de servicio o como una Cuenta de Google.
Si deseas ejecutar un comando de la CLI de gcloud o REST en esta página en un entorno de desarrollo local, el emisor puede estar representado por credenciales de usuario. Para las cargas de trabajo automatizadas, como una aplicación que se ejecuta en Compute Engine, el emisor debe estar representado por una cuenta de servicio.
Cuenta de servicio
Cuando la aplicación que realiza la llamada usa una cuenta de servicio como su identidad, se involucran las siguientes principales:
Cuenta de servicio del emisor (
CALLER_SA
)Esta cuenta de servicio representa la aplicación que realiza la llamada, que emite la solicitud para las credenciales de corta duración.
-
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le otorgan los roles de IAM 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 otorgar a CALLER_SA
permisos a fin de crear credenciales de corta duración para PRIV_SA
, otorga a CALLER_SA
el rol de Creador de tokens de identidad de OpenID Connect para cuentas de servicio (roles/iam.serviceAccountOpenIdTokenCreator
) en PRIV_SA
.
Otorga el rol necesario en PRIV_SA
:
Consola
-
En la consola de Google Cloud, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
- Haz clic en la dirección de correo electrónico 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 Otorgar acceso.
-
Ingresa la dirección de correo electrónico de la cuenta de servicio del emisor,
CALLER_SA
.Por ejemplo,
demo@my-project.iam.gserviceaccount.com
. -
Selecciona el rol de Creador de tokens de identidad de OpenID Connect para cuentas de servicio (
roles/iam.serviceAccountOpenIdTokenCreator
). - Haz clic en Guardar para otorgar el rol a la cuenta de servicio.
gcloud
El comando gcloud iam service-accounts add-iam-policy-binding
otorga un rol a una cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_SA
: Es la dirección de correo electrónico de la cuenta de servicio que representa a 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 que figura a continuación:
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 permisos para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de permisos de una cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Si no otorgaste ningún rol en la cuenta de servicio, la respuesta contendrá solo un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permisos para otorgar a
CALLER_SA
el rol de creador de tokens de identidad de OpenID Connect para cuentas de servicio (roles/iam.serviceAccountOpenIdTokenCreator
).Por ejemplo, para modificar la respuesta de muestra del paso anterior, agrega lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Escribe la política de permisos actualizada:
Mediante el método
serviceAccounts.setIamPolicy
, se configura una política de permisos actualizada para la cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.-
POLICY
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.Por ejemplo, para establecer la política de permisos que se muestra en el paso anterior, reemplaza
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": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
HTTP method and URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política de permisos actualizada:
Credenciales de usuario
Cuando quieras usar Google Cloud CLI para generar tokens de corta duración o desees generar tokens de corta duración desde un entorno de desarrollo local, puedes usar una cuenta de usuario a fin de generar los tokens. A menudo, puedes usar tu propia Cuenta de Google.
Cuando usas una cuenta de usuario para generar tokens de corta duración, se involucran las siguientes identidades:
Cuenta de Google del emisor (
CALLER_ACCOUNT
)Esta cuenta de usuario se usa a fin de 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 otorgan los roles de IAM 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.
A fin de habilitar CALLER_ACCOUNT
para crear credenciales de corta duración para PRIV_SA
, otorga a CALLER_ACCOUNT
el rol de Creador de tokens de identidad de OpenID Connect para cuentas de servicio (roles/iam.serviceAccountOpenIdTokenCreator
) en PRIV_SA
.
Otorga el rol necesario en PRIV_SA
:
Consola
-
En la consola de Google Cloud, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
- Haz clic en la dirección de correo electrónico 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 Otorgar acceso.
-
Ingresa la dirección de correo electrónico de la Cuenta de Google del emisor,
CALLER_ACCOUNT
.Por ejemplo,
username@google.com
. -
Selecciona el rol de Creador de tokens de identidad de OpenID Connect para cuentas de servicio (
roles/iam.serviceAccountOpenIdTokenCreator
). - Haz clic en Guardar para otorgar el rol a la cuenta de usuario.
gcloud
El comando gcloud iam service-accounts add-iam-policy-binding
otorga un rol a una cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_ACCOUNT
: Es la dirección de correo electrónico 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 que figura a continuación:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountOpenIdTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lee la política de permisos para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de permisos de una cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Si no otorgaste ningún rol en la cuenta de servicio, la respuesta contendrá solo un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permisos para otorgar a
CALLER_ACCOUNT
el rol de Creador de tokens de identidad de OpenID Connect para cuentas de servicio (roles/iam.serviceAccountOpenIdTokenCreator
).Por ejemplo, para modificar la respuesta de muestra del paso anterior, agrega lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Escribe la política de permisos actualizada:
Mediante el método
serviceAccounts.setIamPolicy
, se configura una política de permisos actualizada para la cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.-
POLICY
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.Por ejemplo, para establecer la política de permisos que se muestra en el paso anterior, reemplaza
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": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountOpenIdTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
HTTP method and URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política de permisos actualizada:
Genera el token de ID
Puedes generar un token de ID de OpenID Connect (OIDC) mediante la CLI de gcloud, la API de REST o las bibliotecas cliente de Cloud y las bibliotecas cliente de la API de Google.
Los siguientes ejemplos están diseñados para usarse en un entorno de desarrollo local; el emisor debe estar representado por una cuenta de usuario, en lugar de una cuenta de servicio.
Los tokens de ID de OIDC son válidos durante 1 hora (3,600 segundos).
Genera un token de ID de OIDC firmado por Google para una cuenta de servicio:
gcloud
Accede a Google Cloud CLI como la Cuenta de Google del emisor.
gcloud auth login CALLER_ACCOUNT
Genera un token para la cuenta de servicio.
El comando
gcloud auth print-identity-token
genera un token de ID de OIDC para una cuenta de servicio.Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
AUDIENCE_NAME
: El público del token, generalmente la URL de la aplicación o el servicio a los que se quiere acceder con el token
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 que figura a continuación:
WARNING: This command is using service account impersonation. All API calls will be executed as [my-sa@my-project.iam.gserviceaccount.com]. eyJhbGciOiJSUzI1NiIsImtpZDNhMDg4ZDRmZmMjJkYTVmZTM5MDZjY2MiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ3d3cuZXhhbXBsJhenAiOiIxMTYzwNDYyMDk0ODIiLCJleHAiOjE2NTQ4ODU0MzEsImlhdCI6MTY1NDg4MTgzMSwiaXN6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViIMDQ2MjA5NDgyIn0.F7mu8IHj5VQdu7ItFrnYAKyGd7YqXuOP_rFLc98q8BaFBycAF1zAQnSnwqnSUXba0UK9PDT_-IOry68qLwBObz4XlX9lk0ehpN0O0W9FcFToKLB6wefXXPd4h7xtuPe5KzmpSOqj2Qqv34HriGw00Nqd-oGSgNY_lZ4wGEf4rT4oQa_kEcrY57Q2G6pwd769BhgeFwoLi5aK_Cv2kvf_zfMszC-xlkP9zwWQ8XinJBwe-qcQBa4NTgrbueNtXsEjccBS366zmw
-
REST
El método serviceAccounts.generateIdToken
de la API de Service Account Credentials genera un token de ID de OIDC para una cuenta de servicio.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
AUDIENCE_NAME
: El público del token, generalmente la URL de la aplicación o el servicio a los que se quiere acceder con el token
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, expande una de estas opciones:
Si la solicitud generateId
tuvo éxito, el cuerpo de la respuesta contendrá un token de ID válido por 1 hora. Se puede usar el token
para autenticar una solicitud en nombre de la cuenta de servicio.
{ "token": "eyJ0eXAi...NiJ9" }
Crea un token web JSON (JWT) autofirmado
Los tokens web JSON (JWT) autofirmados son útiles en varias situaciones:
- Autentica en una API implementada con API Gateway.
- Autenticación de una llamada a una API de Google como se describe en la Guía de autenticación de Google
- Comunicación segura entre tus propias aplicaciones. En esta situación, 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 identidad mediante la firma de un JWT que contiene reclamaciones arbitrarias sobre un usuario, una cuenta o un dispositivo
Para crear un JWT, completa estas tareas:
Otorga los permisos necesarios
Una solicitud directa involucra dos identidades: el emisor que solicita la credencial y la cuenta de servicio para la que se crea la credencial. La forma en que configuras los permisos depende de si el emisor se autentica como una cuenta de servicio o como una Cuenta de Google.
Si deseas ejecutar un comando de la CLI de gcloud o REST en esta página en un entorno de desarrollo local, el emisor puede estar representado por credenciales de usuario. Para las cargas de trabajo automatizadas, como una aplicación que se ejecuta en Compute Engine, el emisor debe estar representado por una cuenta de servicio.
Cuenta de servicio
Cuando la aplicación que realiza la llamada usa una cuenta de servicio como su identidad, se involucran las siguientes principales:
Cuenta de servicio del emisor (
CALLER_SA
)Esta cuenta de servicio representa la aplicación que realiza la llamada, que emite la solicitud para las credenciales de corta duración.
-
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le otorgan los roles de IAM 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 otorgar permisos CALLER_SA
para crear credenciales de corta duración para PRIV_SA
, otorgas el rol de creador del token de la cuenta de servicio CALLER_SA
(roles/iam.serviceAccountTokenCreator
) en PRIV_SA
.
Otorga el rol necesario en PRIV_SA
:
Consola
-
En la consola de Google Cloud, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
- Haz clic en la dirección de correo electrónico 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 Otorgar acceso.
-
Ingresa la dirección de correo electrónico de la cuenta de servicio del emisor,
CALLER_SA
.Por ejemplo,
demo@my-project.iam.gserviceaccount.com
. -
Selecciona el rol de Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para otorgar el rol a la cuenta de servicio.
gcloud
El comando gcloud iam service-accounts add-iam-policy-binding
otorga un rol a una cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_SA
: Es la dirección de correo electrónico de la cuenta de servicio que representa a 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 que figura a continuación:
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 permisos para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de permisos de una cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Si no otorgaste ningún rol en la cuenta de servicio, la respuesta contendrá solo un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para otorgar a
CALLER_SA
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de muestra del paso anterior, agrega lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Escribe la política de permisos actualizada:
Mediante el método
serviceAccounts.setIamPolicy
, se configura una política de permisos actualizada para la cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.-
POLICY
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.Por ejemplo, para establecer la política de permisos que se muestra en el paso anterior, reemplaza
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": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
HTTP method and URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política de permisos actualizada:
Credenciales de usuario
Cuando quieras usar Google Cloud CLI para generar tokens de corta duración o desees generar tokens de corta duración desde un entorno de desarrollo local, puedes usar una cuenta de usuario a fin de generar los tokens. A menudo, puedes usar tu propia Cuenta de Google.
Cuando usas una cuenta de usuario para generar tokens de corta duración, se involucran las siguientes identidades:
Cuenta de Google del emisor (
CALLER_ACCOUNT
)Esta cuenta de usuario se usa a fin de 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 otorgan los roles de IAM 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.
A fin de habilitar CALLER_ACCOUNT
para crear credenciales de corta duración para PRIV_SA
, otorga a CALLER_ACCOUNT
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) en PRIV_SA
.
Otorga el rol necesario en PRIV_SA
:
Consola
-
En la consola de Google Cloud, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
- Haz clic en la dirección de correo electrónico 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 Otorgar acceso.
-
Ingresa la dirección de correo electrónico de la Cuenta de Google del emisor,
CALLER_ACCOUNT
.Por ejemplo,
username@google.com
. -
Selecciona el rol de Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para otorgar el rol a la cuenta de usuario.
gcloud
El comando gcloud iam service-accounts add-iam-policy-binding
otorga un rol a una cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_ACCOUNT
: Es la dirección de correo electrónico 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 que figura a continuación:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lee la política de permisos para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de permisos de una cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Si no otorgaste ningún rol en la cuenta de servicio, la respuesta contendrá solo un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para otorgar a
CALLER_ACCOUNT
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de muestra del paso anterior, agrega lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Escribe la política de permisos actualizada:
Mediante el método
serviceAccounts.setIamPolicy
, se configura una política de permisos actualizada para la cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.-
POLICY
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.Por ejemplo, para establecer la política de permisos que se muestra en el paso anterior, reemplaza
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": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
HTTP method and URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política de permisos actualizada:
Genera el JWT
Genera un JWT autofirmado:
REST
Con el método serviceAccounts.signJwt
de la API de credenciales de la cuenta de servicio, se firma un JWT mediante la clave privada administrada por el sistema de una cuenta de servicio.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
JWT_PAYLOAD
: Es la carga útil del JWT que se firmará, que es un objeto JSON que contiene un conjunto de reclamaciones de JWT. Incluye las reclamaciones necesarias para tu caso de uso deseado a fin de cumplir con 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 conocer los requisitos de reclamación.La reclamación
exp
(tiempo de caducidad) no debe ser superior a 12 horas. Si llamas a una API de Google, la reclamaciónexp
no se debe establecer en más de 1 hora.La siguiente carga útil de ejemplo contiene reclamaciones para llamar a una API de Google, en la que
EXP
es una marca de tiempo de número entero 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, expande una de estas opciones:
Si la solicitud signJwt
se realizó con éxito, el cuerpo de la respuesta contendrá un JWT firmado y el ID de la clave de firma que se usó para firmarlo. Puedes usar el valor signedJwt
como un token del portador para autenticar directamente una solicitud en nombre de la cuenta de servicio. El token es válido hasta que venza el tiempo de caducidad especificado en la solicitud:
{ "keyId": "42ba1e...fc0a", "signedJwt": "eyJ0eXAi...NiJ9" }
Crea un objeto binario autofirmado (BLOB)
Los objetos binarios autofirmados, o BLOB, se usan para transmitir datos binarios de tal manera que se conozca el creador de los datos (porque el BLOB está autofirmado). Los BLOB se pueden usar a fin de crear firmas, un objeto de Cloud Storage necesario para varios flujos de autenticación, incluidas las URL firmadas. Para obtener información sobre las firmas, consulta la documentación de Cloud Storage.
Para crear un objeto binario autofirmado, completa estas tareas:
Otorga los permisos necesarios
Una solicitud directa involucra dos identidades: el emisor que solicita la credencial y la cuenta de servicio para la que se crea la credencial. La forma en que configuras los permisos depende de si el emisor se autentica como una cuenta de servicio o como una Cuenta de Google.
Si deseas ejecutar un comando de la CLI de gcloud o REST en esta página en un entorno de desarrollo local, el emisor puede estar representado por credenciales de usuario. Para las cargas de trabajo automatizadas, como una aplicación que se ejecuta en Compute Engine, el emisor debe estar representado por una cuenta de servicio.
Cuenta de servicio
Cuando la aplicación que realiza la llamada usa una cuenta de servicio como su identidad, se involucran las siguientes principales:
Cuenta de servicio del emisor (
CALLER_SA
)Esta cuenta de servicio representa la aplicación que realiza la llamada, que emite la solicitud para las credenciales de corta duración.
-
Cuenta de servicio con privilegios (
PRIV_SA
)A esta cuenta de servicio se le otorgan los roles de IAM 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 otorgar permisos CALLER_SA
para crear credenciales de corta duración para PRIV_SA
, otorgas el rol de creador del token de la cuenta de servicio CALLER_SA
(roles/iam.serviceAccountTokenCreator
) en PRIV_SA
.
Otorga el rol necesario en PRIV_SA
:
Consola
-
En la consola de Google Cloud, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
- Haz clic en la dirección de correo electrónico 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 Otorgar acceso.
-
Ingresa la dirección de correo electrónico de la cuenta de servicio del emisor,
CALLER_SA
.Por ejemplo,
demo@my-project.iam.gserviceaccount.com
. -
Selecciona el rol de Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para otorgar el rol a la cuenta de servicio.
gcloud
El comando gcloud iam service-accounts add-iam-policy-binding
otorga un rol a una cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_SA
: Es la dirección de correo electrónico de la cuenta de servicio que representa a 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 que figura a continuación:
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 permisos para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de permisos de una cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Si no otorgaste ningún rol en la cuenta de servicio, la respuesta contendrá solo un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para otorgar a
CALLER_SA
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de muestra del paso anterior, agrega lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
-
Escribe la política de permisos actualizada:
Mediante el método
serviceAccounts.setIamPolicy
, se configura una política de permisos actualizada para la cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.-
POLICY
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.Por ejemplo, para establecer la política de permisos que se muestra en el paso anterior, reemplaza
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": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "serviceAccount:CALLER_SA" ] } ] }
HTTP method and URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política de permisos actualizada:
Credenciales de usuario
Cuando quieras usar Google Cloud CLI para generar tokens de corta duración o desees generar tokens de corta duración desde un entorno de desarrollo local, puedes usar una cuenta de usuario a fin de generar los tokens. A menudo, puedes usar tu propia Cuenta de Google.
Cuando usas una cuenta de usuario para generar tokens de corta duración, se involucran las siguientes identidades:
Cuenta de Google del emisor (
CALLER_ACCOUNT
)Esta cuenta de usuario se usa a fin de 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 otorgan los roles de IAM 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.
A fin de habilitar CALLER_ACCOUNT
para crear credenciales de corta duración para PRIV_SA
, otorga a CALLER_ACCOUNT
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) en PRIV_SA
.
Otorga el rol necesario en PRIV_SA
:
Consola
-
En la consola de Google Cloud, ve a la página Cuentas de servicio.
- Selecciona un proyecto.
- Haz clic en la dirección de correo electrónico 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 Otorgar acceso.
-
Ingresa la dirección de correo electrónico de la Cuenta de Google del emisor,
CALLER_ACCOUNT
.Por ejemplo,
username@google.com
. -
Selecciona el rol de Creador de tokens de cuenta de servicio (
roles/iam.serviceAccountTokenCreator
). - Haz clic en Guardar para otorgar el rol a la cuenta de usuario.
gcloud
El comando gcloud iam service-accounts add-iam-policy-binding
otorga un rol a una cuenta de servicio.
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se genera el token. -
CALLER_ACCOUNT
: Es la dirección de correo electrónico 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 que figura a continuación:
Updated IAM policy for serviceAccount [PRIV_SA]. { "bindings": [ { "members": [ "user:CALLER_ACCOUNT" ], "role": "roles/iam.serviceAccountTokenCreator" } ], "etag": "BwX1ZbefjXU=", "version": 1 }
REST
-
Lee la política de permisos para
PRIV_SA
:El método
serviceAccounts.getIamPolicy
obtiene la política de permisos de una cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.
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, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] } ] }
Si no otorgaste ningún rol en la cuenta de servicio, la respuesta contendrá solo un valor
etag
. Incluye ese valor deetag
en el siguiente paso. -
Modifica la política de permiso para otorgar a
CALLER_ACCOUNT
el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
).Por ejemplo, para modificar la respuesta de muestra del paso anterior, agrega lo siguiente:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/serviceAccountAdmin", "members": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
-
Escribe la política de permisos actualizada:
Mediante el método
serviceAccounts.setIamPolicy
, se configura una política de permisos actualizada para la cuenta de servicio.Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_ID
: El ID del proyecto de Google Cloud Los ID de proyecto son strings alfanuméricas, comomy-project
.-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. POLICY_VERSION
: Es la versión de la política que se mostrará. Las solicitudes deben especificar la versión de política más reciente, que es la versión de política 3. Consulta Especifica una versión de política cuando obtienes una política para obtener más detalles.-
POLICY
: Es una representación JSON de la política que deseas establecer. Para obtener más información sobre el formato de una política, consulta la Referencia de políticas.Por ejemplo, para establecer la política de permisos que se muestra en el paso anterior, reemplaza
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": [ "user:admin@example.com" ] }, { "role": "roles/iam.serviceAccountTokenCreator", "members": [ "user:CALLER_ACCOUNT" ] } ] }
HTTP method and URL:
POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/PRIV_SA
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, expande una de estas opciones:
La respuesta contiene la política de permisos actualizada:
Genera el BLOB autofirmado
Genera un BLOB autofirmado para la cuenta de servicio:
REST
Con el método serviceAccounts.signBlob
de la API de credenciales de la cuenta de servicio, se firma un BLOB mediante la clave privada administrada por el sistema de una cuenta de servicio.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
-
PRIV_SA
: Es la dirección de correo electrónico de la cuenta de servicio con privilegios para la que se crea el token de corta duración. -
BLOB_PAYLOAD
: Es una string 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, expande una de estas opciones:
Si la solicitud signBlob
se realizó con éxito, el cuerpo de la respuesta contendrá un BLOB firmado y el ID de la clave de firma que se usó para firmarlo. Puedes usar el valor signedBlob
como un token del portador para autenticar directamente una solicitud en nombre de la cuenta de servicio. El token es válido hasta que caduque la clave privada administrada por el sistema de la cuenta de servicio. El ID de esta clave es el valor del campo keyId
en la respuesta.
{ "keyId": "42ba1e...fc0a", "signedBlob": "eyJ0eXAi...NiJ9" }