Identidad temporal como cuenta de servicio

Cuando un principal autenticado, como un usuario o cualquier otra cuenta de servicio, se autentica como una cuenta de servicio para obtener los permisos de la cuenta de servicio, se llama actuar en nombre de la cuenta de servicio. Actuar en nombre de una cuenta de servicio permite que una principal autenticada acceda a lo que puede acceder la cuenta de servicio. Solo las principales autenticadas con los permisos adecuados pueden actuar en nombre de cuentas de servicio.

Actuar en nombre de una cuenta es útil cuando deseas cambiar los permisos de un usuario sin cambiar las políticas de Identity and Access Management (IAM). Por ejemplo, puedes usar la identidad temporal para otorgar de forma temporal a un usuario acceso elevado o para probar si un conjunto específico de permisos es suficiente para una tarea. También puedes usar la identidad temporal para desarrollar aplicaciones que se ejecuten solo como una cuenta de servicio o para autenticar aplicaciones que se ejecutan fuera de Google Cloud.

La identidad temporal como cuenta de servicio de Google Cloud es similar a los métodos de la API del servicio de token de seguridad de Amazon Web Services (AWS) como AssumeRole.

Cómo funciona la identidad temporal como cuenta de servicio

La identidad temporal como cuenta de servicio siempre involucra dos identidades: una principal autenticada y la cuenta de servicio que suplanta la principal. Para actuar en nombre de la cuenta de servicio, la principal autenticada obtiene un token para la cuenta de servicio y, luego, lo usa para autenticarse como la cuenta de servicio.

Existen varias formas de actuar en nombre de una cuenta de servicio:

  • Establece la marca --impersonate-service-account o la propiedad impersonate-service-account cuando ejecutes un comando de Google Cloud CLI. Cuando ejecutas un comando de la CLI de gcloud con esta configuración, la CLI de gcloud crea credenciales de corta duración para la cuenta de servicio y, luego, ejecuta el comando con esas credenciales.

    También puedes usar la marca --impersonate-service-account cuando configuras el archivo de credenciales predeterminadas de la aplicación. Esta configuración permite que las bibliotecas cliente que admiten el uso de identidad temporal actúen en nombre de la cuenta de servicio de manera automática.

  • Crea credenciales de corta duración con la API de credenciales de la cuenta de servicio y, luego, usa esas credenciales para autenticar una solicitud de API.

    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. Crean menos riesgo que las credenciales de larga duración, como las claves de cuenta de servicio.

  • Usa un archivo de configuración de credenciales para configurar una aplicación externa para actuar en nombre de una cuenta de servicio. Esta opción solo está disponible para aplicaciones que usan la federación de Workload Identity.

    Cuando una aplicación usa un archivo de configuración de credenciales para acceder a Google Cloud, primero usa sus credenciales específicas del entorno para obtener una credencial de corta duración para una cuenta de servicio designada. Luego, usa esa credencial de corta duración para autenticarse en Google Cloud.

Si una principal accede a los recursos mientras actúa en nombre de una cuenta de servicio, la mayoría de los registros de auditoría incluyen su identidad y la identidad de la cuenta de servicio que suplantan. Para obtener más información, consulta Interpreta los registros de auditoría.

Cuando usas la consola de Google Cloud, siempre autenticas con tus credenciales de usuario. No puedes actuar en nombre de una cuenta de servicio para acceder a los recursos en la consola de Google Cloud.

Autenticación sin identidad temporal

Existen varias formas en que una carga de trabajo o un usuario se autentiquen como una cuenta de servicio sin actuar en nombre de la cuenta de servicio:

  • Una carga de trabajo usa una cuenta de servicio conectada para autenticarse en las APIs de Google. En este caso, la cuenta de servicio conectada actúa como la identidad de la carga de trabajo y es la única identidad autenticada que participa en la solicitud.

    Si deseas obtener información sobre cómo se autentican las cargas de trabajo en Google Cloud, consulta Identidades para las cargas de trabajo.

  • Una principal usa una clave de cuenta de servicio para autenticarse como una cuenta de servicio. El uso de una clave de cuenta de servicio para autenticarse como una cuenta de servicio solo implica una identidad autenticada: la de la cuenta de servicio. Debido a que solo hay una identidad involucrada, usar una clave no equivale a actuar en nombre de la cuenta de servicio.

