VM Instance With Full Cloud Access
ID |
gcp_vm_with_full_cloud_access |
Severity |
high |
Vendor |
GCP |
Resource |
AIM |
Tags |
reachable |
Description
A gcp_compute_instance module is an Ansible module that creates a GCP instance, which is a Virtual Machine that runs on Google’s infrastructure.
service_accounts parameter is an option for the gcp_compute_instance module that specifies which service account to use for authentication and authorization.
Using a cloud-platform scope with a service_account parameter can be a security issue as it gives too much power to the service account, which can be exploited by attackers or compromised by errors.
To fix it, you must avoid to configure the service_account.scope property with cloud-platform value.
Learn more about this topic at Service accounts - Access scopes.
Examples
---
- name: create a instance
google.cloud.gcp_compute_instance:
name: test_object
machine_type: n1-standard-1
disks:
- auto_delete: 'true'
boot: 'true'
source: "disk"
network_interfaces:
- network: "network"
access_configs:
- name: External NAT
nat_ip: "address"
type: ONE_TO_ONE_NAT
zone: us-central1-a
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
service_accounts:
- email: test@test_project.iam.gserviceaccount.com
scopes:
- cloud-platform
register: result
Mitigation / Fix
---
- name: create a instance
google.cloud.gcp_compute_instance:
name: test_object
machine_type: n1-standard-1
disks:
- auto_delete: 'true'
boot: 'true'
source: "disk"
network_interfaces:
- network: "network"
access_configs:
- name: External NAT
nat_ip: "address"
type: ONE_TO_ONE_NAT
zone: us-central1-a
project: test_project
auth_kind: serviceaccount
service_account_file: "/tmp/auth.pem"
state: present
service_accounts:
- email: test@test_project.iam.gserviceaccount.com
scopes:
- https://www.googleapis.com/auth/devstorage.read_only
register: result