Crea credenciales de corta duración para una cuenta de servicio

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En esta página, se explica cómo usar la identidad de una cuenta de servicio a fin de crear credenciales de corta duración para una 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 cuya identidad estás usando.

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.

Acerca del uso de identidades de cuentas de servicio

Los usuarios y las cargas de trabajo necesitan roles de Identity and Access Management (IAM) para acceder a los recursos. A veces, tiene sentido otorgar roles a cada cuenta de usuario y cuenta de servicio que los necesite. Pero si eso no es posible o si deseas tener un control más centralizado, puedes usar la identidad de las cuentas de servicio.

Hay dos principales involucradas en el uso directo de la identidad de cuentas de servicio:

  • El emisor

    El emisor puede ser una cuenta de usuario o una de servicio. El emisor debe acceder al recurso de destino, pero carece de los permisos necesarios para hacerlo.

  • La cuenta de servicio con privilegios

    Esta cuenta de servicio tiene los permisos necesarios para acceder al recurso objetivo.

Cuando el emisor usa la identidad de la cuenta de servicio con privilegios, recibe un token de corta duración con los permisos de la cuenta de servicio con privilegios. Hasta que el token venza, el emisor puede usar el token para acceder al recurso objetivo.

El uso de la identidad de cuentas de servicio para crear tokens de corta duración tiene las siguientes ventajas:

  • Las credenciales de corta duración tienen una vida útil limitada, con una duración de unas pocas horas o menos, y no se actualizan de forma automática. También crean menos riesgo que las credenciales de larga duración, como las claves de cuenta de servicio.

  • La cuenta de servicio con privilegios se puede administrar y controlar de forma central, lo que evita la necesidad de realizar actualizaciones a gran escala si cambian los permisos necesarios.

Antes de comenzar

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 robo de identidad de la 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 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 y la cuenta de servicio para la que se crea la credencial. La forma en que configuras los permisos depende de si el emisor usa una cuenta de servicio o credenciales de usuario.

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

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.
  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio con privilegios, PRIV_SA.
  4. Haz clic en la pestaña Permisos.
  5. En Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.
  6. 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.

  7. Selecciona el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator).
  8. 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

  1. 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, como my-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 de etag en el siguiente paso.

  2. 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"
            ]
          }
        ]
      }
    
  3. 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, como my-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, donde CALLER_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

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.
  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio con privilegios, PRIV_SA.
  4. Haz clic en la pestaña Permisos.
  5. En Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.
  6. Ingresa la dirección de correo electrónico de la Cuenta de Google del emisor, CALLER_ACCOUNT.

    Por ejemplo, username@google.com.

  7. Selecciona el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator).
  8. 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

  1. 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, como my-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 de etag en el siguiente paso.

  2. 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"
          ]
        }
      ]
    }
    
  3. 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, como my-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, donde CALLER_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 la cuenta de servicio con privilegios, haz lo siguiente:

gcloud

  1. Accede a Google Cloud CLI como la Cuenta de Google del emisor.

    gcloud auth login CALLER_ACCOUNT
    
  2. Actúa en nombre de la cuenta de servicio con privilegios para generar el token.

    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"
}

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 los permisos necesarios

Una solicitud directa involucra dos identidades: el emisor y la cuenta de servicio para la que se crea la credencial. La forma en que configuras los permisos depende de si el emisor usa una cuenta de servicio o credenciales de usuario.

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

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.
  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio con privilegios, PRIV_SA.
  4. Haz clic en la pestaña Permisos.
  5. En Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.
  6. 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.

  7. Selecciona el rol de Creador de tokens de identidad de OpenID Connect para cuentas de servicio (roles/iam.serviceAccountOpenIdTokenCreator).
  8. 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

  1. 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, como my-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 de etag en el siguiente paso.

  2. 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"
            ]
          }
        ]
      }
    
  3. 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, como my-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, donde CALLER_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

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.
  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio con privilegios, PRIV_SA.
  4. Haz clic en la pestaña Permisos.
  5. En Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.
  6. Ingresa la dirección de correo electrónico de la Cuenta de Google del emisor, CALLER_ACCOUNT.

    Por ejemplo, username@google.com.

  7. Selecciona el rol de Creador de tokens de identidad de OpenID Connect para cuentas de servicio (roles/iam.serviceAccountOpenIdTokenCreator).
  8. 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

  1. 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, como my-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 de etag en el siguiente paso.

  2. 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"
          ]
        }
      ]
    }
    
  3. 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, como my-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, donde CALLER_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 la cuenta de servicio con privilegios:

gcloud

  1. Accede a Google Cloud CLI como la Cuenta de Google del emisor.

    gcloud auth login CALLER_ACCOUNT
    
  2. Actúa en nombre de la cuenta de servicio con privilegios para generar el token.

    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 y la cuenta de servicio para la que se crea la credencial. La forma en que configuras los permisos depende de si el emisor usa una cuenta de servicio o credenciales de usuario.

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

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.
  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio con privilegios, PRIV_SA.
  4. Haz clic en la pestaña Permisos.
  5. En Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.
  6. 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.

  7. Selecciona el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator).
  8. 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

  1. 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, como my-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 de etag en el siguiente paso.

  2. 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"
            ]
          }
        ]
      }
    
  3. 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, como my-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, donde CALLER_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

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.
  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio con privilegios, PRIV_SA.
  4. Haz clic en la pestaña Permisos.
  5. En Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.
  6. Ingresa la dirección de correo electrónico de la Cuenta de Google del emisor, CALLER_ACCOUNT.

    Por ejemplo, username@google.com.

  7. Selecciona el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator).
  8. 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

  1. 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, como my-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 de etag en el siguiente paso.

  2. 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"
          ]
        }
      ]
    }
    
  3. 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, como my-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, donde CALLER_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ón exp 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 y la cuenta de servicio para la que se crea la credencial. La forma en que configuras los permisos depende de si el emisor usa una cuenta de servicio o credenciales de usuario.

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

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.
  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio con privilegios, PRIV_SA.
  4. Haz clic en la pestaña Permisos.
  5. En Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.
  6. 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.

  7. Selecciona el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator).
  8. 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

  1. 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, como my-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 de etag en el siguiente paso.

  2. 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"
            ]
          }
        ]
      }
    
  3. 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, como my-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, donde CALLER_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

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.
  3. Haz clic en la dirección de correo electrónico de la cuenta de servicio con privilegios, PRIV_SA.
  4. Haz clic en la pestaña Permisos.
  5. En Principales con acceso a esta cuenta de servicio, haz clic en Otorgar acceso.
  6. Ingresa la dirección de correo electrónico de la Cuenta de Google del emisor, CALLER_ACCOUNT.

    Por ejemplo, username@google.com.

  7. Selecciona el rol de Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator).
  8. 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

  1. 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, como my-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 de etag en el siguiente paso.

  2. 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"
          ]
        }
      ]
    }
    
  3. 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, como my-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, donde CALLER_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 con privilegios:

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"
}