For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/security/code_security/iac_security/iac_rules/ansible-gcp-using-default-service-account.md.
A documentation index is available at /llms.txt.
Compute instances must not use the default Google Compute Engine service account. That account often has broad Cloud API privileges, which can lead to unintended privilege escalation or overly permissive access. For Ansible tasks using the google.cloud.gcp_compute_instance or gcp_compute_instance module with auth_kind: serviceaccount, the service_account_email property must be defined, must be a non-empty string containing an @, and must not reference a default Compute Engine service account (values containing @developer.gserviceaccount.com). Resources missing service_account_email, with an empty value, lacking an @ character, or using a default developer service account are flagged.
Secure example:
- name:Create instance with explicit service accountgoogle.cloud.gcp_compute_instance:name:my-instanceauth_kind:serviceaccountservice_account_email:my-sa@my-project.iam.gserviceaccount.com
Compliant Code Examples
#this code is a correct code for which the query should not find any result- name:create a instancegoogle.cloud.gcp_compute_instance:name:test_objectmachine_type:n1-standard-1disks:- auto_delete:'true'boot:'true'source:'{{ disk }}'- auto_delete:'true'interface:NVMEtype:SCRATCHinitialize_params:disk_type:local-ssdmetadata:startup-script-url:gs:://graphite-playground/bootstrap.shcost-center:'12345'labels:environment:productionnetwork_interfaces:- network:'{{ network }}'access_configs:- name:External NATnat_ip:'{{ address }}'type:ONE_TO_ONE_NATzone:us-central1-aproject:test_projectauth_kind:serviceaccountservice_account_email:admin@admin.comstate:present
Non-Compliant Code Examples
#this is a problematic code where the query should report a result(s)- name:create a instance1google.cloud.gcp_compute_instance:name:test_object1machine_type:n1-standard-1disks:- auto_delete:'true'boot:'true'source:"{{ disk }}"- auto_delete:'true'interface:NVMEtype:SCRATCHinitialize_params:disk_type:local-ssdmetadata:startup-script-url:gs:://graphite-playground/bootstrap.shcost-center:'12345'labels:environment:productionnetwork_interfaces:- network:"{{ network }}"access_configs:- name:External NATnat_ip:"{{ address }}"type:ONE_TO_ONE_NATzone:us-central1-aproject:test_projectauth_kind:serviceaccountstate:present- name:create a instance2google.cloud.gcp_compute_instance:name:test_object2machine_type:n1-standard-1disks:- auto_delete:'true'boot:'true'source:"{{ disk }}"- auto_delete:'true'interface:NVMEtype:SCRATCHinitialize_params:disk_type:local-ssdmetadata:startup-script-url:gs:://graphite-playground/bootstrap.shcost-center:'12345'labels:environment:productionnetwork_interfaces:- network:"{{ network }}"access_configs:- name:External NATnat_ip:"{{ address }}"type:ONE_TO_ONE_NATzone:us-central1-aproject:test_projectauth_kind:serviceaccountservice_account_email:""state:present- name:create a instance3google.cloud.gcp_compute_instance:name:test_object3machine_type:n1-standard-1disks:- auto_delete:'true'boot:'true'source:"{{ disk }}"- auto_delete:'true'interface:NVMEtype:SCRATCHinitialize_params:disk_type:local-ssdmetadata:startup-script-url:gs:://graphite-playground/bootstrap.shcost-center:'12345'labels:environment:productionnetwork_interfaces:- network:"{{ network }}"access_configs:- name:External NATnat_ip:"{{ address }}"type:ONE_TO_ONE_NATzone:us-central1-aproject:test_projectauth_kind:serviceaccountservice_account_email:"admin"state:present- name:create a instance4google.cloud.gcp_compute_instance:name:test_object4machine_type:n1-standard-1disks:- auto_delete:'true'boot:'true'source:"{{ disk }}"- auto_delete:'true'interface:NVMEtype:SCRATCHinitialize_params:disk_type:local-ssdmetadata:startup-script-url:gs:://graphite-playground/bootstrap.shcost-center:'12345'labels:environment:productionnetwork_interfaces:- network:"{{ network }}"access_configs:- name:External NATnat_ip:"{{ address }}"type:ONE_TO_ONE_NATzone:us-central1-aproject:test_projectauth_kind:serviceaccountservice_account_email:"admin@developer.gserviceaccount.com"state:present
1
2
rulesets:- Ansible / GCP # Rules to enforce / GCP.
Request a personalized demo
Get Started with Datadog
Ask AI
AI-generated responses may be inaccurate. Verify important info.