Skip to content

Instantly share code, notes, and snippets.

@rssnyder
Last active March 8, 2024 16:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rssnyder/14b250ec67f434004021ad5d354b5517 to your computer and use it in GitHub Desktop.
Save rssnyder/14b250ec67f434004021ad5d354b5517 to your computer and use it in GitHub Desktop.
apply harness sa permissions to a gcp project
variable "harness_gcp_sa" {
type = string
}
data "google_project" "project" {}
# for view access
resource "google_project_iam_member" "viewer" {
project = data.google_project.project.project_id
role = "roles/viewer"
member = "serviceAccount:${var.harness_gcp_sa}"
}
# for wide access
resource "google_project_iam_member" "editor" {
project = data.google_project.project.project_id
role = "roles/editor"
member = "serviceAccount:${var.harness_gcp_sa}"
}
# for fine grain autostopping permissions
resource "google_project_iam_custom_role" "harness_autostopping" {
role_id = "harness_autostopping"
title = "harness_autostopping"
permissions = [
"compute.addresses.create",
"compute.addresses.createInternal",
"compute.addresses.delete",
"compute.addresses.deleteInternal",
"compute.addresses.get",
"compute.addresses.list",
"compute.addresses.setLabels",
"compute.addresses.use",
"compute.addresses.useInternal",
"compute.autoscalers.create",
"compute.autoscalers.delete",
"compute.autoscalers.get",
"compute.autoscalers.list",
"compute.autoscalers.update",
"compute.instanceGroupManagers.create",
"compute.instanceGroupManagers.delete",
"compute.instanceGroupManagers.get",
"compute.instanceGroupManagers.list",
"compute.instanceGroupManagers.update",
"compute.instanceGroupManagers.use",
"compute.instanceGroups.create",
"compute.instanceGroups.delete",
"compute.instanceGroups.get",
"compute.instanceGroups.list",
"compute.instanceGroups.update",
"compute.instanceGroups.use",
"compute.instances.addAccessConfig",
"compute.instances.attachDisk",
"compute.instances.create",
"compute.instances.createTagBinding",
"compute.instances.delete",
"compute.instances.deleteAccessConfig",
"compute.instances.deleteTagBinding",
"compute.instances.detachDisk",
"compute.instances.get",
"compute.instances.getEffectiveFirewalls",
"compute.instances.getIamPolicy",
"compute.instances.getSerialPortOutput",
"compute.instances.list",
"compute.instances.listEffectiveTags",
"compute.instances.listTagBindings",
"compute.instances.osAdminLogin",
"compute.instances.osLogin",
"compute.instances.removeResourcePolicies",
"compute.instances.reset",
"compute.instances.resume",
"compute.instances.sendDiagnosticInterrupt",
"compute.instances.setDeletionProtection",
"compute.instances.setDiskAutoDelete",
"compute.instances.setIamPolicy",
"compute.instances.setLabels",
"compute.instances.setMachineResources",
"compute.instances.setMachineType",
"compute.instances.setMetadata",
"compute.instances.setMinCpuPlatform",
"compute.instances.setScheduling",
"compute.instances.setServiceAccount",
"compute.instances.setShieldedInstanceIntegrityPolicy",
"compute.instances.setShieldedVmIntegrityPolicy",
"compute.instances.setTags",
"compute.instances.start",
"compute.instances.stop",
"compute.instances.suspend",
"compute.instances.update",
"compute.instances.updateAccessConfig",
"compute.instances.updateDisplayDevice",
"compute.instances.updateNetworkInterface",
"compute.instances.updateSecurity",
"compute.instances.updateShieldedInstanceConfig",
"compute.instances.updateShieldedVmConfig",
"compute.instances.use",
"compute.instances.useReadOnly",
"compute.machineTypes.list",
"compute.networks.access",
"compute.networks.get",
"compute.networks.getEffectiveFirewalls",
"compute.networks.getRegionEffectiveFirewalls",
"compute.networks.list",
"compute.networks.mirror",
"compute.regions.get",
"compute.regions.list",
"compute.firewalls.list",
"compute.subnetworks.list",
"compute.disks.create",
"compute.subnetworks.use",
"compute.subnetworks.useExternalIp",
"secretmanager.versions.access",
"compute.projects.get",
]
}
resource "google_project_iam_member" "autostopping" {
project = data.google_project.project.project_id
role = google_project_iam_custom_role.harness_autostopping.id
member = "serviceAccount:${var.harness_gcp_sa}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment