From ccb074b27ba89515bc24cafdb8140d9d59637b67 Mon Sep 17 00:00:00 2001 From: Gabriel Corado Date: Fri, 31 Jan 2025 09:54:45 -0300 Subject: [PATCH] feat(usagereporter): add user agent to database session start usage event (#51591) --- lib/usagereporter/teleport/audit.go | 1 + lib/usagereporter/teleport/audit_test.go | 39 ++++++++++++++++++++++++ lib/usagereporter/teleport/types.go | 1 + 3 files changed, 41 insertions(+) diff --git a/lib/usagereporter/teleport/audit.go b/lib/usagereporter/teleport/audit.go index a1108374bb3fc..b492b40a56855 100644 --- a/lib/usagereporter/teleport/audit.go +++ b/lib/usagereporter/teleport/audit.go @@ -110,6 +110,7 @@ func ConvertAuditEvent(event apievents.AuditEvent) Anonymizable { DbType: e.DatabaseType, DbProtocol: e.DatabaseProtocol, DbOrigin: e.DatabaseOrigin, + UserAgent: e.UserAgent, }, UserKind: prehogUserKindFromEventKind(e.UserKind), } diff --git a/lib/usagereporter/teleport/audit_test.go b/lib/usagereporter/teleport/audit_test.go index 982b046b54d1a..4a63f10b13615 100644 --- a/lib/usagereporter/teleport/audit_test.go +++ b/lib/usagereporter/teleport/audit_test.go @@ -238,6 +238,45 @@ func TestConvertAuditEvent(t *testing.T) { }, }, }, + { + desc: "DatabaseSessionStart", + event: &apievents.DatabaseSessionStart{ + UserMetadata: apievents.UserMetadata{User: "alice"}, + DatabaseMetadata: apievents.DatabaseMetadata{ + DatabaseService: "postgres-local", + DatabaseProtocol: "postgres", + DatabaseName: "postgres", + DatabaseUser: "alice", + DatabaseType: "self-hosted", + DatabaseOrigin: "config-file", + }, + ClientMetadata: apievents.ClientMetadata{UserAgent: "psql"}, + }, + expected: &SessionStartEvent{ + SessionType: string(types.DatabaseSessionKind), + Database: &prehogv1a.SessionStartDatabaseMetadata{ + DbType: "self-hosted", + DbProtocol: "postgres", + DbOrigin: "config-file", + UserAgent: "psql", + }, + UserName: "alice", + }, + expectedAnonymized: &prehogv1a.SubmitEventRequest{ + Event: &prehogv1a.SubmitEventRequest_SessionStartV2{ + SessionStartV2: &prehogv1a.SessionStartEvent{ + SessionType: string(types.DatabaseSessionKind), + Database: &prehogv1a.SessionStartDatabaseMetadata{ + DbType: "self-hosted", + DbProtocol: "postgres", + DbOrigin: "config-file", + UserAgent: "psql", + }, + UserName: anonymizer.AnonymizeString("alice"), + }, + }, + }, + }, } for _, tt := range cases { diff --git a/lib/usagereporter/teleport/types.go b/lib/usagereporter/teleport/types.go index 3b783f73b55e1..57ac851f8792c 100644 --- a/lib/usagereporter/teleport/types.go +++ b/lib/usagereporter/teleport/types.go @@ -105,6 +105,7 @@ func (u *SessionStartEvent) Anonymize(a utils.Anonymizer) prehogv1a.SubmitEventR DbType: u.Database.DbType, DbProtocol: u.Database.DbProtocol, DbOrigin: u.Database.DbOrigin, + UserAgent: u.Database.UserAgent, } } if u.Desktop != nil {