github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/ec2/volume.go (about) 1 package ec2 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/aws/ec2" 5 "github.com/khulnasoft-lab/defsec/pkg/terraform" 6 "github.com/khulnasoft-lab/defsec/pkg/types" 7 ) 8 9 func adaptVolumes(modules terraform.Modules) []ec2.Volume { 10 var volumes []ec2.Volume 11 for _, module := range modules { 12 for _, resource := range module.GetResourcesByType("aws_ebs_volume") { 13 volumes = append(volumes, adaptVolume(resource, module)) 14 } 15 } 16 return volumes 17 } 18 19 func adaptVolume(resource *terraform.Block, module *terraform.Module) ec2.Volume { 20 encryptedAttr := resource.GetAttribute("encrypted") 21 encryptedVal := encryptedAttr.AsBoolValueOrDefault(false, resource) 22 23 kmsKeyAttr := resource.GetAttribute("kms_key_id") 24 kmsKeyVal := kmsKeyAttr.AsStringValueOrDefault("", resource) 25 26 if kmsKeyAttr.IsResourceBlockReference("aws_kms_key") { 27 if kmsKeyBlock, err := module.GetReferencedBlock(kmsKeyAttr, resource); err == nil { 28 kmsKeyVal = types.String(kmsKeyBlock.FullName(), kmsKeyBlock.GetMetadata()) 29 } 30 } 31 32 return ec2.Volume{ 33 Metadata: resource.GetMetadata(), 34 Encryption: ec2.Encryption{ 35 Metadata: resource.GetMetadata(), 36 Enabled: encryptedVal, 37 KMSKeyID: kmsKeyVal, 38 }, 39 } 40 }