En este documento, se 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, por lo general, es usada por una carga de trabajo de aplicación o procesamiento para realizar llamadas autorizadas a la API.
Las cuentas de servicio son necesarias para situaciones en las que una carga de trabajo, como una aplicación personalizada, necesita acceder a los recursos de Google Cloud o realizar acciones sin la participación del usuario final. Si deseas obtener más información sobre cuándo usar las cuentas de servicio, consulta Prácticas recomendadas para usar cuentas de servicio.
Si tienes aplicaciones que necesitan realizar llamadas a las APIs de Google Cloud, Google recomienda que conectes una cuenta de servicio administrada por el usuario a la VM en la que se ejecuta la aplicación o la carga de trabajo. Luego, otorgas los roles de IAM de la cuenta de servicio, que otorga a la cuenta de servicio (y, por extensión, a las aplicaciones que se ejecutan en la VM) acceso a los recursos de Google Cloud.
Antes de comenzar
-
Configura la autenticación si aún no lo hiciste.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
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.
-
Administrador de instancias de Compute (v1) (
roles/compute.instanceAdmin.v1
) -
Crea cuentas de servicio (
roles/iam.serviceAccountCreator
) -
Para crear cuentas de servicio, haz lo siguiente: Todos los permisos del rol
serviceAccountCreator
-
Para crear VMs, sigue estos pasos:
compute.instances.create
en el proyecto- Para usar una imagen personalizada con el fin de crear la VM, sigue estos pasos:
compute.images.useReadOnly
en la imagen - Si deseas usar una instantánea para crear la VM, sigue estos pasos:
compute.snapshots.useReadOnly
en la instantánea - Para usar una plantilla de instancias a fin de crear la VM, haz lo siguiente:
compute.instanceTemplates.useReadOnly
en la plantilla de instancias - Para asignar una red heredada a la VM:
compute.networks.use
en el proyecto - Si deseas 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 y punto heredado;
compute.networks.useExternalIp
en el proyecto - A fin de 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 - A fin de configurar los metadatos de la instancia de VM para la VM y los puntos, sigue estos pasos:
compute.instances.setMetadata
en el proyecto - A fin de configurar etiquetas para la VM y los puntos;
compute.instances.setTags
en la VM - Si deseas configurar etiquetas para la VM, haz lo siguiente:
compute.instances.setLabels
en la VM - A fin de configurar una cuenta de servicio para que la VM la use
compute.instances.setServiceAccount
en la VM - Si deseas crear un disco nuevo para la VM:
compute.disks.create
en el proyecto - Para conectar un disco existente en modo de solo lectura o de lectura y escritura, haz lo siguiente:
compute.disks.use
en el disco - Para conectar un disco existente en modo de solo lectura y dos puntos, sigue estos pasos:
compute.disks.useReadOnly
en el disco
- Crea una cuenta de servicio nueva administrada por el usuario en lugar de usar la cuenta de servicio predeterminada de Compute Engine y otórgale roles de IAM solo a los recursos y las operaciones que necesita.
- Conecta la cuenta de servicio a tu VM.
- Configura el permiso de la plataforma en la nube (
https://www.googleapis.com/auth/cloud-platform
) en tu VM. Esto permite que la cuenta de servicio de la VM llame a las APIs de Google Cloud que tiene permiso para usar.- Si especificas la cuenta de servicio con la consola de Google Cloud, el permiso de acceso de la VM se establece automáticamente en el permiso
cloud-platform
. - Si especificas la cuenta de servicio con Google Cloud CLI o la API de Compute Engine, puedes usar el parámetro
scopes
para configurar el permiso de acceso.
- Si especificas la cuenta de servicio con la consola de Google Cloud, el permiso de acceso de la VM se establece automáticamente en el permiso
- 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, ve a la página Instancias de VM.
- Selecciona el proyecto y haz clic en Continuar.
- Haz clic en Crear instancia.
- Especifica un Nombre para la VM.
- Ve a la sección Identidad y acceso a la API.
- En el cuadro Cuenta de servicio, selecciona la cuenta de servicio que creaste. Cuando conectas una cuenta de servicio a una VM, el permiso de acceso de Google Cloud
cloud-platform
se establece automáticamente en la VM. - Realiza personalizaciones de VM adicionales, según sea necesario.
- Para crear y, también, iniciar la VM, haz clic en Crear.
SERVICE_ACCOUNT_EMAIL
: la dirección de correo electrónico de la cuenta de servicio que creaste. Por ejemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
Para ver la dirección de correo electrónico, consulta Enumera cuentas de servicio.VM_NAME
: El nombre de la instancia de VMPROJECT_ID
: ID del proyecto en el que se creará la VMZONE
: Zona en la que se creará la VMMACHINE_TYPE_ZONE
: Zona que contiene el tipo de máquina que se usará para la VM nuevaMACHINE_TYPE
: El tipo de máquina, predefinido o personalizado de la VM nuevaVM_NAME
: Nombre de la VM nuevaIMAGE_PROJECT
: El proyecto que contiene la imagen
Por ejemplo, si especificasdebian-10
como familia de imágenes, especificadebian-cloud
como proyecto de imagen.IMAGE or IMAGE_FAMILY
: Especifica una de las siguientes opciones: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ágenes
Esto crea la VM a partir de la imagen de SO no obsoleta más reciente. Por ejemplo, si especificas"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
, Compute Engine crea una VM a partir de la última versión de la imagen de SO en la familia de imágenesDebian 10
.
NETWORK_NAME
: La red de VPC que deseas usar para la VM. Puedes especificardefault
para usar tu red predeterminadaSERVICE_ACCOUNT_EMAIL
: la dirección de correo electrónico de la cuenta de servicio que creaste. Por ejemplo:my-sa-123@my-project-123.iam.gserviceaccount.com
. Para ver la dirección de correo electrónico, consulta obtén un correo electrónico de cuenta de servicio.ENABLE_SECURE_BOOT
: Opcional: Si eliges una imagen que admite funciones de VM protegida, Compute Engine habilita de forma predeterminada el módulo virtual de plataforma de confianza (vTPM) y la supervisión de la integridad. Compute Engine no habilita el Inicio 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 la VM, debes detenerla para modificar las opciones de VM protegida.Asegúrate de que la cuenta de servicio conectada a tu VM tenga el rol
roles/storage.admin
.Si tu VM usa una imagen de SO personalizada, instala gcloud CLI. De forma predeterminada, gcloud CLI se instala en la mayoría de las imágenes públicas del SO que proporciona Google Cloud.
Conéctate a la VM.
Desde la VM, usa Google Cloud CLI para administrar tus recursos de Cloud Storage.
- Obtén información para autenticar cargas de trabajo con cuentas de servicio.
- Obtén más información para cambiar la cuenta de servicio conectada a una VM.
- Obtén información sobre cómo enumerar y editar cuentas de servicio.
- Revisa las prácticas recomendadas para trabajar con cuentas de servicio y mitiga 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.
Roles obligatorios
Para obtener los permisos que necesitas para crear VMs que usen cuentas de servicio, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:
Para obtener más información sobre cómo otorgar roles, consulta Administra 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 son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Los siguientes permisos son necesarios para crear VMs que usen cuentas de servicio:
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Descripción general
Se recomienda que configures las cuentas de servicio para las VMs de la siguiente manera:
Configurar una cuenta de servicio
Crea una cuenta de servicio y asígnale los roles de IAM necesarios. Asigna tantos roles de IAM como sea necesario. Puedes modificar los roles de IAM en tu cuenta de servicio según sea necesario.
Google recomienda que limites los privilegios de las cuentas de servicio y verifiques con regularidad los permisos de tu cuenta de servicio para asegurarte de que estén actualizados.
Usa uno de los siguientes métodos para configurar la cuenta de servicio.
Console
In the Google Cloud console, go to the Create service account page.
Go to Create service accountgcloud
Set up authentication:
Terraform
Para crear una cuenta de servicio, puedes usar el recurso
google_service_account
.Recuerda reemplazar los valores de marcador de posición por los atributos
account_id
ydisplay_name
.Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Crea una VM y adjunta la cuenta de servicio
Después de crear la cuenta de servicio, crea una VM y conecta la cuenta de servicio que creaste en la sección anterior. Además, configura el permiso de acceso de la VM en
cloud-platform
.Si ya tienes una VM existente y deseas configurarla para que use una cuenta de servicio diferente, consulta Cambia la cuenta de servicio conectada.
Usa uno de los siguientes métodos para crear una VM y conectar la cuenta de servicio.
Console
gcloud
Para crear una instancia de VM nueva y configurarla para que use una cuenta de servicio personalizada con Google Cloud CLI, usa el comando
gcloud compute instances create
y proporciona el correo electrónico de la cuenta de servicio y el permiso 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
Reemplaza 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 puedes especificar el alcance con el alias:
--scopes=cloud-platform
. Solo la CLI de gcloud reconoce estos alias. La API y otras bibliotecas no reconocen estos alias, por lo que debes especificar el URI de permiso completo.Terraform
Para configurar una VM nueva para usar una cuenta de servicio, puedes usar el recurso
google_compute_instance
.REST
Usa el método
instances.insert
para crear la VM y especifica el correo electrónico de la cuenta de servicio y el permiso 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" } }Reemplaza lo siguiente:
Accede a otros servicios de Google Cloud y úsalos
Después de que tu 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 con las credenciales predeterminadas de la aplicación y una biblioteca cliente. Algunas herramientas de Google Cloud, como gcloud CLI, pueden usar automáticamente la cuenta de servicio para acceder a las APIs de Google Cloud desde una VM. Para obtener más información, consulta Autentica cargas de trabajo con cuentas de servicio.
Si se borra una cuenta de servicio, las aplicaciones ya no tendrán acceso a los recursos de Google Cloud a través de esa cuenta. Si borras las cuentas de servicio predeterminadas de App Engine y Compute Engine, las instancias ya no tendrán acceso a los recursos del proyecto. Si no tienes en claro si se está usando una cuenta de servicio, te recomendamos que inhabilites la cuenta de servicio antes de borrarla. Las cuentas de servicio inhabilitadas se pueden volver a habilitar si aún son necesarias.
Ejemplo: Accede a los recursos de Cloud Storage desde tu VM
Después de configurar tu VM para usar una cuenta de servicio que tenga el rol
storage.admin
, puedes usar herramientas como gcloud CLI para administrar los archivos que almacenaste en Cloud Storage Para acceder a tus recursos de Cloud Storage, completa lo siguiente:Próximos pasos
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-11-22 (UTC)
-