github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/google/bigquery/adapt.go (about) 1 package bigquery 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/google/bigquery" 5 "github.com/khulnasoft-lab/defsec/pkg/terraform" 6 ) 7 8 func Adapt(modules terraform.Modules) bigquery.BigQuery { 9 return bigquery.BigQuery{ 10 Datasets: adaptDatasets(modules), 11 } 12 } 13 14 func adaptDatasets(modules terraform.Modules) []bigquery.Dataset { 15 var datasets []bigquery.Dataset 16 for _, module := range modules { 17 for _, resource := range module.GetResourcesByType("google_bigquery_dataset") { 18 datasets = append(datasets, adaptDataset(resource)) 19 } 20 } 21 return datasets 22 } 23 24 func adaptDataset(resource *terraform.Block) bigquery.Dataset { 25 IDAttr := resource.GetAttribute("dataset_id") 26 IDVal := IDAttr.AsStringValueOrDefault("", resource) 27 28 var accessGrants []bigquery.AccessGrant 29 30 accessBlocks := resource.GetBlocks("access") 31 for _, accessBlock := range accessBlocks { 32 roleAttr := accessBlock.GetAttribute("role") 33 roleVal := roleAttr.AsStringValueOrDefault("", accessBlock) 34 35 domainAttr := accessBlock.GetAttribute("domain") 36 domainVal := domainAttr.AsStringValueOrDefault("", accessBlock) 37 38 specialGrAttr := accessBlock.GetAttribute("special_group") 39 specialGrVal := specialGrAttr.AsStringValueOrDefault("", accessBlock) 40 41 accessGrants = append(accessGrants, bigquery.AccessGrant{ 42 Metadata: accessBlock.GetMetadata(), 43 Role: roleVal, 44 Domain: domainVal, 45 SpecialGroup: specialGrVal, 46 }) 47 } 48 49 return bigquery.Dataset{ 50 Metadata: resource.GetMetadata(), 51 ID: IDVal, 52 AccessGrants: accessGrants, 53 } 54 }