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

     1  package kms
     2  
     3  import (
     4  	"github.com/aquasecurity/defsec/pkg/providers/aws/kms"
     5  	"github.com/aquasecurity/defsec/pkg/terraform"
     6  )
     7  
     8  func Adapt(modules terraform.Modules) kms.KMS {
     9  	return kms.KMS{
    10  		Keys: adaptKeys(modules),
    11  	}
    12  }
    13  
    14  func adaptKeys(modules terraform.Modules) []kms.Key {
    15  	var keys []kms.Key
    16  	for _, module := range modules {
    17  		for _, resource := range module.GetResourcesByType("aws_kms_key") {
    18  			keys = append(keys, adaptKey(resource))
    19  		}
    20  	}
    21  	return keys
    22  }
    23  
    24  func adaptKey(resource *terraform.Block) kms.Key {
    25  	usageAttr := resource.GetAttribute("key_usage")
    26  	usageVal := usageAttr.AsStringValueOrDefault("ENCRYPT_DECRYPT", resource)
    27  
    28  	enableKeyRotationAttr := resource.GetAttribute("enable_key_rotation")
    29  	enableKeyRotationVal := enableKeyRotationAttr.AsBoolValueOrDefault(false, resource)
    30  
    31  	return kms.Key{
    32  		Metadata:        resource.GetMetadata(),
    33  		Usage:           usageVal,
    34  		RotationEnabled: enableKeyRotationVal,
    35  	}
    36  }