github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/internal/adapters/terraform/google/iam/folders.go (about) 1 package iam 2 3 import ( 4 "github.com/aquasecurity/defsec/pkg/providers/google/iam" 5 ) 6 7 type parentedFolder struct { 8 blockID string 9 parentBlockID string 10 parentRef string 11 folder iam.Folder 12 } 13 14 func (a *adapter) adaptFolders() { 15 for _, folderBlock := range a.modules.GetResourcesByType("google_folder") { 16 var folder parentedFolder 17 parentAttr := folderBlock.GetAttribute("parent") 18 if parentAttr.IsNil() { 19 continue 20 } 21 22 folder.folder.Metadata = folderBlock.GetMetadata() 23 folder.blockID = folderBlock.ID() 24 if parentAttr.IsString() { 25 folder.parentRef = parentAttr.Value().AsString() 26 } 27 28 if referencedBlock, err := a.modules.GetReferencedBlock(parentAttr, folderBlock); err == nil { 29 if referencedBlock.TypeLabel() == "google_folder" { 30 folder.parentBlockID = referencedBlock.ID() 31 } 32 if referencedBlock.TypeLabel() == "google_organization" { 33 folder.parentBlockID = referencedBlock.ID() 34 a.addOrg(folder.parentBlockID) 35 } 36 } 37 38 a.folders = append(a.folders, folder) 39 } 40 }