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

     1  package securitycenter
     2  
     3  import (
     4  	"github.com/khulnasoft-lab/defsec/pkg/providers/azure/securitycenter"
     5  	"github.com/khulnasoft-lab/defsec/pkg/terraform"
     6  )
     7  
     8  func Adapt(modules terraform.Modules) securitycenter.SecurityCenter {
     9  	return securitycenter.SecurityCenter{
    10  		Contacts:      adaptContacts(modules),
    11  		Subscriptions: adaptSubscriptions(modules),
    12  	}
    13  }
    14  
    15  func adaptContacts(modules terraform.Modules) []securitycenter.Contact {
    16  	var contacts []securitycenter.Contact
    17  
    18  	for _, module := range modules {
    19  		for _, resource := range module.GetResourcesByType("azurerm_security_center_contact") {
    20  			contacts = append(contacts, adaptContact(resource))
    21  		}
    22  	}
    23  	return contacts
    24  }
    25  
    26  func adaptSubscriptions(modules terraform.Modules) []securitycenter.SubscriptionPricing {
    27  	var subscriptions []securitycenter.SubscriptionPricing
    28  
    29  	for _, module := range modules {
    30  		for _, resource := range module.GetResourcesByType("azurerm_security_center_subscription_pricing") {
    31  			subscriptions = append(subscriptions, adaptSubscription(resource))
    32  		}
    33  	}
    34  	return subscriptions
    35  }
    36  
    37  func adaptContact(resource *terraform.Block) securitycenter.Contact {
    38  	enableAlertNotifAttr := resource.GetAttribute("alert_notifications")
    39  	enableAlertNotifVal := enableAlertNotifAttr.AsBoolValueOrDefault(false, resource)
    40  
    41  	phoneAttr := resource.GetAttribute("phone")
    42  	phoneVal := phoneAttr.AsStringValueOrDefault("", resource)
    43  
    44  	return securitycenter.Contact{
    45  		Metadata:                 resource.GetMetadata(),
    46  		EnableAlertNotifications: enableAlertNotifVal,
    47  		Phone:                    phoneVal,
    48  	}
    49  }
    50  
    51  func adaptSubscription(resource *terraform.Block) securitycenter.SubscriptionPricing {
    52  	tierAttr := resource.GetAttribute("tier")
    53  	tierVal := tierAttr.AsStringValueOrDefault("Free", resource)
    54  
    55  	return securitycenter.SubscriptionPricing{
    56  		Metadata: resource.GetMetadata(),
    57  		Tier:     tierVal,
    58  	}
    59  }