Usar la suplantación de identidad de cuentas de servicio

Si la cuenta principal que estás usando no tiene los permisos que necesitas para llevar a cabo tu tarea o quieres usar una cuenta de servicio en un entorno de desarrollo, puedes usar la suplantación de identidad de cuenta de servicio.

Cuando usas la suplantación de identidad de una cuenta de servicio, empiezas con un principal autenticado (tu cuenta de usuario o una cuenta de servicio) y solicitas credenciales de corta duración para una cuenta de servicio que tenga la autorización que requiere tu caso práctico. La entidad autenticada debe tener los permisos necesarios para suplantar la identidad de la cuenta de servicio.

La suplantación de identidad de cuentas de servicio es más segura que el uso de una clave de cuenta de servicio, ya que requiere una identidad autenticada previamente y las credenciales que se crean mediante la suplantación de identidad no se conservan. En cambio, para autenticarse con una clave de cuenta de servicio no es necesario autenticarse previamente y la clave persistente es una credencial de alto riesgo si se expone.

Para obtener más información sobre la suplantación de identidad en cuentas de servicio, consulta el artículo Suplantación de identidad en cuentas de servicio.

Antes de empezar

Antes de usar la suplantación de identidad de cuenta de servicio, debes habilitar las APIs necesarias y asegurarte de que tienes los roles necesarios.

Habilitar APIs

Para suplantar una cuenta de servicio, debes habilitar la API Service Account Credentials en tu proyecto.

Roles required to enable APIs

To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

Enable the API

Roles obligatorios

Para obtener el permiso que necesitas para suplantar la identidad de una cuenta de servicio, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) en la cuenta de servicio. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso iam.serviceAccounts.getAccessToken , que es necesario para suplantar la identidad de una cuenta de servicio.

También puedes obtener este permiso con roles personalizados u otros roles predefinidos.

Debes asignar estos roles a tu cuenta, incluso cuando trabajes en un proyecto que hayas creado.

Para obtener más información sobre los roles necesarios para la suplantación de identidad, consulta Roles para la autenticación de cuentas de servicio.

Puedes usar la suplantación de identidad de cuentas de servicio con los siguientes métodos:

Usar la CLI gcloud

La CLI de gcloud ofrece una forma sencilla de usar la suplantación de identidad de cuentas de servicio. Este método es útil cuando necesitas usar una cuenta de servicio para acceder a recursos o servicios de Google Cloud mediante la CLI de gcloud.

Puedes suplantar la identidad de una cuenta de servicio para un comando específico de la CLI de gcloud o configurar la CLI de gcloud para que use la suplantación de identidad en todos los comandos automáticamente.

Usar la suplantación para un comando específico de la CLI de gcloud

Para usar la suplantación en un comando específico de la CLI de gcloud, usa la marca --impersonate-service-account. Por ejemplo, el siguiente comando muestra los segmentos de almacenamiento mediante la identidad y el acceso proporcionados por la cuenta de servicio especificada:

gcloud storage buckets list --impersonate-service-account=SERVICE_ACCT_EMAIL

Cuando usas esta marca, la CLI de gcloud solicita credenciales de corta duración para la cuenta de servicio especificada y las usa para autenticarse en la API y autorizar el acceso. El principal que ha iniciado sesión en la CLI de gcloud (normalmente, tu cuenta de usuario) debe tener el permiso necesario en la cuenta de servicio.

Usar la suplantación de identidad con la CLI de gcloud de forma predeterminada

Para configurar la CLI de gcloud de forma que use de forma predeterminada la identidad y el acceso proporcionados por una cuenta de servicio, usa el comando de configuración de la CLI de gcloud:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Con esta propiedad de configuración definida, la CLI de gcloud solicita credenciales de corta duración para la cuenta de servicio especificada y las usa para autenticarse en la API y autorizar el acceso al recurso en cada comando. La entidad de seguridad que ha iniciado sesión en la CLI de gcloud debe tener el permiso necesario en la cuenta de servicio.

Configurar las credenciales predeterminadas de la aplicación para usar bibliotecas de cliente

Puedes usar la suplantación de identidad de la cuenta de servicio para configurar un archivo de credenciales predeterminadas de la aplicación (ADC) local. Las bibliotecas de cliente que admiten la suplantación de identidad pueden usar esas credenciales automáticamente. Los archivos ADC locales creados mediante la suplantación de identidad se admiten en los siguientes idiomas:

  • C#
  • Go
  • Java
  • Node.js
  • Python

Usa la suplantación de identidad de la cuenta de servicio para crear un archivo ADC local:

gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL

Ahora puedes usar bibliotecas de cliente con los lenguajes admitidos de la misma forma que lo harías después de configurar un archivo ADC local con las credenciales de usuario. Las bibliotecas de autenticación encuentran las credenciales automáticamente. Para obtener más información, consulta el artículo Autenticarse para usar bibliotecas de cliente.

No todas las bibliotecas de autenticación admiten las credenciales de un archivo ADC local generado mediante la suplantación de identidad de una cuenta de servicio. Para obtener más información, consulta el artículo Error devuelto para las credenciales locales de la suplantación de identidad de la cuenta de servicio.

Generar y gestionar credenciales de corta duración

Si ninguno de los métodos anteriores se adapta a tu caso práctico, debes generar y gestionar tokens de corta duración. Por ejemplo, si necesitas otro tipo de credencial de corta duración (algo que no sea un token de acceso) o si necesitas usar la suplantación de identidad en un entorno de producción, utiliza este método.

Para obtener información sobre cómo generar tokens de corta duración, consulta el artículo Crear credenciales de corta duración para una cuenta de servicio.

Siguientes pasos