From 08db2212396324b619f6248302296ae24c5e06cc Mon Sep 17 00:00:00 2001 From: Abin Simon Date: Fri, 8 Apr 2022 15:14:52 +0530 Subject: [PATCH] Create audit logs for partner and oidc provider --- pkg/service/audit_utils.go | 41 +++++++++++++++++++++++++++++++++++- pkg/service/oidc_provider.go | 6 ++++++ pkg/service/partner.go | 6 ++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/pkg/service/audit_utils.go b/pkg/service/audit_utils.go index 464b269..dd77098 100644 --- a/pkg/service/audit_utils.go +++ b/pkg/service/audit_utils.go @@ -247,6 +247,25 @@ func CreateProjectAuditEvent(ctx context.Context, al *zap.Logger, action string, } } +func CreatePartnerAuditEvent(ctx context.Context, al *zap.Logger, action string, name string, id uuid.UUID) { + sd, ok := GetSessionDataFromContext(ctx) + if !ok { + _log.Warn("unable to create audit event: could not fetch info from context") + return + } + + detail := &audit.EventDetail{ + Message: fmt.Sprintf("Partner %s %sd", name, action), + Meta: map[string]string{ + "partner_id": id.String(), + "partner_name": name, + }, + } + if err := audit.CreateV1Event(al, sd, detail, fmt.Sprintf("partner.%s.success", action), id.String()); err != nil { + _log.Warn("unable to create audit event", err) + } +} + func CreateOrganizationAuditEvent(ctx context.Context, al *zap.Logger, action string, name string, id uuid.UUID, settingsBefore, settingsAfter *systemv3.OrganizationSettings) { sd, ok := GetSessionDataFromContext(ctx) if !ok { @@ -341,12 +360,32 @@ func CreateIdpAuditEvent(ctx context.Context, al *zap.Logger, action string, nam "idp_name": name, }, } - // TODO: it is idp.config.created in rcloud + // idp.create.success is idp.config.created in rcloud if err := audit.CreateV1Event(al, sd, detail, fmt.Sprintf("idp.%s.success", action), ""); err != nil { _log.Warn("unable to create audit event", err) } } +func CreateOidcAuditEvent(ctx context.Context, al *zap.Logger, action string, name string, id uuid.UUID) { + sd, ok := GetSessionDataFromContext(ctx) + if !ok { + _log.Warn("unable to create audit event: could not fetch info from context") + return + } + + detail := &audit.EventDetail{ + Message: fmt.Sprintf("Oidc %s %sd", name, action), + Meta: map[string]string{ + "oidc_id": id.String(), + "oidc_name": name, + }, + } + + if err := audit.CreateV1Event(al, sd, detail, fmt.Sprintf("oidc.%s.success", action), ""); err != nil { + _log.Warn("unable to create audit event", err) + } +} + func CreateApiKeyAuditEvent(ctx context.Context, al *zap.Logger, action string, id string) { sd, ok := GetSessionDataFromContext(ctx) if !ok { diff --git a/pkg/service/oidc_provider.go b/pkg/service/oidc_provider.go index 8501f17..d01b9f1 100644 --- a/pkg/service/oidc_provider.go +++ b/pkg/service/oidc_provider.go @@ -154,6 +154,8 @@ func (s *oidcProvider) Create(ctx context.Context, provider *systemv3.OIDCProvid CallbackUrl: generateCallbackUrl(entity.Id.String(), s.kratosUrl), }, } + + CreateOidcAuditEvent(ctx, s.al, AuditActionCreate, rv.GetMetadata().GetName(), entity.Id) return rv, nil } @@ -376,6 +378,8 @@ func (s *oidcProvider) Update(ctx context.Context, provider *systemv3.OIDCProvid CallbackUrl: generateCallbackUrl(provider.GetMetadata().GetId(), s.kratosUrl), }, } + + CreateOidcAuditEvent(ctx, s.al, AuditActionUpdate, rv.GetMetadata().GetName(), entity.Id) return rv, nil } @@ -394,5 +398,7 @@ func (s *oidcProvider) Delete(ctx context.Context, provider *systemv3.OIDCProvid if err != nil { return err } + + CreateOidcAuditEvent(ctx, s.al, AuditActionDelete, name, entity.Id) return nil } diff --git a/pkg/service/partner.go b/pkg/service/partner.go index 1a180b3..375125a 100644 --- a/pkg/service/partner.go +++ b/pkg/service/partner.go @@ -78,6 +78,8 @@ func (s *partnerService) Create(ctx context.Context, partner *systemv3.Partner) //update v3 spec partner.Metadata.Id = createdPartner.ID.String() partner.Metadata.ModifiedAt = timestamppb.New(createdPartner.ModifiedAt) + + CreatePartnerAuditEvent(ctx, s.al, AuditActionCreate, partner.GetMetadata().GetName(), createdPartner.ID) } return partner, nil @@ -244,6 +246,8 @@ func (s *partnerService) Update(ctx context.Context, partner *systemv3.Partner) //update metadata and status partner.Metadata.ModifiedAt = timestamppb.New(part.ModifiedAt) + CreatePartnerAuditEvent(ctx, s.al, AuditActionUpdate, partner.GetMetadata().GetName(), part.ID) + } return partner, nil @@ -260,6 +264,8 @@ func (s *partnerService) Delete(ctx context.Context, partner *systemv3.Partner) if err != nil { return &systemv3.Partner{}, err } + + CreatePartnerAuditEvent(ctx, s.al, AuditActionDelete, partner.GetMetadata().GetName(), part.ID) return partner, nil }