Cuentas de servicio

En esta página, se explican las cuentas de servicio, los tipos de cuentas de servicio y las funciones de IAM disponibles para las cuentas de servicio.

Antes de comenzar

¿Qué son las cuentas de servicio?

Una cuenta de servicio es un tipo especial de Cuenta de Google que pertenece a tu aplicación o a una máquina virtual (VM) en lugar de a un usuario final individual. Tu aplicación usa la cuenta de servicio para llamar a la API de Google de un servicio, de modo que los usuarios no están involucrados de manera directa.

Por ejemplo, una VM de Compute Engine puede ejecutarse como una cuenta de servicio y esa cuenta puede obtener permisos para acceder a los recursos que necesita. De esta forma, la cuenta de servicio es la identidad del servicio y los permisos de la cuenta de servicio controlan los recursos a los que tiene acceso el servicio.

Una cuenta de servicio se identifica por su dirección de correo electrónico, que es única a la cuenta.

Claves de cuenta de servicio

Cada cuenta de servicio se asocia con un par de claves administradas con Google Cloud Platform (GCP). Se usa para la autenticación entre servicios dentro de GCP. Google rota estas claves de manera automática y se usan para acceder por un máximo de hasta dos semanas.

De manera opcional, puedes crear uno o más pares de claves externas para usar fuera de GCP (por ejemplo, Credenciales predeterminadas de la aplicación). Cuando creas un par de claves nuevo, descargas la clave privada (que Google no retiene). Con las claves externas, tú eres el responsable de la seguridad de la clave privada y otras operaciones de administración como la rotación de claves. Las claves externas se pueden administrar con la API de IAM, la herramienta de línea de comandos de gcloud o la página Cuentas de servicio en Google Cloud Platform Console. Puedes crear hasta 10 claves de cuenta de servicio por cuenta de servicio para facilitar la rotación de claves.

Tipos de cuentas de servicio

Cuentas de servicio administradas por el usuario

Si la API de Compute Engine está habilitada cuando creas un proyecto de Cloud nuevo con GCP Console, se crea una cuenta de servicio de Compute Engine de manera predeterminada. Se la puede identificar con la siguiente dirección de correo electrónico:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Si tu proyecto contiene una aplicación de App Engine, la cuenta de servicio de App Engine se crea en tu proyecto de manera predeterminada. Se la puede identificar con la siguiente dirección de correo electrónico:

PROJECT_ID@appspot.gserviceaccount.com

Si creas una cuenta de servicio en tu proyecto, le pondrás nombre a la cuenta de servicio y se le asignará una dirección de correo electrónico con el siguiente formato:

SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Puedes crear hasta 100 cuentas de servicio por proyecto (incluso la cuenta de servicio predeterminada de Compute Engine y la cuenta de servicio de App Engine) con la API de IAM, GCP Console o la herramienta de línea de comandos de gcloud. Estas cuentas de servicio predeterminadas y las que creas de manera explícita son las cuentas de servicio administradas por el usuario.

Cuentas de servicio administradas por Google

Además de las cuentas de servicio administradas por el usuario, puede que veas algunas cuentas de servicio adicionales en la política de IAM de tu proyecto o en GCP Console. Estas cuentas de servicio son creación y propiedad de Google. Estas cuentas representan distintos servicios de Google y cada cuenta obtiene, de manera automática, funciones de IAM para acceder a tu proyecto de GCP.

Cuenta de servicio de las API de Google

Un ejemplo de una cuenta de servicio administrada por Google es una cuenta de servicio de API de Google a la que se identifica con la siguiente dirección de correo electrónico:

PROJECT_NUMBER@cloudservices.gserviceaccount.com

Esta cuenta de servicio está diseñada específicamente para ejecutar procesos internos de Google en tu nombre y no se encuentra en la sección Cuentas de servicio en GCP Console. De manera predeterminada, la cuenta obtiene automáticamente la función de editor de proyecto y aparece en la sección IAM de GCP Console. La cuenta de servicio solo se borra cuando se borra el proyecto. Los servicios de Google dependen de que la cuenta tenga acceso a tu proyecto. Por este motivo, no deberías quitar o cambiar la función de la cuenta de servicio en tu proyecto.

Permisos de las cuentas de servicio

Además de ser una identidad, una cuenta de servicio es un recurso que viene con políticas de IAM adjuntas. Estas políticas determinan quién puede usar la cuenta de servicio.

Por ejemplo, Alice puede tener la función de editor en una cuenta de servicio y Bob puede tener la función de lector en una cuenta de servicio. Funciona de la misma forma que la asignación de funciones en cualquier otro recurso de GCP.

A las cuentas de servicio predeterminadas de Compute Engine y App Engine se les asigna la función de editor en el proyecto cuando son creadas para que el código que se ejecuta en tu app o instancia de VM tenga los permisos necesarios. En este caso, las cuentas de servicio son identidades que obtienen la función de editor para un recurso (proyecto).

Si deseas permitirle a tu automatización el acceso a un depósito de Cloud Storage, le otorgas a la cuenta de servicio (que usa tu automatización) los permisos para leer el depósito de Cloud Storage. En este caso, la cuenta de servicio es la identidad a la que le otorgas permisos para otro recurso (el depósito de Cloud Storage).

