Skip to content

Commit 2006771

Browse files
authored
Secure policies composite policy resources follow up changes (#485)
* address review comments * add ml threshold description * fix lint errors * propagate errors in reading policy data * fix additional lint errors * remove severity from aws ml test * remove severity * remove more references to severity in ML rule * fix ml test - remove severity field * remove more severity references * Update data_source_sysdig_secure_ml_policy_test.go * remvoe severity reference in docs * add policy level severity in tests * fix lint errors in cloudauth * address review comments
1 parent 50a496f commit 2006771

20 files changed

+59
-165
lines changed

sysdig/data_source_sysdig_secure_aws_ml_policy.go

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"time"
66

77
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
8-
"github.com/hashicorp/terraform-plugin-log/tflog"
98
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
109
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1110
)
@@ -25,7 +24,7 @@ func dataSourceSysdigSecureAWSMLPolicy() *schema.Resource {
2524
}
2625

2726
func dataSourceSysdigSecureAWSMLPolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
28-
return awsMLPolicyDataSourceRead(ctx, d, meta, "custom policy", isCustomCompositePolicy)
27+
return awsMLPolicyDataSourceRead(ctx, d, meta, "custom AWS ML policy", isCustomCompositePolicy)
2928
}
3029

3130
func createAWSMLPolicyDataSourceSchema() map[string]*schema.Schema {
@@ -61,41 +60,12 @@ func createAWSMLPolicyDataSourceSchema() map[string]*schema.Schema {
6160
}
6261

6362
func awsMLPolicyDataSourceRead(ctx context.Context, d *schema.ResourceData, meta interface{}, resourceName string, validationFunc func(v2.PolicyRulesComposite) bool) diag.Diagnostics {
64-
client, err := getSecureCompositePolicyClient(meta.(SysdigClients))
63+
policy, err := compositePolicyDataSourceRead(ctx, d, meta, resourceName, policyTypeAWSML, validationFunc)
6564
if err != nil {
6665
return diag.FromErr(err)
6766
}
6867

69-
policyName := d.Get("name").(string)
70-
policyType := policyTypeAWSML
71-
72-
policies, _, err := client.FilterCompositePoliciesByNameAndType(ctx, policyType, policyName)
73-
if err != nil {
74-
return diag.FromErr(err)
75-
}
76-
77-
var policy v2.PolicyRulesComposite
78-
for _, existingPolicy := range policies {
79-
tflog.Debug(ctx, "Filtered policies", map[string]interface{}{"name": existingPolicy.Policy.Name})
80-
81-
if existingPolicy.Policy.Name == policyName && existingPolicy.Policy.Type == policyType {
82-
if !validationFunc(existingPolicy) {
83-
return diag.Errorf("policy is not a %s", resourceName)
84-
}
85-
policy = existingPolicy
86-
break
87-
}
88-
}
89-
90-
if policy.Policy == nil {
91-
return diag.Errorf("unable to find policy %s", resourceName)
92-
}
93-
94-
if policy.Policy.ID == 0 {
95-
return diag.Errorf("unable to find %s", resourceName)
96-
}
97-
98-
err = awsMLPolicyToResourceData(&policy, d)
68+
err = awsMLPolicyToResourceData(policy, d)
9969
if err != nil {
10070
return diag.FromErr(err)
10171
}

sysdig/data_source_sysdig_secure_aws_ml_policy_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ resource "sysdig_secure_aws_ml_policy" "policy_1" {
5050
anomalous_console_login {
5151
enabled = true
5252
threshold = 2
53-
severity = 1
5453
}
5554
}
5655

sysdig/data_source_sysdig_secure_drift_policy.go

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"time"
66

77
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
8-
"github.com/hashicorp/terraform-plugin-log/tflog"
98
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
109
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1110
)
@@ -25,7 +24,7 @@ func dataSourceSysdigSecureDriftPolicy() *schema.Resource {
2524
}
2625

2726
func dataSourceSysdigSecureDriftPolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
28-
return driftPolicyDataSourceRead(ctx, d, meta, "custom policy", isCustomCompositePolicy)
27+
return driftPolicyDataSourceRead(ctx, d, meta, "custom drift policy", isCustomCompositePolicy)
2928
}
3029

