Usa la identidad de otra cuenta de servicio

Cuando la cuenta principal que usas no tenga los permisos que necesitas para realizar tu tarea o si deseas usar una cuenta de servicio en un entorno de desarrollo, puedes usar la identidad de otra cuenta de servicio.

Cuando usas la identidad temporal como cuenta de servicio, comienzas con una cuenta principal autenticada (tu cuenta de usuario o una cuenta de servicio) y solicitas credenciales de corta duración para una cuenta de servicio que tiene la autorización que requiere tu caso de uso. El cuenta principal autenticada debe tener los permisos necesarios para usar la identidad de otra cuenta de servicio.

El uso de identidad de otra cuenta de servicio es más seguro que utilizar una clave de cuenta de servicio porque el uso de la identidad de otra cuenta de servicio requiere una identidad autenticada previamente, y las credenciales que se crean mediante el uso de identidad no se conservan. En comparación, la autenticación con una clave de cuenta de servicio no requiere autenticación previa, y la clave persistente es una credencial de alto riesgo si se expone.

Para obtener más información sobre el uso de la identidad de cuentas de servicio, consulta Uso de la identidad de cuentas de servicio.

Antes de comenzar

Antes de usar el robo de identidad de cuentas de servicio, debes habilitar las APIs necesarias y asegurarte de tener los roles necesarios.

Habilita APIs

Para actuar en nombre de una cuenta de servicio, debes habilitar la API de credenciales de la cuenta de servicio en tu proyecto.

Habilita la API

Roles obligatorios

Para garantizar que la cuenta principal tenga el permiso necesario para usar la identidad de otra cuenta de servicio, pídele a tu administrador que le otorgue a la cuenta principal el rol de IAM Creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) en la cuenta de servicio. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

Este rol predefinido contiene el permiso iam.serviceAccounts.getAccessToken, que se requiere para usar la identidad de otra cuenta de servicio.

Es posible que tu administrador también pueda otorgar este permiso a la cuenta principal con roles personalizados o con otros roles predefinidos.

Debes otorgar estos roles a tu cuenta principal, incluso cuando estés trabajando en un proyecto que hayas creado.

Si deseas obtener más información sobre los roles necesarios para el uso de identidad, consulta Roles para la autenticación de cuenta de servicio.

Puedes usar la identidad de otra cuenta de servicio mediante los siguientes métodos:

Usa la CLI de gcloud

La CLI de gcloud proporciona una forma sencilla de usar la identidad de otras cuentas de servicio. Este método funciona bien cuando necesitas usar una cuenta de servicio para acceder a los recursos o servicios de Google Cloud mediante la CLI de gcloud.

Puedes usar la identidad de una cuenta de servicio para un comando específico de la CLI de gcloud o configurar la CLI de gcloud para usar la identidad para cada comando automáticamente.

Usa la identidad de otra cuenta para un comando de la CLI de gcloud específico

Para usar la identidad de otra cuenta para un comando de la CLI de gcloud específico, usa la marca --impersonate-service-account. Por ejemplo, el siguiente comando enumera los buckets de almacenamiento mediante la identidad y el acceso que proporciona 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. La cuenta principal que accedió a la CLI de gcloud (por lo general, tu cuenta de usuario) debe tener el permiso requerido en la cuenta de servicio.

Usa la identidad de otra cuenta con la CLI de gcloud de forma predeterminada

Para configurar la CLI de gcloud para usar la identidad y el acceso que proporciona una cuenta de servicio de forma predeterminada, usa el comando de configuración de la CLI de gcloud:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Con este conjunto de propiedades de configuración, 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 para cada comando. La cuenta principal que accedió a la CLI de gcloud debe tener el permiso requerido en la cuenta de servicio.

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

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

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

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

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

Genera y administra credenciales de corta duración

Si ninguno de los métodos anteriores aborda tu caso de uso, debes generar y administrar tokens de corta duración. Por ejemplo, si necesitas un tipo diferente de credencial de corta duración (que no sea un token de acceso) o si necesitas usar la identidad de otra cuenta en un entorno de producción, utiliza este método.

Para obtener información sobre la generación de tokens de corta duración, consulta Crea credenciales de corta duración para una cuenta de servicio.

¿Qué sigue?