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 }