3130
func createDriftPolicyDataSourceSchema() map[string]*schema.Schema {
@@ -74,41 +73,12 @@ func createDriftPolicyDataSourceSchema() map[string]*schema.Schema {
7473
}
7574

7675
func driftPolicyDataSourceRead(ctx context.Context, d *schema.ResourceData, meta interface{}, resourceName string, validationFunc func(v2.PolicyRulesComposite) bool) diag.Diagnostics {
77-
client, err := getSecureCompositePolicyClient(meta.(SysdigClients))
76+
policy, err := compositePolicyDataSourceRead(ctx, d, meta, resourceName, policyTypeDrift, validationFunc)
7877
if err != nil {
7978
return diag.FromErr(err)
8079
}
8180

82-
policyName := d.Get("name").(string)
83-
policyType := policyTypeDrift
84-
85-
policies, _, err := client.FilterCompositePoliciesByNameAndType(ctx, policyType, policyName)
86-
if err != nil {
87-
return diag.FromErr(err)
88-
}
89-
90-
var policy v2.PolicyRulesComposite
91-
for _, existingPolicy := range policies {
92-
tflog.Debug(ctx, "Filtered policies", map[string]interface{}{"name": existingPolicy.Policy.Name})
93-
94-
if existingPolicy.Policy.Name == policyName && existingPolicy.Policy.Type == policyType {
95-
if !validationFunc(existingPolicy) {
96-
return diag.Errorf("policy is not a %s", resourceName)
97-
}
98-
policy = existingPolicy
99-
break
100-
}
101-
}
102-
103-
if policy.Policy == nil {
104-
return diag.Errorf("unable to find policy %s", resourceName)
105-
}
106-
107-
if policy.Policy.ID == 0 {
108-
return diag.Errorf("unable to find %s", resourceName)
109-
}
110-
111-
err = driftPolicyToResourceData(&policy, d)
81+
err = driftPolicyToResourceData(policy, d)
11282
if err != nil {
11383
return diag.FromErr(err)
11484
}

sysdig/data_source_sysdig_secure_malware_policy.go

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"time"
66

77
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
8-
"github.com/hashicorp/terraform-plugin-log/tflog"
98
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
109
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1110
)
@@ -25,7 +24,7 @@ func dataSourceSysdigSecureMalwarePolicy() *schema.Resource {
2524
}
2625

2726
func dataSourceSysdigSecureMalwarePolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
28-
return malwarePolicyDataSourceRead(ctx, d, meta, "custom policy", isCustomCompositePolicy)
27+
return malwarePolicyDataSourceRead(ctx, d, meta, "custom malware policy", isCustomCompositePolicy)
2928
}
3029

