github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/config/adapt.go (about) 1 package config 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/config" 5 "github.com/khulnasoft-lab/defsec/pkg/terraform" 6 defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types" 7 ) 8 9 func Adapt(modules terraform.Modules) config.Config { 10 return config.Config{ 11 ConfigurationAggregrator: adaptConfigurationAggregrator(modules), 12 } 13 } 14 15 func adaptConfigurationAggregrator(modules terraform.Modules) config.ConfigurationAggregrator { 16 configurationAggregrator := config.ConfigurationAggregrator{ 17 Metadata: defsecTypes.NewUnmanagedMetadata(), 18 SourceAllRegions: defsecTypes.BoolDefault(false, defsecTypes.NewUnmanagedMetadata()), 19 } 20 21 for _, resource := range modules.GetResourcesByType("aws_config_configuration_aggregator") { 22 configurationAggregrator.Metadata = resource.GetMetadata() 23 aggregationBlock := resource.GetFirstMatchingBlock("account_aggregation_source", "organization_aggregation_source") 24 if aggregationBlock.IsNil() { 25 configurationAggregrator.SourceAllRegions = defsecTypes.Bool(false, resource.GetMetadata()) 26 } else { 27 allRegionsAttr := aggregationBlock.GetAttribute("all_regions") 28 allRegionsVal := allRegionsAttr.AsBoolValueOrDefault(false, aggregationBlock) 29 configurationAggregrator.SourceAllRegions = allRegionsVal 30 } 31 } 32 return configurationAggregrator 33 }