Skip to content

Commit 9e37185

Browse files
mbpavanpipelines-as-code[bot]
authored andcommitted
adding logs whenever client uses token which is security best practice
1 parent 313ace7 commit 9e37185

File tree

10 files changed

+36
-5
lines changed

10 files changed

+36
-5
lines changed

pkg/provider/bitbucketcloud/bitbucket.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,16 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, event *info.Eve
203203
return fmt.Errorf("no git_provider.user has been in repo crd")
204204
}
205205
v.bbClient = bitbucket.NewBasicAuth(event.Provider.User, event.Provider.Token)
206+
// Added log for security audit purposes to log client access when a token is used
207+
v.Logger.Infof("bitbucket-cloud: initialized client with provided token for user=%s", event.Provider.User)
208+
206209
v.Token = &event.Provider.Token
207210
v.Username = &event.Provider.User
208211
v.run = run
209212
v.eventEmitter = eventEmitter
210213
v.repo = repo
211214
v.triggerEvent = event.EventType
215+
212216
return nil
213217
}
214218

pkg/provider/bitbucketcloud/bitbucket_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ func TestSetClient(t *testing.T) {
137137
for _, tt := range tests {
138138
t.Run(tt.name, func(t *testing.T) {
139139
ctx, _ := rtesting.SetupFakeContext(t)
140-
v := Provider{}
140+
observer, _ := zapobserver.New(zap.InfoLevel)
141+
logger := zap.New(observer).Sugar()
142+
v := Provider{Logger: logger}
141143
err := v.SetClient(ctx, nil, tt.event, nil, nil)
142144
if tt.wantErrSubstr != "" {
143145
assert.ErrorContains(t, err, tt.wantErrSubstr)

pkg/provider/bitbucketdatacenter/bitbucketdatacenter.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,9 @@ func (v *Provider) SetClient(ctx context.Context, run *params.Run, event *info.E
307307
},
308308
}
309309
v.client = client
310+
311+
// Added for security audit purposes to log client access when a token is used
312+
v.Logger.Infof("bitbucket-datacenter: initialized client with provided token for user=%s providerURL=%s", event.Provider.User, event.Provider.URL)
310313
}
311314
v.run = run
312315
v.repo = repo

pkg/provider/bitbucketdatacenter/bitbucketdatacenter_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,13 +362,15 @@ func TestSetClient(t *testing.T) {
362362
}
363363
for _, tt := range tests {
364364
t.Run(tt.name, func(t *testing.T) {
365+
observer, _ := zapobserver.New(zap.InfoLevel)
366+
logger := zap.New(observer).Sugar()
365367
ctx, _ := rtesting.SetupFakeContext(t)
366368
client, mux, tearDown, tURL := bbtest.SetupBBDataCenterClient()
367369
defer tearDown()
368370
if tt.muxUser != nil {
369371
mux.HandleFunc("/users/foo", tt.muxUser)
370372
}
371-
v := &Provider{client: client, baseURL: tURL}
373+
v := &Provider{client: client, baseURL: tURL, Logger: logger}
372374
err := v.SetClient(ctx, nil, tt.opts, nil, nil)
373375
if tt.wantErrSubstr != "" {
374376
assert.ErrorContains(t, err, tt.wantErrSubstr)

pkg/provider/gitea/gitea.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, runevent *info.
159159
if err != nil {
160160
return err
161161
}
162+
163+
// Added log for security audit purposes to log client access when a token is used
164+
v.Logger.Infof("gitea: initialized API client with provided credentials user=%s providerURL=%s", runevent.Provider.User, apiURL)
165+
162166
v.giteaInstanceURL = runevent.Provider.URL
163167
v.eventEmitter = emitter
164168
v.repo = repo

pkg/provider/github/github.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,13 @@ func (v *Provider) SetClient(ctx context.Context, run *params.Run, event *info.E
301301
return fmt.Errorf("no github client has been initialized")
302302
}
303303

304+
// Added log for security audit purposes to log client access when a token is used
305+
integration := "github-webhook"
306+
if event.InstallationID != 0 {
307+
integration = "github-app"
308+
}
309+
v.Logger.Infof(integration+": initialized OAuth2 client for providerName=%s providerURL=%s", v.providerName, event.Provider.URL)
310+
304311
v.APIURL = apiURL
305312

306313
if event.Provider.WebhookSecretFromRepo {

pkg/provider/github/github_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,9 @@ func TestGithubSetClient(t *testing.T) {
663663
for _, tt := range tests {
664664
t.Run(tt.name, func(t *testing.T) {
665665
ctx, _ := rtesting.SetupFakeContext(t)
666-
v := Provider{}
666+
observer, _ := zapobserver.New(zap.InfoLevel)
667+
logger := zap.New(observer).Sugar()
668+
v := Provider{Logger: logger}
667669
err := v.SetClient(ctx, nil, tt.event, nil, nil)
668670
assert.NilError(t, err)
669671
assert.Equal(t, tt.expectedURL, *v.APIURL)

pkg/provider/gitlab/gitlab.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ func (v *Provider) SetClient(_ context.Context, run *params.Run, runevent *info.
201201
}
202202
v.Token = &runevent.Provider.Token
203203

204+
v.Logger.Infof("gitlab: initialized for client with token for apiURL=%s, org=%s, repo=%s)", apiURL, runevent.Organization, runevent.Repository)
204205
// In a scenario where the source repository is forked and a merge request (MR) is created on the upstream
205206
// repository, runevent.SourceProjectID will not be 0 when SetClient is called from the pac-watcher code.
206207
// This is because, in the controller, SourceProjectID is set in the annotation of the pull request,

pkg/provider/gitlab/gitlab_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,14 @@ func TestGetConfig(t *testing.T) {
260260

261261
func TestSetClient(t *testing.T) {
262262
ctx, _ := rtesting.SetupFakeContext(t)
263+
observer, _ := zapobserver.New(zap.InfoLevel)
264+
fakelogger := zap.New(observer).Sugar()
263265
v := &Provider{}
264266
assert.Assert(t, v.SetClient(ctx, nil, info.NewEvent(), nil, nil) != nil)
265267

266268
client, _, tearDown := thelp.Setup(t)
267269
defer tearDown()
268-
vv := &Provider{gitlabClient: client}
270+
vv := &Provider{gitlabClient: client, Logger: fakelogger}
269271
err := vv.SetClient(ctx, nil, &info.Event{
270272
Provider: &info.Provider{
271273
Token: "hello",
@@ -277,6 +279,8 @@ func TestSetClient(t *testing.T) {
277279

278280
func TestSetClientDetectAPIURL(t *testing.T) {
279281
ctx, _ := rtesting.SetupFakeContext(t)
282+
observer, _ := zapobserver.New(zap.InfoLevel)
283+
fakelogger := zap.New(observer).Sugar()
280284
mockClient, _, tearDown := thelp.Setup(t)
281285
defer tearDown()
282286

@@ -381,6 +385,7 @@ func TestSetClientDetectAPIURL(t *testing.T) {
381385
gitlabClient: mockClient, // Use the shared mock client
382386
repoURL: tc.repoURL,
383387
pathWithNamespace: tc.pathWithNamespace,
388+
Logger: fakelogger,
384389
}
385390
event := info.NewEvent()
386391
event.Provider.Token = tc.providerToken

pkg/reconciler/reconciler_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ func TestReconciler_ReconcileKind(t *testing.T) {
6666
defer teardown()
6767

6868
vcx := &ghprovider.Provider{
69-
Token: github.Ptr("None"),
69+
Token: github.Ptr("None"),
70+
Logger: fakelogger,
7071
}
7172

7273
vcx.SetGithubClient(fakeclient)

0 commit comments

Comments
 (0)