github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/internal/adapters/terraform/aws/iam/groups.go (about)

     1  package iam
     2  
     3  import (
     4  	"github.com/aquasecurity/defsec/pkg/providers/aws/iam"
     5  	"github.com/aquasecurity/defsec/pkg/terraform"
     6  )
     7  
     8  func adaptGroups(modules terraform.Modules) []iam.Group {
     9  	var groups []iam.Group
    10  
    11  	for _, groupBlock := range modules.GetResourcesByType("aws_iam_group") {
    12  		group := iam.Group{
    13  			Metadata: groupBlock.GetMetadata(),
    14  			Name:     groupBlock.GetAttribute("name").AsStringValueOrDefault("", groupBlock),
    15  		}
    16  
    17  		if policy, ok := applyForDependentResource(
    18  			modules, groupBlock.ID(), "name", "aws_iam_group_policy", "group", findPolicy(modules),
    19  		); ok && policy != nil {
    20  			group.Policies = append(group.Policies, *policy)
    21  		}
    22  
    23  		if policy, ok := applyForDependentResource(
    24  			modules, groupBlock.ID(), "name", "aws_iam_group_policy_attachment", "group", findAttachmentPolicy(modules),
    25  		); ok && policy != nil {
    26  			group.Policies = append(group.Policies, *policy)
    27  		}
    28  
    29  		groups = append(groups, group)
    30  	}
    31  	return groups
    32  }