github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/arm/keyvault/adapt.go (about) 1 package keyvault 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/azure/keyvault" 5 "github.com/khulnasoft-lab/defsec/pkg/scanners/azure" 6 ) 7 8 func Adapt(deployment azure.Deployment) keyvault.KeyVault { 9 return keyvault.KeyVault{ 10 Vaults: adaptVaults(deployment), 11 } 12 } 13 14 func adaptVaults(deployment azure.Deployment) (vaults []keyvault.Vault) { 15 for _, resource := range deployment.GetResourcesByType("Microsoft.KeyVault/vaults") { 16 vaults = append(vaults, adaptVault(resource, deployment)) 17 } 18 19 return vaults 20 } 21 22 func adaptVault(resource azure.Resource, deployment azure.Deployment) keyvault.Vault { 23 return keyvault.Vault{ 24 Metadata: resource.Metadata, 25 Secrets: adaptSecrets(resource, deployment), 26 Keys: adaptKeys(resource, deployment), 27 EnablePurgeProtection: resource.Properties.GetMapValue("enablePurgeProtection").AsBoolValue(false, resource.Metadata), 28 SoftDeleteRetentionDays: resource.Properties.GetMapValue("softDeleteRetentionInDays").AsIntValue(7, resource.Metadata), 29 NetworkACLs: keyvault.NetworkACLs{ 30 Metadata: resource.Metadata, 31 DefaultAction: resource.Properties.GetMapValue("properties").GetMapValue("networkAcls").GetMapValue("defaultAction").AsStringValue("", resource.Metadata), 32 }, 33 } 34 } 35 36 func adaptKeys(resource azure.Resource, deployment azure.Deployment) (keys []keyvault.Key) { 37 for _, resource := range deployment.GetResourcesByType("Microsoft.KeyVault/vaults/keys") { 38 keys = append(keys, adaptKey(resource)) 39 } 40 41 return keys 42 } 43 44 func adaptKey(resource azure.Resource) keyvault.Key { 45 return keyvault.Key{ 46 Metadata: resource.Metadata, 47 ExpiryDate: resource.Properties.GetMapValue("attributes").GetMapValue("exp").AsTimeValue(resource.Metadata), 48 } 49 } 50 51 func adaptSecrets(resource azure.Resource, deployment azure.Deployment) (secrets []keyvault.Secret) { 52 for _, resource := range deployment.GetResourcesByType("Microsoft.KeyVault/vaults/secrets") { 53 secrets = append(secrets, adaptSecret(resource)) 54 } 55 return secrets 56 } 57 58 func adaptSecret(resource azure.Resource) keyvault.Secret { 59 return keyvault.Secret{ 60 Metadata: resource.Metadata, 61 ContentType: resource.Properties.GetMapValue("contentType").AsStringValue("", resource.Metadata), 62 ExpiryDate: resource.Properties.GetMapValue("attributes").GetMapValue("exp").AsTimeValue(resource.Metadata), 63 } 64 }