github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/rules/cloud/policies/aws/ec2/add_description_to_security_group.go (about) 1 package ec2 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/internal/rules" 5 "github.com/khulnasoft-lab/defsec/pkg/providers" 6 "github.com/khulnasoft-lab/defsec/pkg/scan" 7 "github.com/khulnasoft-lab/defsec/pkg/severity" 8 "github.com/khulnasoft-lab/defsec/pkg/state" 9 ) 10 11 var CheckAddDescriptionToSecurityGroup = rules.Register( 12 scan.Rule{ 13 AVDID: "AVD-AWS-0099", 14 Aliases: []string{"aws-vpc-add-description-to-security-group"}, 15 Provider: providers.AWSProvider, 16 Service: "ec2", 17 ShortCode: "add-description-to-security-group", 18 Summary: "Missing description for security group.", 19 Impact: "Descriptions provide context for the firewall rule reasons", 20 Resolution: "Add descriptions for all security groups", 21 Explanation: `Security groups should include a description for auditing purposes. 22 23 Simplifies auditing, debugging, and managing security groups.`, 24 Links: []string{ 25 "https://www.cloudconformity.com/knowledge-base/aws/EC2/security-group-rules-description.html", 26 }, 27 Terraform: &scan.EngineMetadata{ 28 GoodExamples: terraformAddDescriptionToSecurityGroupGoodExamples, 29 BadExamples: terraformAddDescriptionToSecurityGroupBadExamples, 30 Links: terraformAddDescriptionToSecurityGroupLinks, 31 RemediationMarkdown: terraformAddDescriptionToSecurityGroupRemediationMarkdown, 32 }, 33 CloudFormation: &scan.EngineMetadata{ 34 GoodExamples: cloudFormationAddDescriptionToSecurityGroupGoodExamples, 35 BadExamples: cloudFormationAddDescriptionToSecurityGroupBadExamples, 36 Links: cloudFormationAddDescriptionToSecurityGroupLinks, 37 RemediationMarkdown: cloudFormationAddDescriptionToSecurityGroupRemediationMarkdown, 38 }, 39 Severity: severity.Low, 40 }, 41 func(s *state.State) (results scan.Results) { 42 for _, group := range s.AWS.EC2.SecurityGroups { 43 if group.Metadata.IsUnmanaged() { 44 continue 45 } 46 if group.Description.IsEmpty() { 47 results.Add( 48 "Security group does not have a description.", 49 group.Description, 50 ) 51 } else if group.Description.EqualTo("Managed by Terraform") { 52 results.Add( 53 "Security group explicitly uses the default description.", 54 group.Description, 55 ) 56 } else { 57 results.AddPassed(&group) 58 } 59 } 60 return 61 }, 62 )