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  }