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  }