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

     1  package authorization
     2  
     3  import (
     4  	"github.com/khulnasoft-lab/defsec/pkg/providers/azure/authorization"
     5  	"github.com/khulnasoft-lab/defsec/pkg/terraform"
     6  )
     7  
     8  func Adapt(modules terraform.Modules) authorization.Authorization {
     9  	return authorization.Authorization{
    10  		RoleDefinitions: adaptRoleDefinitions(modules),
    11  	}
    12  }
    13  
    14  func adaptRoleDefinitions(modules terraform.Modules) []authorization.RoleDefinition {
    15  	var roleDefinitions []authorization.RoleDefinition
    16  	for _, module := range modules {
    17  		for _, resource := range module.GetResourcesByType("azurerm_role_definition") {
    18  			roleDefinitions = append(roleDefinitions, adaptRoleDefinition(resource))
    19  		}
    20  	}
    21  	return roleDefinitions
    22  }
    23  
    24  func adaptRoleDefinition(resource *terraform.Block) authorization.RoleDefinition {
    25  	permissionsBlocks := resource.GetBlocks("permissions")
    26  	var permissionsVal []authorization.Permission
    27  
    28  	for _, permissionsBlock := range permissionsBlocks {
    29  		actionsAttr := permissionsBlock.GetAttribute("actions")
    30  		permissionsVal = append(permissionsVal, authorization.Permission{
    31  			Metadata: permissionsBlock.GetMetadata(),
    32  			Actions:  actionsAttr.AsStringValues(),
    33  		})
    34  	}
    35  
    36  	assignableScopesAttr := resource.GetAttribute("assignable_scopes")
    37  	return authorization.RoleDefinition{
    38  		Metadata:         resource.GetMetadata(),
    39  		Permissions:      permissionsVal,
    40  		AssignableScopes: assignableScopesAttr.AsStringValues(),
    41  	}
    42  }