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

     1  package workspaces
     2  
     3  import (
     4  	"github.com/khulnasoft-lab/defsec/pkg/providers/aws/workspaces"
     5  	"github.com/khulnasoft-lab/defsec/pkg/terraform"
     6  	"github.com/khulnasoft-lab/defsec/pkg/types"
     7  )
     8  
     9  func Adapt(modules terraform.Modules) workspaces.WorkSpaces {
    10  	return workspaces.WorkSpaces{
    11  		WorkSpaces: adaptWorkspaces(modules),
    12  	}
    13  }
    14  
    15  func adaptWorkspaces(modules terraform.Modules) []workspaces.WorkSpace {
    16  	var workspaces []workspaces.WorkSpace
    17  	for _, module := range modules {
    18  		for _, resource := range module.GetResourcesByType("aws_workspaces_workspace") {
    19  			workspaces = append(workspaces, adaptWorkspace(resource))
    20  		}
    21  	}
    22  	return workspaces
    23  }
    24  
    25  func adaptWorkspace(resource *terraform.Block) workspaces.WorkSpace {
    26  
    27  	workspace := workspaces.WorkSpace{
    28  		Metadata: resource.GetMetadata(),
    29  		RootVolume: workspaces.Volume{
    30  			Metadata: resource.GetMetadata(),
    31  			Encryption: workspaces.Encryption{
    32  				Metadata: resource.GetMetadata(),
    33  				Enabled:  types.BoolDefault(false, resource.GetMetadata()),
    34  			},
    35  		},
    36  		UserVolume: workspaces.Volume{
    37  			Metadata: resource.GetMetadata(),
    38  			Encryption: workspaces.Encryption{
    39  				Metadata: resource.GetMetadata(),
    40  				Enabled:  types.BoolDefault(false, resource.GetMetadata()),
    41  			},
    42  		},
    43  	}
    44  	if rootVolumeEncryptAttr := resource.GetAttribute("root_volume_encryption_enabled"); rootVolumeEncryptAttr.IsNotNil() {
    45  		workspace.RootVolume.Metadata = rootVolumeEncryptAttr.GetMetadata()
    46  		workspace.RootVolume.Encryption.Metadata = rootVolumeEncryptAttr.GetMetadata()
    47  		workspace.RootVolume.Encryption.Enabled = rootVolumeEncryptAttr.AsBoolValueOrDefault(false, resource)
    48  	}
    49  
    50  	if userVolumeEncryptAttr := resource.GetAttribute("user_volume_encryption_enabled"); userVolumeEncryptAttr.IsNotNil() {
    51  		workspace.UserVolume.Metadata = userVolumeEncryptAttr.GetMetadata()
    52  		workspace.UserVolume.Encryption.Metadata = userVolumeEncryptAttr.GetMetadata()
    53  		workspace.UserVolume.Encryption.Enabled = userVolumeEncryptAttr.AsBoolValueOrDefault(false, resource)
    54  	}
    55  
    56  	return workspace
    57  }