@@ -18,13 +18,13 @@ const (
1818)
1919
2020func SecureWorkflow (queryStringParams map [string ]string , inputYaml string , svc dynamodbiface.DynamoDBAPI , params ... interface {}) (* permissions.SecureWorkflowReponse , error ) {
21- pinActions , addHardenRunner , addPermissions , addProjectComment , replaceMaintainedActions := true , true , true , true , false
22- pinnedActions , addedHardenRunner , addedPermissions , replacedMaintainedActions := false , false , false , false
21+ pinActions , addHardenRunner , addPermissions , addProjectComment , replaceMaintainedActions , useActionCommitMap := true , true , true , true , false , false
22+ pinnedActions , addedHardenRunner , addedPermissions , replacedMaintainedActions , usedActionCommitMap := false , false , false , false , false
2323 ignoreMissingKBs := false
2424 enableLogging := false
2525 addEmptyTopLevelPermissions := false
2626 skipHardenRunnerForContainers := false
27- exemptedActions , pinToImmutable , maintainedActionsMap := []string {}, false , map [string ]string {}
27+ exemptedActions , pinToImmutable , maintainedActionsMap , actionCommitMap := []string {}, false , map [ string ] string {} , map [string ]string {}
2828
2929 if len (params ) > 0 {
3030 if v , ok := params [0 ].([]string ); ok {
@@ -41,6 +41,11 @@ func SecureWorkflow(queryStringParams map[string]string, inputYaml string, svc d
4141 maintainedActionsMap = v
4242 }
4343 }
44+ if len (params ) > 3 {
45+ if v , ok := params [3 ].(map [string ]string ); ok {
46+ actionCommitMap = v
47+ }
48+ }
4449
4550 if queryStringParams ["pinActions" ] == "false" {
4651 pinActions = false
@@ -138,12 +143,22 @@ func SecureWorkflow(queryStringParams map[string]string, inputYaml string, svc d
138143 }
139144 }
140145
146+ if useActionCommitMap {
147+ if enableLogging {
148+ log .Printf ("Using action commit map" )
149+ }
150+ secureWorkflowReponse .FinalOutput , usedActionCommitMap , err = pin .PinActions (secureWorkflowReponse .FinalOutput , []string {}, false , actionCommitMap )
151+ if err != nil {
152+ log .Printf ("Error pinning actions using commit map: %v" , err )
153+ secureWorkflowReponse .HasErrors = true
154+ }
155+ }
141156 if pinActions {
142157 if enableLogging {
143158 log .Printf ("Pinning GitHub Actions" )
144159 }
145160 pinnedAction , pinnedDocker := false , false
146- secureWorkflowReponse .FinalOutput , pinnedAction , _ = pin .PinActions (secureWorkflowReponse .FinalOutput , exemptedActions , pinToImmutable )
161+ secureWorkflowReponse .FinalOutput , pinnedAction , _ = pin .PinActions (secureWorkflowReponse .FinalOutput , exemptedActions , pinToImmutable , nil )
147162 secureWorkflowReponse .FinalOutput , pinnedDocker , _ = pin .PinDocker (secureWorkflowReponse .FinalOutput )
148163 pinnedActions = pinnedAction || pinnedDocker
149164 if enableLogging {
@@ -174,12 +189,15 @@ func SecureWorkflow(queryStringParams map[string]string, inputYaml string, svc d
174189 secureWorkflowReponse .AddedHardenRunner = addedHardenRunner
175190 secureWorkflowReponse .AddedPermissions = addedPermissions
176191 secureWorkflowReponse .AddedMaintainedActions = replacedMaintainedActions
192+ secureWorkflowReponse .UsedActionCommitMap = usedActionCommitMap
177193
178194 if enableLogging {
179- log .Printf ("SecureWorkflow complete - PinnedActions: %v, AddedHardenRunner: %v, AddedPermissions: %v, HasErrors: %v" ,
195+ log .Printf ("SecureWorkflow complete - PinnedActions: %v, AddedHardenRunner: %v, AddedPermissions: %v, AddedMaintainedActions: %v, UsedActionCommitMap: %v, HasErrors: %v" ,
180196 secureWorkflowReponse .PinnedActions ,
181197 secureWorkflowReponse .AddedHardenRunner ,
182198 secureWorkflowReponse .AddedPermissions ,
199+ secureWorkflowReponse .AddedMaintainedActions ,
200+ secureWorkflowReponse .UsedActionCommitMap ,
183201 secureWorkflowReponse .HasErrors )
184202 }
185203
0 commit comments