Uso de 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 usurpar la identidad de las 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 usar la identidad 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 gcloud CLI con este parámetro de 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 configures tu archivo de credenciales predeterminadas de la aplicación. Esta configuración permite que las bibliotecas cliente que admiten la suplantación 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 Service Account Credentials y, luego, usa esas credenciales para autenticar una solicitud a la 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 identidades para cargas de trabajo.

    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 Cómo interpretar los registros de auditoría.

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

Autenticación sin identidad temporal

Existen varias formas en que una carga de trabajo o un usuario pueden autenticarse como una cuenta de servicio sin usar la identidad 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 adjunta actúa como la identidad de la carga de trabajo y es la única identidad autenticada involucrada en la solicitud.

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

  • Un 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 la identidad temporal como 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 la cuenta de servicio para autenticarse. Como resultado, usar claves de cuenta de servicio o otorgarles a los desarrolladores permiso 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 usar la identidad 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

La identidad temporal como 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
  • Autentica aplicaciones externas

Otorgar acceso temporal elevado

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

El uso de identidad temporal como cuenta de servicio es una de las formas en 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 para otorgar a los usuarios acceso temporal elevado, consulta la descripción general del acceso temporal elevado.

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, es posible que desees confirmar que una cuenta de servicio puede ejecutar una aplicación si quitas ciertos permisos excesivos. 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, usa la identidad de la cuenta de servicio y realiza la tarea. Este método te permite probar permisos sin necesidad de crear cuentas de usuario de prueba ni 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 forma local

Cuando desarrollas aplicaciones de forma local, por lo general, puedes autenticarte con tus credenciales de usuario. Sin embargo, en algunas situaciones, es posible que eso no sea posible, por ejemplo, si deseas autenticarte en un servicio que requiere un token con un público personalizado, que los usuarios suelen no poder configurar. En estos casos, debes autenticarte como una cuenta de servicio en lugar de hacerlo 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.

Autentica 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 use la identidad 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.

Aunque es posible usar claves de cuenta de servicio para autenticar aplicaciones externas, no lo recomendamos. Las claves de las cuentas de servicio crean un riesgo de seguridad adicional y deben evitarse siempre que sea posible.

¿Qué sigue?