La función de usuario de cuenta de servicio

Puedes otorgarle la función iam.serviceAccountUser a nivel de proyecto a todas las cuentas de servicio en el proyecto o puedes hacerlo a nivel de cuenta de servicio.

  • Otorgarle la función iam.serviceAccountUser a un usuario para un proyecto le da acceso a todas las cuentas de servicio del proyecto, incluso a aquellas que se creen en el futuro.

  • Otorgarle la función iam.serviceAccountUser a un usuario para una cuenta de servicio específica le permite acceder a la cuenta de servicio.

Si le otorgas a un usuario la función compute.instanceAdmin con la función iam.serviceAccountUser, puede crear y administrar las instancias de Compute Engine que usan una cuenta de servicio.

Luego de otorgarle funciones de IAM a las cuentas de servicio, puedes asignar la cuenta de servicio a una o más instancias de máquinas virtuales nuevas. Con el fin de obtener instrucciones sobre cómo hacer esto, consulta Configura una instancia nueva para que se ejecute como cuenta de servicio.

Aquellos usuarios que son serviceAccountUsers pueden usar la cuenta de servicio para acceder de manera indirecta a todos los recursos a los que tiene acceso la cuenta de servicio. Por ejemplo, un usuario que es un serviceAccountUser puede iniciar una instancia mediante la cuenta de servicio. Pueden usar la instancia a fin de acceder a todo aquello a lo que tiene acceso la identidad de la cuenta de servicio. Sin embargo, la función serviceAccountUser no permite que el usuario use de manera directa las funciones de la cuenta de servicio. Por lo tanto, ten cuidado cuando otorgas la función de iam.serviceAccountUser a un usuario.

Las cuentas de servicio representan la seguridad a nivel de servicio. La seguridad del servicio está determinada por las personas con funciones de IAM que administran y usan las cuentas de servicio y las personas que poseen claves externas privadas para esas cuentas de servicio. Las siguientes son recomendaciones para garantizar la seguridad:

  • Usa la API de IAM para auditar las cuentas de servicio, las claves y las políticas en esas cuentas de servicio.
  • Si tus cuentas de servicio no necesitan claves externas, bórralas.
  • Si los usuarios no necesitan permiso para administrar o usar las cuentas de servicio, quítalos de la política de IAM.

Para obtener más información sobre las recomendaciones, consulta Comprende las cuentas de servicio.

La función creador del token de la cuenta de servicio

Esta función permite actuar en nombre de cuentas de servicio para crear tokens de acceso OAuth2, firmar BLOB o JWT.

La función actor de la cuenta de servicio

Esta función es obsoleta. Si necesitas ejecutar operaciones como la cuenta de servicio, usa la función de usuario de cuenta de servicio. Para proporcionar de manera efectiva los mismos permisos que el actor de cuenta de servicio, deberías otorgar también la función creador de token de cuenta de servicio.

Alcances del acceso

Los alcances del acceso son el método heredado de especificar permisos para tu VM. Antes de que existieran las funciones de IAM, los alcances de acceso eran el único mecanismo mediante el cual otorgarles permisos a cuentas de servicio. Aunque ya no son la forma principal de otorgar permisos, todavía debes determinar alcances de acceso cuando configuras una instancia para que se ejecute como una cuenta de servicio. Para obtener más información sobre los alcances de acceso, consulta la documentación de Google Compute Engine.

Credenciales de cuentas de servicio de duración corta

Puedes crear credenciales de duración corta que te permiten tomar la identidad de una cuenta de servicio de GCP. Estas credenciales pueden usarse para autenticar llamadas a las API de Google Cloud Platform o a API que no sean de Google.

El caso práctico más común para estas credenciales es delegar acceso de manera temporal a recursos de GCP en diferentes proyectos, organizaciones o cuentas. Por ejemplo, en lugar de proporcionarle a un emisor externo credenciales permanentes de una cuenta de servicio con muchos privilegios, se le puede otorgar acceso de emergencia. Como alternativa, un emisor externo puede robar la identidad de una cuenta de servicio con permisos limitados sin necesitar las credenciales de una cuenta de servicio con privilegios mayores.

A fin de obtener más información, consulta Crea credenciales de duración corta para cuentas de servicio.

Credenciales predeterminadas de la aplicación

Las credenciales predeterminadas de la aplicación son un mecanismo para facilitar el uso de las cuentas de servicio cuando se opera dentro y fuera de GCP y en múltiples proyectos de GCP. El caso práctico más común es probar código en una máquina local, luego pasar a un proyecto de desarrollo en GCP y luego a un proyecto de producción en GCP. Usar credenciales predeterminadas de la aplicación garantiza que la cuenta de servicio funcione sin problemas. Cuando realizas pruebas en tu máquina local, usa una clave de cuenta de servicio almacenada de forma local, pero cuando se ejecuta en Compute Engine, usa la cuenta de servicio de Compute Engine predeterminada para el proyecto. Para obtener más información, consulta Credenciales predeterminadas de la aplicación.

Pasos siguientes

Para obtener más recomendaciones sobre cómo usar las cuentas de servicio, consulta Comprende las cuentas de servicio.

Lee las siguientes guías para obtener más información:

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Cloud Identity and Access Management