reports/sample/vm.rego (28 lines of code) (raw):
package reports.vm
import data.validator.gcp.lib as lib
import data.assets as assets
disk_source_report[{
"project_id": project_id,
"disk": disk_name,
"source_image": source_image,
"source_snapshot": source_snapshot
}] {
p := assets[_]
count({p.asset_type} & {"compute.googleapis.com/Project","google.compute.Project"}) == 1
project_id := p.resource.data.name
d := assets[_]
count({d.asset_type} & {"compute.googleapis.com/Disk","google.compute.Disk"}) == 1
d.resource.parent == p.resource.parent
disk_name := d.resource.data.name
source_image := lib.get_default(d.resource.data, "sourceImage", "")
source_snapshot := lib.get_default(d.resource.data, "sourceSnapshot", "")
}
service_account_report[{
"name": name,
"sa_email": sa_email
}] {
vm := assets[_]
count({vm.asset_type} & {"compute.googleapis.com/Instance","google.compute.Instance"}) == 1
name := vm.name
sa_email := vm.resource.data.serviceAccount[_].email
}