github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/azure/monitor/adapt.go (about)

     1  package monitor
     2  
     3  import (
     4  	"github.com/khulnasoft-lab/defsec/pkg/providers/azure/monitor"
     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) monitor.Monitor {
    10  	return monitor.Monitor{
    11  		LogProfiles: adaptLogProfiles(modules),
    12  	}
    13  }
    14  
    15  func adaptLogProfiles(modules terraform.Modules) []monitor.LogProfile {
    16  	var logProfiles []monitor.LogProfile
    17  
    18  	for _, module := range modules {
    19  		for _, resource := range module.GetResourcesByType("azurerm_monitor_log_profile") {
    20  			logProfiles = append(logProfiles, adaptLogProfile(resource))
    21  		}
    22  	}
    23  	return logProfiles
    24  }
    25  
    26  func adaptLogProfile(resource *terraform.Block) monitor.LogProfile {
    27  
    28  	logProfile := monitor.LogProfile{
    29  		Metadata: resource.GetMetadata(),
    30  		RetentionPolicy: monitor.RetentionPolicy{
    31  			Metadata: resource.GetMetadata(),
    32  			Enabled:  defsecTypes.BoolDefault(false, resource.GetMetadata()),
    33  			Days:     defsecTypes.IntDefault(0, resource.GetMetadata()),
    34  		},
    35  		Categories: nil,
    36  		Locations:  nil,
    37  	}
    38  
    39  	if retentionPolicyBlock := resource.GetBlock("retention_policy"); retentionPolicyBlock.IsNotNil() {
    40  		logProfile.RetentionPolicy.Metadata = retentionPolicyBlock.GetMetadata()
    41  		enabledAttr := retentionPolicyBlock.GetAttribute("enabled")
    42  		logProfile.RetentionPolicy.Enabled = enabledAttr.AsBoolValueOrDefault(false, resource)
    43  		daysAttr := retentionPolicyBlock.GetAttribute("days")
    44  		logProfile.RetentionPolicy.Days = daysAttr.AsIntValueOrDefault(0, resource)
    45  	}
    46  
    47  	if categoriesAttr := resource.GetAttribute("categories"); categoriesAttr.IsNotNil() {
    48  		logProfile.Categories = categoriesAttr.AsStringValues()
    49  	}
    50  
    51  	if locationsAttr := resource.GetAttribute("locations"); locationsAttr.IsNotNil() {
    52  		logProfile.Locations = locationsAttr.AsStringValues()
    53  	}
    54  
    55  	return logProfile
    56  }