1
1
package workflow
2
2
3
3
import (
4
+ "encoding/json"
5
+ "log"
6
+
4
7
"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbiface"
5
8
"github.com/step-security/secure-repo/remediation/workflow/hardenrunner"
6
9
"github.com/step-security/secure-repo/remediation/workflow/permissions"
@@ -17,6 +20,7 @@ func SecureWorkflow(queryStringParams map[string]string, inputYaml string, svc d
17
20
pinActions , addHardenRunner , addPermissions , addProjectComment := true , true , true , true
18
21
pinnedActions , addedHardenRunner , addedPermissions := false , false , false
19
22
ignoreMissingKBs := false
23
+ enableLogging := false
20
24
exemptedActions , pinToImmutable := []string {}, false
21
25
if len (params ) > 0 {
22
26
if v , ok := params [0 ].([]string ); ok {
@@ -49,17 +53,42 @@ func SecureWorkflow(queryStringParams map[string]string, inputYaml string, svc d
49
53
addProjectComment = false
50
54
}
51
55
56
+ if queryStringParams ["enableLogging" ] == "true" {
57
+ enableLogging = true
58
+ }
59
+
60
+ if enableLogging {
61
+ // Log query parameters
62
+ paramsJSON , _ := json .MarshalIndent (queryStringParams , "" , " " )
63
+ log .Printf ("SecureWorkflow called with query parameters: %s" , paramsJSON )
64
+
65
+ // Log input YAML (complete)
66
+ log .Printf ("Input YAML: %s" , inputYaml )
67
+ }
68
+
52
69
secureWorkflowReponse := & permissions.SecureWorkflowReponse {FinalOutput : inputYaml , OriginalInput : inputYaml }
53
70
var err error
54
71
if addPermissions {
72
+ if enableLogging {
73
+ log .Printf ("Adding job level permissions" )
74
+ }
55
75
secureWorkflowReponse , err = permissions .AddJobLevelPermissions (secureWorkflowReponse .FinalOutput )
56
76
secureWorkflowReponse .OriginalInput = inputYaml
57
77
if err != nil {
78
+ if enableLogging {
79
+ log .Printf ("Error adding job level permissions: %v" , err )
80
+ }
58
81
return nil , err
59
82
} else {
60
83
if ! secureWorkflowReponse .HasErrors || permissions .ShouldAddWorkflowLevelPermissions (secureWorkflowReponse .JobErrors ) {
84
+ if enableLogging {
85
+ log .Printf ("Adding workflow level permissions" )
86
+ }
61
87
secureWorkflowReponse .FinalOutput , err = permissions .AddWorkflowLevelPermissions (secureWorkflowReponse .FinalOutput , addProjectComment )
62
88
if err != nil {
89
+ if enableLogging {
90
+ log .Printf ("Error adding workflow level permissions: %v" , err )
91
+ }
63
92
secureWorkflowReponse .HasErrors = true
64
93
} else {
65
94
// reset the error
@@ -69,6 +98,9 @@ func SecureWorkflow(queryStringParams map[string]string, inputYaml string, svc d
69
98
}
70
99
}
71
100
if len (secureWorkflowReponse .MissingActions ) > 0 && ! ignoreMissingKBs {
101
+ if enableLogging {
102
+ log .Printf ("Storing missing actions: %v" , secureWorkflowReponse .MissingActions )
103
+ }
72
104
StoreMissingActions (secureWorkflowReponse .MissingActions , svc )
73
105
}
74
106
}
@@ -78,24 +110,48 @@ func SecureWorkflow(queryStringParams map[string]string, inputYaml string, svc d
78
110
}
79
111
80
112
if pinActions {
113
+ if enableLogging {
114
+ log .Printf ("Pinning GitHub Actions" )
115
+ }
81
116
pinnedAction , pinnedDocker := false , false
82
117
secureWorkflowReponse .FinalOutput , pinnedAction , _ = pin .PinActions (secureWorkflowReponse .FinalOutput , exemptedActions , pinToImmutable )
83
118
secureWorkflowReponse .FinalOutput , pinnedDocker , _ = pin .PinDocker (secureWorkflowReponse .FinalOutput )
84
119
pinnedActions = pinnedAction || pinnedDocker
120
+ if enableLogging {
121
+ log .Printf ("Pinned actions: %v, Pinned docker: %v" , pinnedAction , pinnedDocker )
122
+ }
85
123
}
86
124
87
125
if addHardenRunner {
126
+ if enableLogging {
127
+ log .Printf ("Adding harden runner action" )
128
+ }
88
129
// Always pin harden-runner unless exempted
89
130
pinHardenRunner := true
90
131
if pin .ActionExists (HardenRunnerActionPath , exemptedActions ) {
91
132
pinHardenRunner = false
133
+ if enableLogging {
134
+ log .Printf ("Harden runner action is exempted from pinning" )
135
+ }
92
136
}
93
137
secureWorkflowReponse .FinalOutput , addedHardenRunner , _ = hardenrunner .AddAction (secureWorkflowReponse .FinalOutput , HardenRunnerActionPathWithTag , pinHardenRunner , pinToImmutable )
138
+ if enableLogging {
139
+ log .Printf ("Added harden runner: %v" , addedHardenRunner )
140
+ }
94
141
}
95
142
96
143
// Setting appropriate flags
97
144
secureWorkflowReponse .PinnedActions = pinnedActions
98
145
secureWorkflowReponse .AddedHardenRunner = addedHardenRunner
99
146
secureWorkflowReponse .AddedPermissions = addedPermissions
147
+
148
+ if enableLogging {
149
+ log .Printf ("SecureWorkflow complete - PinnedActions: %v, AddedHardenRunner: %v, AddedPermissions: %v, HasErrors: %v" ,
150
+ secureWorkflowReponse .PinnedActions ,
151
+ secureWorkflowReponse .AddedHardenRunner ,
152
+ secureWorkflowReponse .AddedPermissions ,
153
+ secureWorkflowReponse .HasErrors )
154
+ }
155
+
100
156
return secureWorkflowReponse , nil
101
157
}
0 commit comments