Skip to content

Commit bfb4917

Browse files
committed
split audit logs into two: - get session credentials - start session
1 parent 39aa338 commit bfb4917

File tree

5 files changed

+36
-6
lines changed

5 files changed

+36
-6
lines changed

backend/src/ee/routes/v1/pam-session-router.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,37 @@ export const registerPamSessionRouter = async (server: FastifyZodProvider) => {
4141
},
4242
onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN]),
4343
handler: async (req) => {
44-
const { credentials, projectId, account } = await server.services.pamAccount.getSessionCredentials(
45-
req.params.sessionId,
46-
req.permission
47-
);
44+
const { credentials, projectId, account, sessionStarted } =
45+
await server.services.pamAccount.getSessionCredentials(req.params.sessionId, req.permission);
4846

4947
await server.services.auditLog.createAuditLog({
5048
...req.auditLogInfo,
5149
orgId: req.permission.orgId,
5250
projectId,
5351
event: {
54-
type: EventType.PAM_SESSION_START,
52+
type: EventType.PAM_SESSION_CREDENTIALS_GET,
5553
metadata: {
5654
sessionId: req.params.sessionId,
5755
accountName: account.name
5856
}
5957
}
6058
});
6159

60+
if (sessionStarted) {
61+
await server.services.auditLog.createAuditLog({
62+
...req.auditLogInfo,
63+
orgId: req.permission.orgId,
64+
projectId,
65+
event: {
66+
type: EventType.PAM_SESSION_START,
67+
metadata: {
68+
sessionId: req.params.sessionId,
69+
accountName: account.name
70+
}
71+
}
72+
});
73+
}
74+
6275
return { credentials: credentials as z.infer<typeof SessionCredentialsSchema> };
6376
}
6477
});

backend/src/ee/services/audit-log/audit-log-types.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ export enum EventType {
535535
DASHBOARD_GET_SECRET_VALUE = "dashboard-get-secret-value",
536536
DASHBOARD_GET_SECRET_VERSION_VALUE = "dashboard-get-secret-version-value",
537537

538+
PAM_SESSION_CREDENTIALS_GET = "pam-session-credentials-get",
538539
PAM_SESSION_START = "pam-session-start",
539540
PAM_SESSION_LOGS_UPDATE = "pam-session-logs-update",
540541
PAM_SESSION_END = "pam-session-end",
@@ -3978,6 +3979,14 @@ interface OrgRoleDeleteEvent {
39783979
};
39793980
}
39803981

3982+
interface PamSessionCredentialsGetEvent {
3983+
type: EventType.PAM_SESSION_CREDENTIALS_GET;
3984+
metadata: {
3985+
sessionId: string;
3986+
accountName: string;
3987+
};
3988+
}
3989+
39813990
interface PamSessionStartEvent {
39823991
type: EventType.PAM_SESSION_START;
39833992
metadata: {
@@ -4531,6 +4540,7 @@ export type Event =
45314540
| OrgRoleCreateEvent
45324541
| OrgRoleUpdateEvent
45334542
| OrgRoleDeleteEvent
4543+
| PamSessionCredentialsGetEvent
45344544
| PamSessionStartEvent
45354545
| PamSessionLogsUpdateEvent
45364546
| PamSessionEndEvent

backend/src/ee/services/pam-account/pam-account-service.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,12 +684,15 @@ export const pamAccountServiceFactory = ({
684684

685685
const decryptedResource = await decryptResource(resource, session.projectId, kmsService);
686686

687+
let sessionStarted = false;
688+
687689
// Mark session as started
688690
if (session.status === PamSessionStatus.Starting) {
689691
await pamSessionDAL.updateById(sessionId, {
690692
status: PamSessionStatus.Active,
691693
startedAt: new Date()
692694
});
695+
sessionStarted = true;
693696
}
694697

695698
return {
@@ -698,7 +701,8 @@ export const pamAccountServiceFactory = ({
698701
...decryptedAccount.credentials
699702
},
700703
projectId: project.id,
701-
account
704+
account,
705+
sessionStarted
702706
};
703707
};
704708

frontend/src/hooks/api/auditLogs/constants.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ export const eventToNameMap: { [K in EventType]: string } = {
262262
[EventType.UPDATE_IDENTITY_PROJECT_MEMBERSHIP]: "Update Identity Project Membership",
263263
[EventType.DELETE_IDENTITY_PROJECT_MEMBERSHIP]: "Delete Identity Project Membership",
264264

265+
[EventType.PAM_SESSION_CREDENTIALS_GET]: "PAM Session Credentials Get",
265266
[EventType.PAM_SESSION_START]: "PAM Session Start",
266267
[EventType.PAM_SESSION_LOGS_UPDATE]: "PAM Session Logs Update",
267268
[EventType.PAM_SESSION_END]: "PAM Session End",
@@ -314,6 +315,7 @@ const sharedProjectEvents = [
314315
export const projectToEventsMap: Partial<Record<ProjectType, EventType[]>> = {
315316
[ProjectType.PAM]: [
316317
...sharedProjectEvents,
318+
EventType.PAM_SESSION_CREDENTIALS_GET,
317319
EventType.PAM_SESSION_START,
318320
EventType.PAM_SESSION_LOGS_UPDATE,
319321
EventType.PAM_SESSION_END,

frontend/src/hooks/api/auditLogs/enums.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ export enum EventType {
254254
UPDATE_IDENTITY_PROJECT_MEMBERSHIP = "update-identity-project-membership",
255255
DELETE_IDENTITY_PROJECT_MEMBERSHIP = "delete-identity-project-membership",
256256

257+
PAM_SESSION_CREDENTIALS_GET = "pam-session-credentials-get",
257258
PAM_SESSION_START = "pam-session-start",
258259
PAM_SESSION_LOGS_UPDATE = "pam-session-logs-update",
259260
PAM_SESSION_END = "pam-session-end",

0 commit comments

Comments
 (0)