github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/aws/ssm/adapt.go (about)

     1  package ssm
     2  
     3  import (
     4  	"github.com/khulnasoft-lab/defsec/pkg/providers/aws/ssm"
     5  	"github.com/khulnasoft-lab/defsec/pkg/terraform"
     6  	"github.com/khulnasoft-lab/defsec/pkg/types"
     7  )
     8  
     9  func Adapt(modules terraform.Modules) ssm.SSM {
    10  	return ssm.SSM{
    11  		Secrets: adaptSecrets(modules),
    12  	}
    13  }
    14  
    15  func adaptSecrets(modules terraform.Modules) []ssm.Secret {
    16  	var secrets []ssm.Secret
    17  	for _, module := range modules {
    18  		for _, resource := range module.GetResourcesByType("aws_secretsmanager_secret") {
    19  			secrets = append(secrets, adaptSecret(resource, module))
    20  		}
    21  	}
    22  	return secrets
    23  }
    24  
    25  func adaptSecret(resource *terraform.Block, module *terraform.Module) ssm.Secret {
    26  	KMSKeyIDAttr := resource.GetAttribute("kms_key_id")
    27  	KMSKeyIDVal := KMSKeyIDAttr.AsStringValueOrDefault("alias/aws/secretsmanager", resource)
    28  
    29  	if KMSKeyIDAttr.IsResourceBlockReference("aws_kms_key") {
    30  		kmsBlock, err := module.GetReferencedBlock(KMSKeyIDAttr, resource)
    31  		if err == nil {
    32  			KMSKeyIDVal = types.String(kmsBlock.FullName(), kmsBlock.GetMetadata())
    33  		}
    34  	}
    35  
    36  	return ssm.Secret{
    37  		Metadata: resource.GetMetadata(),
    38  		KMSKeyID: KMSKeyIDVal,
    39  	}
    40  }