Skip to content

Commit 2eaa17e

Browse files
authored
feat(misconf): ssl_mode support for GCP SQL DB instance (#7564)
Signed-off-by: nikpivkin <[email protected]>
1 parent bcfc37b commit 2eaa17e

File tree

4 files changed

+11
-8
lines changed

4 files changed

+11
-8
lines changed

pkg/iac/adapters/terraform/google/sql/adapt.go

+4-8
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func adaptInstance(resource *terraform.Block) sql.DatabaseInstance {
5252
IPConfiguration: sql.IPConfiguration{
5353
Metadata: resource.GetMetadata(),
5454
RequireTLS: iacTypes.BoolDefault(false, resource.GetMetadata()),
55+
SSLMode: iacTypes.String("", resource.GetMetadata()),
5556
EnableIPv4: iacTypes.BoolDefault(true, resource.GetMetadata()),
5657
AuthorizedNetworks: nil,
5758
},
@@ -125,12 +126,6 @@ func adaptIPConfig(resource *terraform.Block) sql.IPConfiguration {
125126
CIDR iacTypes.StringValue
126127
}
127128

128-
tlsRequiredAttr := resource.GetAttribute("require_ssl")
129-
tlsRequiredVal := tlsRequiredAttr.AsBoolValueOrDefault(false, resource)
130-
131-
ipv4enabledAttr := resource.GetAttribute("ipv4_enabled")
132-
ipv4enabledVal := ipv4enabledAttr.AsBoolValueOrDefault(true, resource)
133-
134129
authNetworksBlocks := resource.GetBlocks("authorized_networks")
135130
for _, authBlock := range authNetworksBlocks {
136131
nameVal := authBlock.GetAttribute("name").AsStringValueOrDefault("", authBlock)
@@ -147,8 +142,9 @@ func adaptIPConfig(resource *terraform.Block) sql.IPConfiguration {
147142

148143
return sql.IPConfiguration{
149144
Metadata: resource.GetMetadata(),
150-
RequireTLS: tlsRequiredVal,
151-
EnableIPv4: ipv4enabledVal,
145+
RequireTLS: resource.GetAttribute("require_ssl").AsBoolValueOrDefault(false, resource),
146+
SSLMode: resource.GetAttribute("ssl_mode").AsStringValueOrDefault("", resource),
147+
EnableIPv4: resource.GetAttribute("ipv4_enabled").AsBoolValueOrDefault(true, resource),
152148
AuthorizedNetworks: authorizedNetworks,
153149
}
154150
}

pkg/iac/adapters/terraform/google/sql/adapt_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ func Test_Adapt(t *testing.T) {
3434
name = "internal"
3535
}
3636
require_ssl = true
37+
ssl_mode = "TRUSTED_CLIENT_CERTIFICATE_REQUIRED"
3738
}
3839
}
3940
}
@@ -67,6 +68,7 @@ func Test_Adapt(t *testing.T) {
6768
Metadata: iacTypes.NewTestMetadata(),
6869
RequireTLS: iacTypes.Bool(true, iacTypes.NewTestMetadata()),
6970
EnableIPv4: iacTypes.Bool(false, iacTypes.NewTestMetadata()),
71+
SSLMode: iacTypes.StringTest("TRUSTED_CLIENT_CERTIFICATE_REQUIRED"),
7072
AuthorizedNetworks: []struct {
7173
Name iacTypes.StringValue
7274
CIDR iacTypes.StringValue

pkg/iac/providers/google/sql/sql.go

+1
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ type Backups struct {
6666
type IPConfiguration struct {
6767
Metadata iacTypes.Metadata
6868
RequireTLS iacTypes.BoolValue
69+
SSLMode iacTypes.StringValue
6970
EnableIPv4 iacTypes.BoolValue
7071
AuthorizedNetworks []struct {
7172
Name iacTypes.StringValue

pkg/iac/rego/schemas/cloud.json

+4
Original file line numberDiff line numberDiff line change
@@ -6991,6 +6991,10 @@
69916991
"requiretls": {
69926992
"type": "object",
69936993
"$ref": "#/definitions/github.com.aquasecurity.trivy.pkg.iac.types.BoolValue"
6994+
},
6995+
"sslmode": {
6996+
"type": "object",
6997+
"$ref": "#/definitions/github.com.aquasecurity.trivy.pkg.iac.types.StringValue"
69946998
}
69956999
}
69967000
},

0 commit comments

Comments
 (0)