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 }