En estos casos, los registros de auditoría solo registran la identidad de la cuenta de servicio. No registran ninguna otra identidad, por ejemplo, las identidades de los usuarios que ejecutaron código en la carga de trabajo o las identidades de las personas que usaron la clave de cuenta de servicio para autenticarse. Como resultado, el uso de claves de cuenta de servicio o la autorización de los desarrolladores para ejecutar código en recursos con privilegios, por ejemplo, una sesión de SSH a una instancia de VM, puede crear riesgos de elevación de privilegios y no repudio.

Permisos necesarios

Para actuar en nombre de una cuenta de servicio, necesitas el permiso iam.serviceAccounts.getAccessToken. Este permiso está en roles como el rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator).

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

Casos de uso para la identidad temporal como cuenta de servicio

Actuar en nombre de la cuenta de servicio es útil cuando necesitas realizar tareas como las siguientes:

  • Otorgar a un usuario acceso temporal elevado
  • Probar si un conjunto específico de permisos es suficiente para una tarea
  • Desarrollar de forma local aplicaciones que solo se puedan ejecutar como una cuenta de servicio
  • Autenticar aplicaciones externas

Otorgar acceso temporal elevado

En algunos casos, es posible que desees permitir que un usuario acceda a recursos específicos de manera temporal. Por ejemplo, es posible que desees otorgarle a alguien acceso adicional para que pueda resolver un incidente o dejar que alguien acceda a datos sensibles por un tiempo limitado después de que registre una justificación.

Actuar en nombre de otra cuenta de servicio es una de las formas en las que puedes otorgar a los usuarios este acceso temporal elevado. Si quieres usar una cuenta de servicio para el acceso temporal elevado, primero debes otorgarle los roles de IAM que deseas otorgar de forma temporal a los usuarios. Luego, permites a los usuarios actuar en nombre de la cuenta de servicio, ya sea otorgándoles permiso para actuar en nombre de la cuenta de servicio o mediante un agente de tokens para emitir una credencial de corta duración para la cuenta de servicio.

Para obtener más información sobre los métodos que permiten otorgar acceso elevado de forma temporal a los usuarios, consulta Descripción general del acceso temporal temporal.

Prueba los permisos

En algunos casos, es posible que desees verificar si un conjunto específico de permisos es suficiente para una tarea. Por ejemplo, puede que quieras confirmar que una cuenta de servicio aún pueda ejecutar una aplicación si quitas ciertos permisos excedentes. O bien, es posible que estés ayudando a un usuario a solucionar problemas de una tarea y deseas verificar que pueda ejecutar un comando determinado con sus roles de IAM actuales.

Puedes usar identidad temporal como cuenta de servicio para probar un conjunto específico de permisos. Primero, crea una cuenta de servicio y otórgale una o más roles de IAM con los permisos que desees probar. Luego, actúa en nombre de la cuenta de servicio y, luego, intenta realizar la tarea. Este método te permite probar permisos sin necesidad de crear cuentas de usuario de prueba o modificar tus propios permisos de IAM.

Para obtener información sobre cómo actuar en nombre de cuentas de servicio, consulta Usa identidad temporal como cuenta de servicio.

Desarrolla aplicaciones de manera local

Cuando desarrollas aplicaciones de manera local, puedes autenticarte con tus credenciales de usuario. Sin embargo, en algunas situaciones, eso podría no ser posible, por ejemplo, si deseas autenticarte en un servicio que requiere un token con un público personalizado, que los usuarios no pueden configurar. En estos casos, debes autenticarte como una cuenta de servicio en lugar de autenticar con tus credenciales de usuario.

En estas situaciones, te recomendamos que uses la identidad temporal como cuenta de servicio. El uso de la identidad temporal como cuenta de servicio te permite evitar el uso de claves de cuentas de servicio, lo que crea un riesgo de seguridad adicional.

Para obtener información sobre cómo actuar en nombre de cuentas de servicio para desarrollar aplicaciones, consulta Identidad temporal como cuenta de servicio.

Autenticar aplicaciones externas

Para acceder a los recursos de Google Cloud, las aplicaciones que se ejecutan fuera de Google Cloud deben autenticarse en Google Cloud. Una forma de autenticar estas aplicaciones es usar la identidad temporal como cuenta de servicio.

Para permitir que la aplicación actúe en nombre de una cuenta de servicio, primero debes configurar la federación de identidades para cargas de trabajo, que proporciona una identidad autenticada para la aplicación. Luego, puedes usar un archivo de configuración de credenciales para configurar la aplicación para que actúe en nombre de una cuenta de servicio.

Si bien es posible usar claves de cuenta de servicio para autenticar aplicaciones externas, te recomendamos que no lo uses. Las claves de las cuentas de servicio crean riesgos de seguridad adicionales y deben evitarse cuando sea posible.

¿Qué sigue?