En este documento se explica cómo crear una instancia de máquina virtual (VM) configurada para usar una cuenta de servicio gestionada por el usuario. Una cuenta de servicio es un tipo especial de cuenta que suelen usar las aplicaciones o las cargas de trabajo de computación para hacer llamadas a la API autorizadas.
Las cuentas de servicio son necesarias en situaciones en las que una carga de trabajo, como una aplicación personalizada, necesita acceder a recursos de Google Cloud o realizar acciones sin la intervención de un usuario final. Para obtener más información sobre cuándo usar cuentas de servicio, consulta las prácticas recomendadas para usar cuentas de servicio.
Si tienes aplicaciones que necesitan hacer llamadas a las APIs de Google Cloud , Google recomienda que asocies una cuenta de servicio gestionada por el usuario a la VM en la que se ejecuta la aplicación o la carga de trabajo. A continuación, asigna roles de gestión de identidades y accesos a la cuenta de servicio, lo que le da acceso a losGoogle Cloud recursos, así como a las aplicaciones que se ejecutan en la VM.
Antes de empezar
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles obligatorios
Para obtener los permisos que necesitas para crear VMs que usen cuentas de servicio, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:
-
Administrador de instancias de Compute (v. 1) (
roles/compute.instanceAdmin.v1
) -
Crear cuentas de servicio (
roles/iam.serviceAccountCreator
) -
Administrador de gestión de identidades y accesos del proyecto (
roles/resourcemanager.projectIamAdmin
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para crear VMs que usen cuentas de servicio. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para crear VMs que usen cuentas de servicio, se necesitan los siguientes permisos:
-
Para crear cuentas de servicio:
Todos los permisos del rol
iam.serviceAccountCreator
-
Para conceder permisos a la cuenta de servicio, debe tener todos los permisos del rol
resourcemanager.projectIamAdmin
. -
Para crear VMs, sigue estos pasos:
compute.instances.create
en el proyecto- Para usar una imagen personalizada para crear la VM, haz clic en
compute.images.useReadOnly
en la imagen. - Para usar una captura para crear la VM,
compute.snapshots.useReadOnly
en la captura - Para usar una plantilla de instancia para crear la VM, haz clic en
compute.instanceTemplates.useReadOnly
en la plantilla de instancia. - Para asignar una red antigua a la VM, haz lo siguiente:
compute.networks.use
en el proyecto - Para especificar una dirección IP estática para la máquina virtual,
compute.addresses.use
en el proyecto - Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente:
compute.networks.useExternalIp
en el proyecto - Para especificar una subred para la VM,
compute.subnetworks.use
en el proyecto o en la subred elegida. - Para asignar una dirección IP externa a la VM cuando se usa una red de VPC,
compute.subnetworks.useExternalIp
en el proyecto o en la subred elegida. - Para definir los metadatos de la instancia de VM de la VM:
compute.instances.setMetadata
en el proyecto, - Para definir etiquetas en la máquina virtual,
compute.instances.setTags
en la máquina virtual - Para definir etiquetas de la VM,
compute.instances.setLabels
en la VM - Para definir una cuenta de servicio que use la VM, haz lo siguiente en la VM:
compute.instances.setServiceAccount
- Para crear un disco para la VM
compute.disks.create
del proyecto, sigue estos pasos: - Para adjuntar un disco en modo de solo lectura o de lectura y escritura, haz lo siguiente:
compute.disks.use
en el disco - Para adjuntar un disco en modo de solo lectura,
compute.disks.useReadOnly
en el disco.
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Información general
Te recomendamos que configures las cuentas de servicio de tus máquinas virtuales de la siguiente manera:
- Crea una cuenta de servicio gestionada por el usuario en lugar de usar la cuenta de servicio predeterminada de Compute Engine y asigna roles de IAM a esa cuenta de servicio solo para los recursos y las operaciones que necesite.
- Asocia la cuenta de servicio a tu VM.
- Define el alcance de la plataforma en la nube (
https://www.googleapis.com/auth/cloud-platform
) en tu VM. De esta forma, la cuenta de servicio de la VM puede llamar a las APIs para las que tiene permiso. Google Cloud- Si especificas la cuenta de servicio mediante la Google Cloud consola, define el permiso de acceso de la cuenta de servicio como Permitir el acceso completo a todas las APIs de Cloud.
- Si especificas la cuenta de servicio mediante la CLI de Google Cloud o la API de Compute Engine, puedes usar el parámetro
scopes
para definir el ámbito de acceso.
Configurar una cuenta de servicio
Crea una cuenta de servicio y asigna los roles de gestión de identidades y accesos necesarios. Asigna los roles de gestión de identidades y accesos que necesites. Puedes modificar los roles de gestión de identidades y accesos de tu cuenta de servicio según sea necesario.
Google te recomienda que limites los privilegios de las cuentas de servicio y que revises periódicamente los permisos de tus cuentas de servicio para asegurarte de que estén actualizados.
Utiliza uno de los siguientes métodos para configurar la cuenta de servicio.
Consola
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the required roles to the service account.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
In the Service account users role field, enter the identifier for the principal that will attach the service account to other resources, such as Compute Engine instances.
This is typically the email address for a Google Account.
-
Click Done to finish creating the service account.
roles/iam.serviceAccountCreator
). Learn how to grant roles.gcloud
-
Ensure that you have the Create Service Accounts IAM role
(
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the required roles to the service account.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
In the Service account users role field, enter the identifier for the principal that will attach the service account to other resources, such as Compute Engine instances.
This is typically the email address for a Google Account.
-
Click Done to finish creating the service account.
roles/iam.serviceAccountCreator
). Learn how to grant roles.Terraform
Para crear una cuenta de servicio, puedes usar el recurso
google_service_account
.Recuerde sustituir los valores de marcador de posición de los atributos
account_id
ydisplay_name
.Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Crear una VM y adjuntar la cuenta de servicio
Después de crear la cuenta de servicio, crea una VM y adjunta la cuenta de servicio que has creado en la sección anterior. También debes definir el alcance de acceso de la VM en
cloud-platform
.Si ya tienes una máquina virtual y quieres configurarla para que use otra cuenta de servicio, consulta el artículo Cambiar la cuenta de servicio vinculada.
Usa uno de los siguientes métodos para crear una VM y adjuntar la cuenta de servicio.
Consola
En la Google Cloud consola, ve a la página Crear una instancia.
Para adjuntar una cuenta de servicio, sigue estos pasos:
- En el menú de navegación, haz clic en Seguridad.
- En la lista Cuenta de servicio, selecciona la cuenta de servicio que has creado.
- En Permisos de acceso, selecciona Permitir el acceso completo a todas las APIs de Cloud.
Opcional: Especifica otras opciones de configuración. Para obtener más información, consulta Opciones de configuración durante la creación de instancias.
Para crear e iniciar la instancia, haz clic en Crear.
gcloud
Para crear una instancia de VM y configurarla para que use una cuenta de servicio personalizada con la CLI de Google Cloud, usa el comando
gcloud compute instances create
y proporciona la dirección de correo de la cuenta de servicio y el ámbito de accesocloud-platform
a la instancia de VM.gcloud compute instances create VM_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=https://www.googleapis.com/auth/cloud-platform
Haz los cambios siguientes:
SERVICE_ACCOUNT_EMAIL
: la dirección de correo de la cuenta de servicio que has creado. Por ejemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para ver la dirección de correo, consulta el artículo Listar cuentas de servicio.VM_NAME
: el nombre de la instancia de VM.
Por ejemplo:
gcloud compute instances create example-vm \ --service-account 123-my-sa@my-project-123.iam.gserviceaccount.com \ --scopes=https://www.googleapis.com/auth/cloud-platform
También puedes especificar el ámbito mediante el alias
--scopes=cloud-platform
. gcloud CLI solo reconoce estos alias. La API y otras bibliotecas no reconocen estos alias, por lo que debe especificar el URI de ámbito completo.Terraform
Para configurar una nueva VM para que use una cuenta de servicio, puedes usar el recurso
google_compute_instance
.REST
Usa el
instances.insert
método para crear la VM y especifica el correo electrónico de la cuenta de servicio y el ámbito de acceso de la instancia de VM.POST https://compute.googleapis.com/compute/v1/projects/
PROJECT_ID
/zones/ZONE
/instances { "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name":"VM_NAME
", "disks":[ { "initializeParams":{ "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot":true } ], "networkInterfaces":[ { "network":"global/networks/NETWORK_NAME" } ], "serviceAccounts": [ { "email": "SERVICE_ACCOUNT_EMAIL", "scopes": ["https://www.googleapis.com/auth/cloud-platform"] } ], "shieldedInstanceConfig":{ "enableSecureBoot":"ENABLE_SECURE_BOOT" } }Haz los cambios siguientes:
PROJECT_ID
: ID del proyecto en el que se creará la VM.ZONE
: zona en la que se creará la VMMACHINE_TYPE_ZONE
: zona que contiene el tipo de máquina que se va a usar en la nueva VM.MACHINE_TYPE
: tipo de máquina, predefinido o personalizado, para la nueva VMVM_NAME
: nombre de la nueva VMIMAGE_PROJECT
: proyecto que contiene la imagen
Por ejemplo, si especificasdebian-10
como familia de imágenes, especificadebian-cloud
como proyecto de imagen.IMAGE
: especifica una de las siguientes opciones:IMAGE
: una versión específica de una imagen públicaPor ejemplo:
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
IMAGE_FAMILY
: una familia de imágenesDe esta forma, se crea la VM a partir de la imagen del SO más reciente que no esté obsoleta. Por ejemplo, si especificas
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
, Compute Engine crea una VM a partir de la versión más reciente de la imagen del SO de la familia de imágenesDebian 10
.
NETWORK_NAME
: la red de VPC que quieres usar en la VM. Puedes especificardefault
para usar tu red predeterminada.SERVICE_ACCOUNT_EMAIL
: la dirección de correo de la cuenta de servicio que has creado. Por ejemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para ver la dirección de correo, consulta el artículo Obtener el correo de una cuenta de servicio.ENABLE_SECURE_BOOT
: Opcional: Si has elegido una imagen que admite las funciones de VM blindada, Compute Engine habilita de forma predeterminada el módulo de plataforma segura virtual (vTPM) y la monitorización de la integridad. En Compute Engine, Arranque seguro no está habilitado de forma predeterminada.Si especificas
true
enenableSecureBoot
, Compute Engine crea una VM con las tres funciones de VM blindada habilitadas. Una vez que Compute Engine inicie tu VM, para modificar las opciones de VM blindada, debes detenerla.
Acceder y usar otros servicios de Google Cloud
Una vez que la VM esté configurada para usar la cuenta de servicio, las aplicaciones podrán usarla para autenticarse. El método más habitual es autenticarte mediante credenciales de aplicación predeterminadas y una biblioteca de cliente. Algunas Google Cloud herramientas, como la CLI de gcloud, pueden usar automáticamente la cuenta de servicio para acceder a las APIs Google Cloud desde una VM. Para obtener más información, consulta el artículo Autenticar cargas de trabajo con cuentas de servicio.
Si se elimina una cuenta de servicio, las aplicaciones ya no tendrán acceso a los recursos deGoogle Cloud a través de esa cuenta de servicio. Si eliminas las cuentas de servicio predeterminadas de App Engine y Compute Engine, tus VMs ya no tendrán acceso a los recursos del proyecto. Si no sabes con certeza si se está usando una cuenta de servicio, Google recomienda inhabilitarla antes de eliminarla. Las cuentas de servicio inhabilitadas se pueden volver a habilitar si siguen siendo necesarias.
Ejemplo: Acceder a recursos de Cloud Storage desde una VM
Una vez que hayas configurado tu máquina virtual para que use una cuenta de servicio que tenga el rol
storage.admin
, puedes usar herramientas como la CLI de gcloud para gestionar los archivos que hayas almacenado en Cloud Storage. Para acceder a tus recursos de Cloud Storage, haz lo siguiente:Asegúrate de que la cuenta de servicio vinculada a tu VM tenga el rol
roles/storage.admin
.Si tu máquina virtual usa una imagen de SO personalizada, instala gcloud CLI. De forma predeterminada, gcloud CLI se instala en la mayoría de las imágenes de SO públicas que proporciona Google Cloud.
Conéctate a la VM.
Desde la VM, usa Google Cloud CLI para gestionar tus recursos de Cloud Storage.
Siguientes pasos
- Consulta cómo autenticar cargas de trabajo con cuentas de servicio.
- Consulta cómo cambiar la cuenta de servicio vinculada a una máquina virtual.
- Consulta cómo listar y editar cuentas de servicio.
- Consulta las prácticas recomendadas para trabajar con cuentas de servicio y mitiga los riesgos de seguridad.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-12 (UTC).
-