forked from aquasecurity/trivy-iac
-
Notifications
You must be signed in to change notification settings - Fork 0
/
adapt.go
48 lines (41 loc) · 1.42 KB
/
adapt.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package mq
import (
"github.com/aquasecurity/defsec/pkg/providers/aws/mq"
"github.com/aquasecurity/defsec/pkg/terraform"
"github.com/aquasecurity/defsec/pkg/types"
)
func Adapt(modules terraform.Modules) mq.MQ {
return mq.MQ{
Brokers: adaptBrokers(modules),
}
}
func adaptBrokers(modules terraform.Modules) []mq.Broker {
var brokers []mq.Broker
for _, module := range modules {
for _, resource := range module.GetResourcesByType("aws_mq_broker") {
brokers = append(brokers, adaptBroker(resource))
}
}
return brokers
}
func adaptBroker(resource *terraform.Block) mq.Broker {
broker := mq.Broker{
Metadata: resource.GetMetadata(),
PublicAccess: types.BoolDefault(false, resource.GetMetadata()),
Logging: mq.Logging{
Metadata: resource.GetMetadata(),
General: types.BoolDefault(false, resource.GetMetadata()),
Audit: types.BoolDefault(false, resource.GetMetadata()),
},
}
publicAccessAttr := resource.GetAttribute("publicly_accessible")
broker.PublicAccess = publicAccessAttr.AsBoolValueOrDefault(false, resource)
if logsBlock := resource.GetBlock("logs"); logsBlock.IsNotNil() {
broker.Logging.Metadata = logsBlock.GetMetadata()
auditAttr := logsBlock.GetAttribute("audit")
broker.Logging.Audit = auditAttr.AsBoolValueOrDefault(false, logsBlock)
generalAttr := logsBlock.GetAttribute("general")
broker.Logging.General = generalAttr.AsBoolValueOrDefault(false, logsBlock)
}
return broker
}