github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/mq/adapt.go (about) 1 package mq 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/mq" 5 "github.com/khulnasoft-lab/defsec/pkg/terraform" 6 "github.com/khulnasoft-lab/defsec/pkg/types" 7 ) 8 9 func Adapt(modules terraform.Modules) mq.MQ { 10 return mq.MQ{ 11 Brokers: adaptBrokers(modules), 12 } 13 } 14 15 func adaptBrokers(modules terraform.Modules) []mq.Broker { 16 var brokers []mq.Broker 17 for _, module := range modules { 18 for _, resource := range module.GetResourcesByType("aws_mq_broker") { 19 brokers = append(brokers, adaptBroker(resource)) 20 } 21 } 22 return brokers 23 } 24 25 func adaptBroker(resource *terraform.Block) mq.Broker { 26 27 broker := mq.Broker{ 28 Metadata: resource.GetMetadata(), 29 PublicAccess: types.BoolDefault(false, resource.GetMetadata()), 30 Logging: mq.Logging{ 31 Metadata: resource.GetMetadata(), 32 General: types.BoolDefault(false, resource.GetMetadata()), 33 Audit: types.BoolDefault(false, resource.GetMetadata()), 34 }, 35 } 36 37 publicAccessAttr := resource.GetAttribute("publicly_accessible") 38 broker.PublicAccess = publicAccessAttr.AsBoolValueOrDefault(false, resource) 39 if logsBlock := resource.GetBlock("logs"); logsBlock.IsNotNil() { 40 broker.Logging.Metadata = logsBlock.GetMetadata() 41 auditAttr := logsBlock.GetAttribute("audit") 42 broker.Logging.Audit = auditAttr.AsBoolValueOrDefault(false, logsBlock) 43 generalAttr := logsBlock.GetAttribute("general") 44 broker.Logging.General = generalAttr.AsBoolValueOrDefault(false, logsBlock) 45 } 46 47 return broker 48 }