3130
func isCustomCompositePolicy(policy v2.PolicyRulesComposite) bool {
@@ -78,41 +77,12 @@ func createMalwarePolicyDataSourceSchema() map[string]*schema.Schema {
7877
}
7978

8079
func malwarePolicyDataSourceRead(ctx context.Context, d *schema.ResourceData, meta interface{}, resourceName string, validationFunc func(v2.PolicyRulesComposite) bool) diag.Diagnostics {
81-
client, err := getSecureCompositePolicyClient(meta.(SysdigClients))
80+
policy, err := compositePolicyDataSourceRead(ctx, d, meta, resourceName, policyTypeMalware, validationFunc)
8281
if err != nil {
8382
return diag.FromErr(err)
8483
}
8584

86-
policyName := d.Get("name").(string)
87-
policyType := policyTypeMalware
88-
89-
policies, _, err := client.FilterCompositePoliciesByNameAndType(ctx, policyType, policyName)
90-
if err != nil {
91-
return diag.FromErr(err)
92-
}
93-
94-
var policy v2.PolicyRulesComposite
95-
for _, existingPolicy := range policies {
96-
tflog.Debug(ctx, "Filtered policies", map[string]interface{}{"name": existingPolicy.Policy.Name})
97-
98-
if existingPolicy.Policy.Name == policyName && existingPolicy.Policy.Type == policyType {
99-
if !validationFunc(existingPolicy) {
100-
return diag.Errorf("policy is not a %s", resourceName)
101-
}
102-
policy = existingPolicy
103-
break
104-
}
105-
}
106-
107-
if policy.Policy == nil {
108-
return diag.Errorf("unable to find policy %s", resourceName)
109-
}
110-
111-
if policy.Policy.ID == 0 {
112-
return diag.Errorf("unable to find %s", resourceName)
113-
}
114-
115-
err = malwarePolicyToResourceData(&policy, d)
85+
err = malwarePolicyToResourceData(policy, d)
11686
if err != nil {
11787
return diag.FromErr(err)
11888
}

sysdig/data_source_sysdig_secure_ml_policy.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package sysdig
22

33
import (
44
"context"
5+
"fmt"
56
"time"
67

78
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
@@ -25,7 +26,7 @@ func dataSourceSysdigSecureMLPolicy() *schema.Resource {
2526
}
2627

2728
func dataSourceSysdigSecureMLPolicyRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
28-
return mlPolicyDataSourceRead(ctx, d, meta, "custom policy", isCustomCompositePolicy)
29+
return mlPolicyDataSourceRead(ctx, d, meta, "custom ML policy", isCustomCompositePolicy)
2930
}
3031

3132
func createMLPolicyDataSourceSchema() map[string]*schema.Schema {
@@ -61,17 +62,30 @@ func createMLPolicyDataSourceSchema() map[string]*schema.Schema {
6162
}
6263

6364
func mlPolicyDataSourceRead(ctx context.Context, d *schema.ResourceData, meta interface{}, resourceName string, validationFunc func(v2.PolicyRulesComposite) bool) diag.Diagnostics {
64-
client, err := getSecureCompositePolicyClient(meta.(SysdigClients))
65+
66+
policy, err := compositePolicyDataSourceRead(ctx, d, meta, resourceName, policyTypeML, validationFunc)
67+
if err != nil {
68+
return diag.FromErr(err)
69+
}
70+
err = mlPolicyToResourceData(policy, d)
6571
if err != nil {
6672
return diag.FromErr(err)
6773
}
6874

75+
return nil
76+
}
77+
78+
func compositePolicyDataSourceRead(ctx context.Context, d *schema.ResourceData, meta interface{}, resourceName string, policyType string, validationFunc func(v2.PolicyRulesComposite) bool) (*v2.PolicyRulesComposite, error) {
79+
client, err := getSecureCompositePolicyClient(meta.(SysdigClients))
80+
if err != nil {
81+
return nil, err
82+
}
83+
6984
policyName := d.Get("name").(string)
70-
policyType := policyTypeML
7185

7286
policies, _, err := client.FilterCompositePoliciesByNameAndType(ctx, policyType, policyName)
7387
if err != nil {
74-
return diag.FromErr(err)
88+
return nil, err
7589
}
7690

7791
var policy v2.PolicyRulesComposite
@@ -80,25 +94,20 @@ func mlPolicyDataSourceRead(ctx context.Context, d *schema.ResourceData, meta in
8094

8195
if existingPolicy.Policy.Name == policyName && existingPolicy.Policy.Type == policyType {
8296
if !validationFunc(existingPolicy) {
83-
return diag.Errorf("policy is not a %s", resourceName)
97+
return nil, fmt.Errorf("policy is not a %s", resourceName)
8498
}
8599
policy = existingPolicy
86100
break
87101
}
88102
}
89103

90104
if policy.Policy == nil {
91-
return diag.Errorf("unable to find policy %s", resourceName)
105+
return nil, fmt.Errorf("unable to find policy %s", resourceName)
92106
}
93107

94108
if policy.Policy.ID == 0 {
95-
return diag.Errorf("unable to find %s", resourceName)
109+
return nil, fmt.Errorf("unable to find %s", resourceName)
96110
}
97111

98-
err = mlPolicyToResourceData(&policy, d)
99-
if err != nil {
100-
return diag.FromErr(err)
101-
}
102-
103-
return nil
112+
return &policy, nil
104113
}

sysdig/data_source_sysdig_secure_ml_policy_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ resource "sysdig_secure_ml_policy" "policy_1" {
5050
cryptomining_trigger {
5151
enabled = true
5252
threshold = 1
53-
severity = 1
54-
}
53+
}
5554
}
5655
5756
}

sysdig/internal/client/v2/model.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -357,17 +357,6 @@ func (r *RuntimePolicyRule) UnmarshalJSON(b []byte) error {
357357
return err
358358
}
359359

360-
if findDetails.FindType.RuleType == "DRIFT" {
361-
d1 := &DriftRuleDetails{}
362-
err = json.Unmarshal(getRawDetails.RawDetails, d1)
363-
if err != nil {
364-
return err
365-
}
366-
if d1.Exceptions != nil && d1.ProhibitedBinaries != nil {
367-
d = d1
368-
}
369-
}
370-
371360
var findDetailsIdPtr *FlexInt
372361
if findDetails.Id != nil {
373362
findDetailsId := FlexInt(*findDetails.Id)

sysdig/resource_sysdig_secure_aws_ml_policy_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ resource "sysdig_secure_aws_ml_policy" "sample" {
5050
anomalous_console_login {
5151
enabled = true
5252
threshold = 2
53-
severity = 1
5453
}
5554
}
5655
@@ -74,7 +73,6 @@ resource "sysdig_secure_aws_ml_policy" "sample" {
7473
anomalous_console_login {
7574
enabled = true
7675
threshold = 2
77-
severity = 1
7876
}
7977
}
8078

sysdig/resource_sysdig_secure_cloud_auth_account.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,10 @@ func componentsToResourceData(components []*cloudauth.AccountComponent) []map[st
523523
diag.FromErr(err)
524524
}
525525
var gcpKeyBytesBuffer bytes.Buffer
526-
json.Indent(&gcpKeyBytesBuffer, gcpKeyBytes, "", " ")
526+
err = json.Indent(&gcpKeyBytesBuffer, gcpKeyBytes, "", " ")
527+
if err != nil {
528+
diag.FromErr(err)
529+
}
527530
gcpKeyBytes = append(gcpKeyBytesBuffer.Bytes(), '\n')
528531
}
529532
spGcpBytes, err := json.Marshal(&internalServicePrincipalMetadata{
@@ -572,7 +575,10 @@ func getComponentMetadataString(message protoreflect.ProtoMessage) string {
572575
}
573576
// re-marshal through encoding/json to get consistent key ordering, avoiding diff errors with TF internals
574577
metadataMap := make(map[string]interface{})
575-
json.Unmarshal(protoJsonMessage, &metadataMap)
578+
err = json.Unmarshal(protoJsonMessage, &metadataMap)
579+
if err != nil {
580+
diag.FromErr(err)
581+
}
576582
jsonMessage, err := json.Marshal(metadataMap)
577583
if err != nil {
578584
diag.FromErr(err)

sysdig/resource_sysdig_secure_ml_policy_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ resource "sysdig_secure_ml_policy" "sample" {
5050
cryptomining_trigger {
5151
enabled = true
5252
threshold = 2
53-
severity = 1
5453
}
5554
}
5655
@@ -74,7 +73,6 @@ resource "sysdig_secure_ml_policy" "sample" {
7473
cryptomining_trigger {
7574
enabled = true
7675
threshold = 2
77-
severity = 1
7876
}
7977
}
8078

0 commit comments

Comments
 (0)