github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/google/compute/disks.go (about) 1 package compute 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/google/compute" 5 "github.com/khulnasoft-lab/defsec/pkg/terraform" 6 defsecTypes "github.com/khulnasoft-lab/defsec/pkg/types" 7 ) 8 9 func adaptDisks(modules terraform.Modules) (disks []compute.Disk) { 10 11 for _, diskBlock := range modules.GetResourcesByType("google_compute_disk") { 12 disk := compute.Disk{ 13 Metadata: diskBlock.GetMetadata(), 14 Name: diskBlock.GetAttribute("name").AsStringValueOrDefault("", diskBlock), 15 Encryption: compute.DiskEncryption{ 16 Metadata: diskBlock.GetMetadata(), 17 RawKey: defsecTypes.BytesDefault(nil, diskBlock.GetMetadata()), 18 KMSKeyLink: defsecTypes.StringDefault("", diskBlock.GetMetadata()), 19 }, 20 } 21 if encBlock := diskBlock.GetBlock("disk_encryption_key"); encBlock.IsNotNil() { 22 disk.Encryption.Metadata = encBlock.GetMetadata() 23 kmsKeyAttr := encBlock.GetAttribute("kms_key_self_link") 24 disk.Encryption.KMSKeyLink = kmsKeyAttr.AsStringValueOrDefault("", encBlock) 25 26 if kmsKeyAttr.IsResourceBlockReference("google_kms_crypto_key") { 27 if kmsKeyBlock, err := modules.GetReferencedBlock(kmsKeyAttr, encBlock); err == nil { 28 disk.Encryption.KMSKeyLink = defsecTypes.String(kmsKeyBlock.FullName(), kmsKeyAttr.GetMetadata()) 29 } 30 } 31 32 disk.Encryption.RawKey = encBlock.GetAttribute("raw_key").AsBytesValueOrDefault(nil, encBlock) 33 } 34 disks = append(disks, disk) 35 } 36 37 return disks 38 }