Skip to content

Commit b8fc35f

Browse files
authored
Pass project key to all XSC services to fix project scope token permissions bug (jfrog#593)
1 parent a7b6429 commit b8fc35f

File tree

16 files changed

+50
-35
lines changed

16 files changed

+50
-35
lines changed

cli/gitcommands.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func GitAuditCmd(c *components.Context) error {
8787
sbomGenerator, scaScanStrategy := getScanDynamicLogic(c)
8888
gitAuditCmd.SetSbomGenerator(sbomGenerator).SetScaScanStrategy(scaScanStrategy)
8989
// Run the command with progress bar if needed, Reporting error if Xsc service is enabled
90-
return reportErrorIfExists(xrayVersion, xscVersion, serverDetails, progressbar.ExecWithProgress(gitAuditCmd))
90+
return reportErrorIfExists(xrayVersion, xscVersion, serverDetails, gitAuditCmd.GetProjectKey(), progressbar.ExecWithProgress(gitAuditCmd))
9191
}
9292

9393
func GetCountContributorsParams(c *components.Context) (*contributors.CountContributorsParams, error) {

cli/scancommands.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ func AuditCmd(c *components.Context) error {
413413
}
414414
auditCmd.SetThreads(threads)
415415
// Reporting error if Xsc service is enabled
416-
return reportErrorIfExists(xrayVersion, xscVersion, serverDetails, progressbar.ExecWithProgress(auditCmd))
416+
return reportErrorIfExists(xrayVersion, xscVersion, serverDetails, auditCmd.GetProjectKey(), progressbar.ExecWithProgress(auditCmd))
417417
}
418418

419419
func CreateAuditCmd(c *components.Context) (string, string, *coreConfig.ServerDetails, *audit.AuditCommand, error) {
@@ -507,7 +507,7 @@ func AuditSpecificCmd(c *components.Context, technology techutils.Technology) er
507507
technologies := []string{string(technology)}
508508
auditCmd.SetTechnologies(technologies)
509509
// Reporting error if Xsc service is enabled
510-
return reportErrorIfExists(xrayVersion, xscVersion, serverDetails, progressbar.ExecWithProgress(auditCmd))
510+
return reportErrorIfExists(xrayVersion, xscVersion, serverDetails, auditCmd.GetProjectKey(), progressbar.ExecWithProgress(auditCmd))
511511
}
512512

513513
func CurationCmd(c *components.Context) error {

cli/utils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,11 @@ func shouldAddSubScan(subScan utils.SubScanType, c *components.Context) bool {
9090
(subScan == utils.ContextualAnalysisScan && c.GetBoolFlagValue(flags.Sca) && !c.GetBoolFlagValue(flags.WithoutCA)) || (subScan == utils.SecretTokenValidationScan && c.GetBoolFlagValue(flags.Secrets) && c.GetBoolFlagValue(flags.SecretValidation))
9191
}
9292

93-
func reportErrorIfExists(xrayVersion, xscVersion string, serverDetails *coreConfig.ServerDetails, err error) error {
93+
func reportErrorIfExists(xrayVersion, xscVersion string, serverDetails *coreConfig.ServerDetails, projectKey string, err error) error {
9494
if err == nil || !usage.ShouldReportUsage() {
9595
return err
9696
}
97-
if reportError := xsc.ReportError(xrayVersion, xscVersion, serverDetails, err, "cli"); reportError != nil {
97+
if reportError := xsc.ReportError(xrayVersion, xscVersion, serverDetails, err, "cli", projectKey); reportError != nil {
9898
log.Debug("failed to report error log:" + reportError.Error())
9999
}
100100
return err

commands/audit/audit.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ func (auditCmd *AuditCommand) SetProject(project string) *AuditCommand {
7373
return auditCmd
7474
}
7575

76+
func (auditCmd *AuditCommand) GetProjectKey() string {
77+
return auditCmd.projectKey
78+
}
79+
7680
func (auditCmd *AuditCommand) SetTargetRepoPath(repoPath string) *AuditCommand {
7781
auditCmd.targetRepoPath = repoPath
7882
return auditCmd
@@ -128,7 +132,7 @@ func CreateAuditResultsContext(serverDetails *config.ServerDetails, xrayVersion
128132
return
129133
}
130134
// Get the defined and active watches from the platform.
131-
manager, err := xsc.CreateXscService(serverDetails)
135+
manager, err := xsc.CreateXscService(serverDetails, xrayutils.WithScopedProjectKey(projectKey))
132136
if err != nil {
133137
log.Warn(fmt.Sprintf("Failed to create Xray services manager: %s", err.Error()))
134138
return
@@ -178,6 +182,7 @@ func (auditCmd *AuditCommand) Run() (err error) {
178182
auditCmd.GetXscVersion(),
179183
serverDetails,
180184
xsc.CreateAnalyticsEvent(xscservices.CliProduct, xscservices.CliEventType, serverDetails),
185+
auditCmd.projectKey,
181186
)
182187

183188
auditParams := NewAuditParams().

commands/git/audit/gitaudit.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ func RunGitAudit(params GitAuditParams) (scanResults *results.SecurityCommandRes
119119
params.xscVersion,
120120
params.serverDetails,
121121
event,
122+
params.GetProjectKey(),
122123
)
123124
params.multiScanId = multiScanId
124125
params.startTime = startTime

commands/git/audit/gitauditparams.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ func (gap *GitAuditParams) SetProjectKey(project string) *GitAuditParams {
5757
return gap
5858
}
5959

60+
func (gap *GitAuditParams) GetProjectKey() string {
61+
return gap.resultsContext.ProjectKey
62+
}
63+
6064
func (gap *GitAuditParams) SetFailBuild(failBuild bool) *GitAuditParams {
6165
gap.failBuild = failBuild
6266
return gap

commands/scan/dockerscan.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ func (dsc *DockerScanCommand) Run() (err error) {
7878
dsc.xscVersion,
7979
dsc.serverDetails,
8080
xsc.CreateAnalyticsEvent(xscservices.CliProduct, xscservices.CliEventType, dsc.serverDetails),
81+
dsc.resultsContext.ProjectKey,
8182
)
8283

8384
dsc.SetSpec(spec.NewBuilder().

go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ require (
1212
github.com/hashicorp/go-hclog v1.6.3
1313
github.com/hashicorp/go-plugin v1.6.3
1414
github.com/jfrog/build-info-go v1.12.0
15-
github.com/jfrog/froggit-go v1.20.3
15+
github.com/jfrog/froggit-go v1.20.4
1616
github.com/jfrog/gofrog v1.7.6
1717
github.com/jfrog/jfrog-apps-config v1.0.1
18-
github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251017072454-f83a03ee98d6
19-
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251015045218-1a38c9e47097
20-
github.com/jfrog/jfrog-client-go v1.55.1-0.20251015041910-ef0fe832b111
18+
github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251021143342-49bab7f38cec
19+
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251023084247-a56afca52451
20+
github.com/jfrog/jfrog-client-go v1.55.1-0.20251023073119-78f187c9afbf
2121
github.com/magiconair/properties v1.8.10
2222
github.com/owenrumney/go-sarif/v3 v3.2.3
2323
github.com/package-url/packageurl-go v0.1.3

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,18 +130,18 @@ github.com/jfrog/archiver/v3 v3.6.1 h1:LOxnkw9pOn45DzCbZNFV6K0+6dCsQ0L8mR3ZcujO5
130130
github.com/jfrog/archiver/v3 v3.6.1/go.mod h1:VgR+3WZS4N+i9FaDwLZbq+jeU4B4zctXL+gL4EMzfLw=
131131
github.com/jfrog/build-info-go v1.12.0 h1:/abBQdIxrkYjOwO79sIL0p+XPnMCCtKhiWToHKXXqHg=
132132
github.com/jfrog/build-info-go v1.12.0/go.mod h1:szdz9+WzB7+7PGnILLUgyY+OF5qD5geBT7UGNIxibyw=
133-
github.com/jfrog/froggit-go v1.20.3 h1:U3HHT0+AEHUVSSyQBbagQR4fLRqGqzSptPujDZuuDTk=
134-
github.com/jfrog/froggit-go v1.20.3/go.mod h1:obSG1SlsWjktkuqmKtpq7MNTTL63e0ot+ucTnlOMV88=
133+
github.com/jfrog/froggit-go v1.20.4 h1:N9XkNV00HNjpI8p6xXlF9DrWmvE9hz3z2XRDAYJDweQ=
134+
github.com/jfrog/froggit-go v1.20.4/go.mod h1:obSG1SlsWjktkuqmKtpq7MNTTL63e0ot+ucTnlOMV88=
135135
github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s=
136136
github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4=
137137
github.com/jfrog/jfrog-apps-config v1.0.1 h1:mtv6k7g8A8BVhlHGlSveapqf4mJfonwvXYLipdsOFMY=
138138
github.com/jfrog/jfrog-apps-config v1.0.1/go.mod h1:8AIIr1oY9JuH5dylz2S6f8Ym2MaadPLR6noCBO4C22w=
139-
github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251017072454-f83a03ee98d6 h1:k+L1EByW0oAjbl2GzBKpPjQ/V9HV/22WfXqR+opegnk=
140-
github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251017072454-f83a03ee98d6/go.mod h1:nT050Wb18tTlfcQHefyMENzFOz9Vdym6WP0Z3Nc2qHc=
141-
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251015045218-1a38c9e47097 h1:+W6BPxJ0nPtlQ6l6nmypW1eEANoVPiN8HDR4kQJA8uI=
142-
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251015045218-1a38c9e47097/go.mod h1:UOeOwEEmRIi57cRwghN5OBVoqkJieYQQfLpeqw8Yv38=
143-
github.com/jfrog/jfrog-client-go v1.55.1-0.20251015041910-ef0fe832b111 h1:IBkggQwQi7D4+vafA3f8aHSrgZ89bMdlMffmNQfjuLw=
144-
github.com/jfrog/jfrog-client-go v1.55.1-0.20251015041910-ef0fe832b111/go.mod h1:jrODQbAbCt97F24d/0bYpqpdc0PFMuBxNJOTfTdW+Fk=
139+
github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251021143342-49bab7f38cec h1:iB5bXWKvzNejqyUgqxKf8YNj+DBx1suf2r2KzI03wkU=
140+
github.com/jfrog/jfrog-cli-artifactory v0.7.3-0.20251021143342-49bab7f38cec/go.mod h1:JE/35+kU8cBET4I4iuNcVBvhm8SF64DAmGgtHRzf5Do=
141+
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251023084247-a56afca52451 h1:Q0PY8VSOVsfvXzKiUnn+Rv7Ynf901QW6Wn1CbWpHBD0=
142+
github.com/jfrog/jfrog-cli-core/v2 v2.60.1-0.20251023084247-a56afca52451/go.mod h1:UOeOwEEmRIi57cRwghN5OBVoqkJieYQQfLpeqw8Yv38=
143+
github.com/jfrog/jfrog-client-go v1.55.1-0.20251023073119-78f187c9afbf h1:Ld+lGdCauixqWbkwK+wJn3QbPPBRgY35KgY+MxgrgCg=
144+
github.com/jfrog/jfrog-client-go v1.55.1-0.20251023073119-78f187c9afbf/go.mod h1:jrODQbAbCt97F24d/0bYpqpdc0PFMuBxNJOTfTdW+Fk=
145145
github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c=
146146
github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo=
147147
github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=

utils/xsc/analyticsmetrics.go

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

88
"github.com/jfrog/jfrog-cli-security/utils"
9+
"github.com/jfrog/jfrog-cli-security/utils/xray"
910

1011
"github.com/jfrog/jfrog-cli-core/v2/utils/config"
1112
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
@@ -35,12 +36,12 @@ func CreateAnalyticsEvent(product xscservices.ProductName, eventType xscservices
3536
return &event
3637
}
3738

38-
func SendNewScanEvent(xrayVersion, xscVersion string, serviceDetails *config.ServerDetails, event *xscservices.XscAnalyticsGeneralEvent) (multiScanId string, startTime time.Time) {
39+
func SendNewScanEvent(xrayVersion, xscVersion string, serviceDetails *config.ServerDetails, event *xscservices.XscAnalyticsGeneralEvent, projectKey string) (multiScanId string, startTime time.Time) {
3940
if !shouldReportEvents(xscVersion) {
4041
log.Debug("Analytics metrics are disabled, skip sending event request to XSC")
4142
return
4243
}
43-
xscService, err := CreateXscServiceBackwardCompatible(xrayVersion, serviceDetails)
44+
xscService, err := CreateXscServiceBackwardCompatible(xrayVersion, serviceDetails, xray.WithScopedProjectKey(projectKey))
4445
if err != nil {
4546
log.Debug(fmt.Sprintf("failed to create xsc manager for analytics metrics service, error: %s ", err.Error()))
4647
return
@@ -62,7 +63,7 @@ func SendScanEndedEvent(xrayVersion, xscVersion string, serviceDetails *config.S
6263
return
6364
}
6465
// Generate the finalize event.
65-
xscService, err := CreateXscServiceBackwardCompatible(xrayVersion, serviceDetails)
66+
xscService, err := CreateXscServiceBackwardCompatible(xrayVersion, serviceDetails, xray.WithScopedProjectKey(resultsContext.ProjectKey))
6667
if err != nil {
6768
log.Debug(fmt.Sprintf("failed to create xsc manager for analytics metrics service, skip sending command finalize event, error: %s ", err.Error()))
6869
return
@@ -131,12 +132,12 @@ func createFinalizedEvent(cmdResults *results.SecurityCommandResults) xscservice
131132
return CreateFinalizedEvent(cmdResults.XrayVersion, cmdResults.MultiScanId, cmdResults.StartTime, getTotalFindings(cmdResults), &cmdResults.ResultContext, cmdResults.GetErrors())
132133
}
133134

134-
func GetScanEvent(xrayVersion, xscVersion, multiScanId string, serviceDetails *config.ServerDetails) (*xscservices.XscAnalyticsGeneralEvent, error) {
135+
func GetScanEvent(xrayVersion, xscVersion, multiScanId string, serviceDetails *config.ServerDetails, projectKey string) (*xscservices.XscAnalyticsGeneralEvent, error) {
135136
if !shouldReportEvents(xscVersion) {
136137
log.Debug("Can't get general event from XSC - analytics metrics are disabled.")
137138
return nil, nil
138139
}
139-
xscService, err := CreateXscServiceBackwardCompatible(xrayVersion, serviceDetails)
140+
xscService, err := CreateXscServiceBackwardCompatible(xrayVersion, serviceDetails, xray.WithScopedProjectKey(projectKey))
140141
if err != nil {
141142
log.Debug(fmt.Sprintf("failed to create xsc manager for analytics metrics service, skip getting general event, error: %s ", err.Error()))
142143
return nil, err

0 commit comments

Comments
 (0)