diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index aa556c808499e..82eb9c265c9d4 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -337,7 +337,22 @@ func (g *GRPCServer) CreateAuditStream(stream authpb.AuthService_CreateAuditStre setter := &events.NoOpPreparer{} start := time.Now() preparedEvent, _ := setter.PrepareSessionEvent(event) - err = eventStream.RecordEvent(stream.Context(), preparedEvent) + var errors []error + errors = append(errors, eventStream.RecordEvent(stream.Context(), preparedEvent)) + + // v13 clients expect this request to also emit the event, so emit here + // just for them. + switch event.GetType() { + // Don't emit really verbose events. + case events.ResizeEvent, events.SessionDiskEvent, events.SessionPrintEvent, events.AppSessionRequestEvent, "": + default: + clientVersion, versionExists := metadata.ClientVersionFromContext(stream.Context()) + if versionExists && semver.New(clientVersion).Major <= 13 { + errors = append(errors, auth.EmitAuditEvent(stream.Context(), event)) + } + } + + err = trace.NewAggregate(errors...) if err != nil { switch { case events.IsPermanentEmitError(err): @@ -348,7 +363,7 @@ func (g *GRPCServer) CreateAuditStream(stream authpb.AuthService_CreateAuditStre return trace.Wrap(err) } } - event.Size() + processed += int64(event.Size()) seconds := time.Since(streamStart) / time.Second counter++