github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/arm/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/scanners/azure"
     6  )
     7  
     8  func Adapt(deployment azure.Deployment) securitycenter.SecurityCenter {
     9  	return securitycenter.SecurityCenter{
    10  		Contacts:      adaptContacts(deployment),
    11  		Subscriptions: adaptSubscriptions(deployment),
    12  	}
    13  }
    14  
    15  func adaptContacts(deployment azure.Deployment) (contacts []securitycenter.Contact) {
    16  	for _, resource := range deployment.GetResourcesByType("Microsoft.Security/securityContacts") {
    17  		contacts = append(contacts, adaptContact(resource))
    18  	}
    19  
    20  	return contacts
    21  }
    22  
    23  func adaptContact(resource azure.Resource) securitycenter.Contact {
    24  	return securitycenter.Contact{
    25  		Metadata:                 resource.Metadata,
    26  		EnableAlertNotifications: resource.Properties.GetMapValue("email").AsBoolValue(false, resource.Metadata),
    27  		Phone:                    resource.Properties.GetMapValue("phone").AsStringValue("", resource.Metadata),
    28  	}
    29  }
    30  
    31  func adaptSubscriptions(deployment azure.Deployment) (subscriptions []securitycenter.SubscriptionPricing) {
    32  	for _, resource := range deployment.GetResourcesByType("Microsoft.Security/pricings") {
    33  		subscriptions = append(subscriptions, adaptSubscription(resource))
    34  	}
    35  	return subscriptions
    36  }
    37  
    38  func adaptSubscription(resource azure.Resource) securitycenter.SubscriptionPricing {
    39  	return securitycenter.SubscriptionPricing{
    40  		Metadata: resource.Metadata,
    41  		Tier:     resource.Properties.GetMapValue("pricingTier").AsStringValue("Free", resource.Metadata),
    42  	}
    43  }