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  }