diff --git a/backend/src/ee/routes/v1/project-router.ts b/backend/src/ee/routes/v1/project-router.ts index 62ceace59..23b755998 100644 --- a/backend/src/ee/routes/v1/project-router.ts +++ b/backend/src/ee/routes/v1/project-router.ts @@ -281,7 +281,13 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { projectId: req.params.workspaceId }); - // TODO: add audit log + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + projectId: req.params.workspaceId, + event: { + type: EventType.GET_PROJECT_KMS_BACKUP + } + }); return backup; } diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index fca3206ae..71714b2bf 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -144,7 +144,8 @@ export enum EventType { UPDATE_KMS = "update-kms", DELETE_KMS = "delete-kms", GET_KMS = "get-kms", - UPDATE_PROJECT_KMS = "update-project-kms" + UPDATE_PROJECT_KMS = "update-project-kms", + GET_PROJECT_KMS_BACKUP = "get-project-kms-backup" } interface UserActorMetadata { @@ -1223,6 +1224,10 @@ interface UpdateProjectKmsEvent { }; } +interface GetProjectKmsBackupEvent { + type: EventType.GET_PROJECT_KMS_BACKUP; +} + export type Event = | GetSecretsEvent | GetSecretEvent @@ -1329,4 +1334,5 @@ export type Event = | UpdateKmsEvent | DeleteKmsEvent | GetKmsEvent - | UpdateProjectKmsEvent; + | UpdateProjectKmsEvent + | GetProjectKmsBackupEvent; diff --git a/backend/src/services/kms/kms-service.ts b/backend/src/services/kms/kms-service.ts index 404c9a4bd..4c099141c 100644 --- a/backend/src/services/kms/kms-service.ts +++ b/backend/src/services/kms/kms-service.ts @@ -598,8 +598,8 @@ export const kmsServiceFactory = ({ const kmsEncryptor = await encryptWithKmsKey({ kmsId: kmsKeyIdForEncrypt }); const { cipherTextBlob: encryptedSecretManagerDataKey } = await kmsEncryptor({ plainText: secretManagerDataKey }); - // format: projectId.kmsFunction.kmsId.Base64(encryptedDataKey) - const secretManagerBackup = `${projectId}.secretManager.${kmsKeyIdForEncrypt}.${encryptedSecretManagerDataKey.toString( + // format: version.projectId.kmsFunction.kmsId.Base64(encryptedDataKey) + const secretManagerBackup = `v1.${projectId}.secretManager.${kmsKeyIdForEncrypt}.${encryptedSecretManagerDataKey.toString( "base64" )}`; diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index 1a935dc06..7cdff7ac1 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -713,7 +713,7 @@ export const projectServiceFactory = ({ const plan = await licenseService.getPlan(actorOrgId); if (!plan.externalKms) { throw new BadRequestError({ - message: "Failed to create KMS backup due to plan restriction. Upgrade to the enterprise plan." + message: "Failed to get KMS backup due to plan restriction. Upgrade to the enterprise plan." }); } diff --git a/frontend/src/views/Settings/ProjectSettingsPage/components/EncryptionTab/EncryptionTab.tsx b/frontend/src/views/Settings/ProjectSettingsPage/components/EncryptionTab/EncryptionTab.tsx index 2fa9da877..7c8724bad 100644 --- a/frontend/src/views/Settings/ProjectSettingsPage/components/EncryptionTab/EncryptionTab.tsx +++ b/frontend/src/views/Settings/ProjectSettingsPage/components/EncryptionTab/EncryptionTab.tsx @@ -79,7 +79,7 @@ export const EncryptionTab = () => { const { secretManager } = await fetchProjectKmsBackup(currentWorkspace.id); - const [, kmsFunction] = secretManager.split("."); + const [, , kmsFunction] = secretManager.split("."); const file = secretManager; const blob = new Blob([file], { type: "text/plain;charset=utf-8" });