github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/cloudformation/aws/codebuild/project.go (about) 1 package codebuild 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/codebuild" 5 "github.com/khulnasoft-lab/defsec/pkg/scanners/cloudformation/parser" 6 "github.com/khulnasoft-lab/defsec/pkg/types" 7 ) 8 9 func getProjects(ctx parser.FileContext) (projects []codebuild.Project) { 10 11 projectResources := ctx.GetResourcesByType("AWS::CodeBuild::Project") 12 13 for _, r := range projectResources { 14 project := codebuild.Project{ 15 Metadata: r.Metadata(), 16 ArtifactSettings: getArtifactSettings(r), 17 SecondaryArtifactSettings: getSecondaryArtifactSettings(r), 18 } 19 20 projects = append(projects, project) 21 } 22 23 return projects 24 } 25 26 func getSecondaryArtifactSettings(r *parser.Resource) (secondaryArtifacts []codebuild.ArtifactSettings) { 27 secondaryArtifactsList := r.GetProperty("SecondaryArtifacts") 28 if secondaryArtifactsList.IsNil() || !secondaryArtifactsList.IsList() { 29 return 30 } 31 32 for _, a := range secondaryArtifactsList.AsList() { 33 settings := codebuild.ArtifactSettings{ 34 Metadata: secondaryArtifactsList.Metadata(), 35 EncryptionEnabled: types.BoolDefault(true, secondaryArtifactsList.Metadata()), 36 } 37 encryptionDisabled := a.GetProperty("EncryptionDisabled") 38 if encryptionDisabled.IsBool() { 39 settings.EncryptionEnabled = types.Bool(!encryptionDisabled.AsBool(), encryptionDisabled.Metadata()) 40 } 41 secondaryArtifacts = append(secondaryArtifacts, settings) 42 } 43 44 return secondaryArtifacts 45 } 46 47 func getArtifactSettings(r *parser.Resource) codebuild.ArtifactSettings { 48 49 settings := codebuild.ArtifactSettings{ 50 Metadata: r.Metadata(), 51 EncryptionEnabled: types.BoolDefault(true, r.Metadata()), 52 } 53 54 artifactsProperty := r.GetProperty("Artifacts") 55 if artifactsProperty.IsNotNil() { 56 encryptionDisabled := artifactsProperty.GetProperty("EncryptionDisabled") 57 if encryptionDisabled.IsBool() { 58 settings.EncryptionEnabled = types.Bool(!encryptionDisabled.AsBool(), encryptionDisabled.Metadata()) 59 } 60 } 61 62 return settings 63 }