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

     1  package appservice
     2  
     3  import (
     4  	"github.com/khulnasoft-lab/defsec/pkg/providers/azure/appservice"
     5  	"github.com/khulnasoft-lab/defsec/pkg/scanners/azure"
     6  	defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types"
     7  )
     8  
     9  func Adapt(deployment azure.Deployment) appservice.AppService {
    10  	return appservice.AppService{
    11  		Services:     adaptServices(deployment),
    12  		FunctionApps: adaptFunctionApps(deployment),
    13  	}
    14  }
    15  
    16  func adaptFunctionApps(deployment azure.Deployment) []appservice.FunctionApp {
    17  	var functionApps []appservice.FunctionApp
    18  
    19  	for _, resource := range deployment.GetResourcesByType("Microsoft.Web/sites") {
    20  		functionApps = append(functionApps, adaptFunctionApp(resource))
    21  	}
    22  	return functionApps
    23  }
    24  
    25  func adaptServices(deployment azure.Deployment) []appservice.Service {
    26  	var services []appservice.Service
    27  	for _, resource := range deployment.GetResourcesByType("Microsoft.Web/sites") {
    28  		services = append(services, adaptService(resource))
    29  	}
    30  	return services
    31  }
    32  
    33  func adaptFunctionApp(resource azure.Resource) appservice.FunctionApp {
    34  	return appservice.FunctionApp{
    35  		Metadata:  resource.Metadata,
    36  		HTTPSOnly: resource.Properties.GetMapValue("httpsOnly").AsBoolValue(false, resource.Properties.GetMetadata()),
    37  	}
    38  }
    39  
    40  func adaptService(resource azure.Resource) appservice.Service {
    41  	return appservice.Service{
    42  		Metadata:         resource.Metadata,
    43  		EnableClientCert: resource.Properties.GetMapValue("clientCertEnabled").AsBoolValue(false, resource.Properties.GetMetadata()),
    44  		Identity: struct{ Type defsecTypes.StringValue }{
    45  			Type: resource.Properties.GetMapValue("identity").GetMapValue("type").AsStringValue("", resource.Properties.GetMetadata()),
    46  		},
    47  		Authentication: struct{ Enabled defsecTypes.BoolValue }{
    48  			Enabled: resource.Properties.GetMapValue("siteAuthSettings").GetMapValue("enabled").AsBoolValue(false, resource.Properties.GetMetadata()),
    49  		},
    50  		Site: struct {
    51  			EnableHTTP2       defsecTypes.BoolValue
    52  			MinimumTLSVersion defsecTypes.StringValue
    53  		}{
    54  			EnableHTTP2:       resource.Properties.GetMapValue("httpsOnly").AsBoolValue(false, resource.Properties.GetMetadata()),
    55  			MinimumTLSVersion: resource.Properties.GetMapValue("minTlsVersion").AsStringValue("", resource.Properties.GetMetadata()),
    56  		},
    57  	}
    58  }