Este documento explica cómo crear una instancia de máquina virtual (VM) que esté configurada para usar una cuenta de servicio administrada por el usuario. Una cuenta de servicio es un tipo especial de cuenta que normalmente utiliza una aplicación o carga de trabajo informática para realizar llamadas API autorizadas.
Las cuentas de servicio son necesarias para escenarios en los que una carga de trabajo, como una aplicación personalizada, necesita acceder Google Cloud recursos o realizar acciones sin la participación del usuario final. Para obtener más información sobre cuándo usar cuentas de servicio, consulte Mejores prácticas para usar cuentas de servicio .
Si tienes aplicaciones que necesitan hacer llamadas a Google Cloud API, Google recomienda adjuntar una cuenta de servicio administrada por el usuario a la máquina virtual en la que se ejecuta la aplicación o carga de trabajo. Luego, otorga a la cuenta de servicio funciones de IAM, lo que le otorga a la cuenta de servicio (y, por extensión, a las aplicaciones que se ejecutan en la máquina virtual) acceso aGoogle Cloud recursos.
Antes de comenzar
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.
- Administrador de instancias informáticas (v1) (
roles/compute.instanceAdmin.v1
) - Crear cuentas de servicio (
roles/iam.serviceAccountCreator
) - Administrador de IAM del proyecto (
roles/resourcemanager.projectIamAdmin
) - Para crear cuentas de servicio: todos los permisos en el rol
iam.serviceAccountCreator
- Para otorgar permisos a la cuenta de servicio: todos los permisos en el rol
resourcemanager.projectIamAdmin
- Para crear máquinas virtuales:
-
compute.instances.create
en el proyecto. - Para usar una imagen personalizada para crear la VM:
compute.images.useReadOnly
en la imagen - Para usar una instantánea para crear la VM:
compute.snapshots.useReadOnly
en la instantánea - Para usar una plantilla de instancia para crear la VM:
compute.instanceTemplates.useReadOnly
en la plantilla de instancia - Para asignar una red heredada a la VM:
compute.networks.use
en el proyecto - Para especificar una dirección IP estática para la VM:
compute.addresses.use
en el proyecto - Para asignar una dirección IP externa a la VM cuando se usa una red heredada:
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 VPC:
compute.subnetworks.useExternalIp
en el proyecto o en la subred elegida - Para configurar metadatos de instancia de VM para la VM:
compute.instances.setMetadata
en el proyecto - Para configurar etiquetas para la VM:
compute.instances.setTags
en la VM - Para configurar etiquetas para la VM:
compute.instances.setLabels
en la VM - Para configurar una cuenta de servicio para que la use la VM:
compute.instances.setServiceAccount
en la VM - Para crear un nuevo disco para la VM:
compute.disks.create
en el proyecto - Para conectar un disco existente en modo de solo lectura o lectura-escritura:
compute.disks.use
en el disco - Para conectar un disco existente en modo de solo lectura:
compute.disks.useReadOnly
en el disco
-
- Cree una nueva cuenta de servicio administrada por el usuario en lugar de utilizar la cuenta de servicio predeterminada de Compute Engine y otorgue funciones de IAM a esa cuenta de servicio solo para los recursos y operaciones que necesita.
- Adjunte la cuenta de servicio a su VM.
- Configure el alcance de la plataforma en la nube (
https://www.googleapis.com/auth/cloud-platform
) en su máquina virtual. Esto permite que la cuenta de servicio de la VM llame al Google Cloud API para las que tiene permiso de uso.- Si especifica la cuenta de servicio mediante la consola de Google Cloud, el alcance de acceso de la VM se establece automáticamente de forma predeterminada en el alcance
cloud-platform
. - Si especifica la cuenta de servicio mediante la CLI de Google Cloud o la API de Compute Engine, puede usar el parámetro
scopes
para establecer el alcance de acceso.
- Si especifica la cuenta de servicio mediante la consola de Google Cloud, el alcance de acceso de la VM se establece automáticamente de forma predeterminada en el alcance
- 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.
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
To provide access to your project and your resources, grant a role to the service account:
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
- To grant another role to the service account, run the command as you did in the previous step.
-
Grant the required role to the principal that will attach the service account to other resources.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountUSER_EMAIL
: the email address for a Google Account
En la consola de Google Cloud, vaya a la página Crear una instancia .
Para adjuntar una cuenta de servicio, haga lo siguiente:
- En el menú de navegación, haga clic en Seguridad .
- En la lista de cuentas de servicio , seleccione la cuenta de servicio que creó.
- Para Ámbitos de acceso , seleccione Permitir acceso completo a todas las API de la nube .
Opcional: especifique otras opciones de configuración. Para obtener más información, consulte Opciones de configuración durante la creación de instancias .
Para crear e iniciar la instancia, haga clic en Crear .
-
SERVICE_ACCOUNT_EMAIL
: la dirección de correo electrónico de la cuenta de servicio que creó. Por ejemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para ver la dirección de correo electrónico, consulte Listado de cuentas de servicio . -
VM_NAME
: el nombre de la instancia de VM. -
PROJECT_ID
: ID del proyecto para crear la VM en -
ZONE
: zona para crear la VM en -
MACHINE_TYPE_ZONE
: zona que contiene el tipo de máquina que se utilizará para la nueva VM -
MACHINE_TYPE
: tipo de máquina, predefinida o personalizada , para la nueva VM -
VM_NAME
: nombre de la nueva VM -
IMAGE_PROJECT
: proyecto que contiene la imagen
Por ejemplo, si especificadebian-10
como familia de imágenes, especifiquedebian-cloud
como proyecto de imagen. -
IMAGE
: especifique uno de los siguientes:IMAGE
: una versión específica de una imagen pública.Por ejemplo,
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
IMAGE_FAMILY
: una familia de imágenesEsto crea la máquina virtual a partir de la imagen del sistema operativo más reciente y no obsoleta. Por ejemplo, si especifica
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
, Compute Engine crea una VM a partir de la última versión de la imagen del sistema operativo en la familia de imágenesDebian 10
.
-
NETWORK_NAME
: la red VPC que desea utilizar para la VM. Puede especificardefault
para usar su red predeterminada. -
SERVICE_ACCOUNT_EMAIL
: la dirección de correo electrónico de la cuenta de servicio que creó. Por ejemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para ver la dirección de correo electrónico, consulte obtener un correo electrónico de cuenta de servicio . ENABLE_SECURE_BOOT
: Opcional: si eliges una imagen que admita funciones de VM protegida , Compute Engine, de forma predeterminada, habilita el módulo de plataforma virtual confiable (vTPM) y el monitoreo de integridad . Compute Engine no habilita el arranque seguro de forma predeterminada.Si especificas
true
paraenableSecureBoot
, Compute Engine crea una VM con las tres funciones de VM protegida habilitadas. Después de que Compute Engine inicie su VM, para modificar las opciones de la VM protegida , debe detener la VM.Asegúrese de que la cuenta de servicio adjunta a su máquina virtual tenga la función
roles/storage.admin
.Si tu VM usa una imagen de sistema operativo personalizada, instala la CLI de gcloud . De forma predeterminada, la CLI de gcloud se instala en la mayoría de las imágenes públicas del sistema operativo proporcionadas por Google Cloud.
Conéctese a la máquina virtual.
Desde la VM, use la CLI de Google Cloud para administrar sus recursos de Cloud Storage.
- Aprenda a autenticar cargas de trabajo mediante cuentas de servicio .
- Aprenda cómo cambiar la cuenta de servicio adjunta a una VM .
- Aprenda a enumerar y editar cuentas de servicio .
- Revise las mejores prácticas para trabajar con cuentas de servicio y mitigar los riesgos de seguridad.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Roles requeridos
Para obtener los permisos que necesita para crear máquinas virtuales que utilicen cuentas de servicio, solicite a su administrador que le otorgue las siguientes funciones de IAM en el proyecto:
Para obtener más información sobre cómo otorgar roles, consulte Administrar el acceso a proyectos, carpetas y organizaciones .
Estos roles predefinidos contienen los permisos necesarios para crear máquinas virtuales que utilicen cuentas de servicio. Para ver los permisos exactos que se requieren, expanda la sección Permisos requeridos :
Permisos requeridos
Se requieren los siguientes permisos para crear máquinas virtuales que utilicen cuentas de servicio:
Es posible que también pueda obtener estos permisos con roles personalizados u otros roles predefinidos .
Descripción general
Se recomienda configurar cuentas de servicio para sus máquinas virtuales de la siguiente manera:
Configurar una cuenta de servicio
Cree una cuenta de servicio y asigne los roles de IAM necesarios. Asigne tantas funciones de IAM como sea necesario. Puede modificar las funciones de IAM en su cuenta de servicio según sea necesario.
Google recomienda que limite los privilegios de las cuentas de servicio y verifique periódicamente los permisos de su cuenta de servicio para asegurarse de que estén actualizados.
Utilice uno de los siguientes métodos para configurar la cuenta de servicio.
Consola
In the Google Cloud console, go to the Create service account page.
Go to Create service accountnube de gcloud
Set up authentication:
Terraformar
Para crear una cuenta de servicio, puede utilizar el recurso
google_service_account
.Recuerde reemplazar los valores del marcador de posición para los atributos
account_id
ydisplay_name
.Para aprender cómo aplicar o eliminar una configuración de Terraform, consulte Comandos básicos de Terraform .
Cree una VM y adjunte la cuenta de servicio
Después de crear la cuenta de servicio, cree una máquina virtual y adjunte la cuenta de servicio que creó en la sección anterior. También configure el alcance de acceso de la VM en
cloud-platform
.Si ya tiene una máquina virtual existente y desea configurarla para que use una cuenta de servicio diferente, consulte Cambiar la cuenta de servicio adjunta .
Utilice uno de los siguientes métodos para crear una máquina virtual y adjuntar la cuenta de servicio.
Consola
nube de gcloud
Para crear una nueva instancia de VM y configurarla para usar una cuenta de servicio personalizada mediante la CLI de Google Cloud, use el comando
gcloud compute instances create
y proporcione el correo electrónico de la cuenta de servicio y el alcance de acceso acloud-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
Reemplace lo siguiente:
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 puede especificar el alcance utilizando el alias:
--scopes=cloud-platform
. Estos alias solo los reconoce la CLI de gcloud. La API y otras bibliotecas no reconocen estos alias, por lo que debes especificar el URI de alcance completo.Terraformar
Para configurar una nueva máquina virtual para usar una cuenta de servicio, puede usar el recurso
google_compute_instance
.DESCANSAR
Utilice el método
instances.insert
para crear la VM y especificar el correo electrónico de la cuenta de servicio y el alcance de acceso para 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" } }Reemplace lo siguiente:
Acceder y utilizar otros Google Cloud servicios
Una vez que su VM esté configurada para usar la cuenta de servicio, las aplicaciones pueden usar la cuenta de servicio para autenticarse. El método más común es autenticarse mediante las credenciales predeterminadas de la aplicación y una biblioteca cliente. Alguno Google Cloud herramientas como la CLI de gcloud pueden usar automáticamente la cuenta de servicio para acceder Google Cloud API de una máquina virtual. Para obtener más información, consulte Autenticar cargas de trabajo mediante cuentas de servicio .
Si se elimina una cuenta de servicio, las aplicaciones ya no tendrán acceso aGoogle Cloud recursos a través de esa cuenta de servicio. Si elimina las cuentas de servicio predeterminadas de App Engine y Compute Engine, sus máquinas virtuales ya no tendrán acceso a los recursos del proyecto. Si no está seguro de si se está utilizando una cuenta de servicio, Google recomienda desactivarla antes de eliminarla. Las cuentas de servicio deshabilitadas se pueden volver a habilitar si aún son necesarias.
Ejemplo: acceder a los recursos de Cloud Storage desde su VM
Una vez que hayas configurado tu VM para usar una cuenta de servicio que tenga la función
storage.admin
, puedes usar herramientas como la CLI de gcloud para administrar los archivos que hayas almacenado en Cloud Storage. Para acceder a sus recursos de Cloud Storage, complete lo siguiente:¿Qué sigue?
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-04-17 (UTC).
-