Run a VM as a service account

Assign a service account for a VM, add access scopes, and set up the VM to run as a service account.

Explore further

For detailed documentation that includes this code sample, see the following:

Code sample


To learn how to apply or remove a Terraform configuration, see Basic Terraform commands. For more information, see the Terraform provider reference documentation.

resource "google_compute_instance" "default" {
  name         = "my-test-vm"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"

  // Local SSD disk
  scratch_disk {
    interface = "SCSI"

  network_interface {
    network = "default"

    access_config {
      // Ephemeral public IP

  service_account {
    # Google recommends custom service accounts with `cloud-platform` scope with
    # specific permissions granted via IAM Roles.
    # This approach lets you avoid embedding secret keys or user credentials
    # in your instance, image, or app code
    email  =
    scopes = ["cloud-platform"]

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser.