From 6e7997b1bdc98e043d60a7b4c5f2a7b5bc480f3f Mon Sep 17 00:00:00 2001 From: = Date: Thu, 25 Jul 2024 22:24:52 +0530 Subject: [PATCH] feat: added kms deletion on project deletion and removed e2ee blind index upgrade banner --- backend/src/services/kms/kms-service.ts | 8 ++++ .../src/services/project/project-service.ts | 8 +++- .../components/E2EESection/E2EESection.tsx | 38 ------------------- .../components/E2EESection/index.tsx | 1 - .../ProjectGeneralTab/ProjectGeneralTab.tsx | 2 - .../ProjectSettingsPage/components/index.tsx | 1 - 6 files changed, 15 insertions(+), 43 deletions(-) delete mode 100644 frontend/src/views/Settings/ProjectSettingsPage/components/E2EESection/E2EESection.tsx delete mode 100644 frontend/src/views/Settings/ProjectSettingsPage/components/E2EESection/index.tsx diff --git a/backend/src/services/kms/kms-service.ts b/backend/src/services/kms/kms-service.ts index 08465284b..d5a48ddef 100644 --- a/backend/src/services/kms/kms-service.ts +++ b/backend/src/services/kms/kms-service.ts @@ -102,6 +102,13 @@ export const kmsServiceFactory = ({ return doc; }; + const deleteInternalKms = async (kmsId: string, orgId: string, tx?: Knex) => { + const kms = await kmsDAL.findByIdWithAssociatedKms(kmsId, tx); + if (kms.isExternal) return; + if (kms.orgId !== orgId) throw new BadRequestError({ message: "KMS doesn't belong to organization" }); + return kmsDAL.deleteById(kmsId, tx); + }; + /* * Simple encryption service function to do all the encryption tasks in infisical * This can be even later exposed directly as api for encryption as function @@ -794,6 +801,7 @@ export const kmsServiceFactory = ({ return { startService, generateKmsKey, + deleteInternalKms, encryptWithKmsKey, decryptWithKmsKey, encryptWithInputKey, diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index bfb7fcbab..d1f393e7b 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -81,6 +81,7 @@ type TProjectServiceFactoryDep = { | "loadProjectKeyBackup" | "getKmsById" | "getProjectSecretManagerKmsKeyId" + | "deleteInternalKms" >; }; @@ -337,7 +338,12 @@ export const projectServiceFactory = ({ const deletedProject = await projectDAL.transaction(async (tx) => { const delProject = await projectDAL.deleteById(project.id, tx); const projectGhostUser = await projectMembershipDAL.findProjectGhostUser(project.id, tx).catch(() => null); - + if (delProject.kmsCertificateKeyId) { + await kmsService.deleteInternalKms(delProject.kmsCertificateKeyId, delProject.orgId, tx); + } + if (delProject.kmsSecretManagerKeyId) { + await kmsService.deleteInternalKms(delProject.kmsSecretManagerKeyId, delProject.orgId, tx); + } // Delete the org membership for the ghost user if it's found. if (projectGhostUser) { await userDAL.deleteById(projectGhostUser.id, tx); diff --git a/frontend/src/views/Settings/ProjectSettingsPage/components/E2EESection/E2EESection.tsx b/frontend/src/views/Settings/ProjectSettingsPage/components/E2EESection/E2EESection.tsx deleted file mode 100644 index f0f921834..000000000 --- a/frontend/src/views/Settings/ProjectSettingsPage/components/E2EESection/E2EESection.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import Link from "next/link"; - -import { UpgradeProjectAlert } from "@app/components/v2/UpgradeProjectAlert"; -import { useWorkspace } from "@app/context"; -import { useGetWorkspaceBot } from "@app/hooks/api"; -import { ProjectVersion } from "@app/hooks/api/workspace/types"; - -export const E2EESection = () => { - const { currentWorkspace } = useWorkspace(); - const { data: bot } = useGetWorkspaceBot(currentWorkspace?.id ?? ""); - - if (!currentWorkspace) return null; - - return bot && currentWorkspace.version === ProjectVersion.V1 ? ( -
-
-

End-to-End Encryption

- -
- -

- We are updating our encryption logic to make sure that Infisical can be the most versatile - secret management platform.
-
- Upgrading the project version is required to continue receiving the latest improvements and - patches. -

- - - - Learn more about project upgrades - - -
- ) : ( -
- ); -}; diff --git a/frontend/src/views/Settings/ProjectSettingsPage/components/E2EESection/index.tsx b/frontend/src/views/Settings/ProjectSettingsPage/components/E2EESection/index.tsx deleted file mode 100644 index 448f86841..000000000 --- a/frontend/src/views/Settings/ProjectSettingsPage/components/E2EESection/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { E2EESection } from "./E2EESection"; diff --git a/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx b/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx index c7da5fd28..992b1b6c6 100644 --- a/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx +++ b/frontend/src/views/Settings/ProjectSettingsPage/components/ProjectGeneralTab/ProjectGeneralTab.tsx @@ -2,7 +2,6 @@ import { AuditLogsRetentionSection } from "../AuditLogsRetentionSection"; import { AutoCapitalizationSection } from "../AutoCapitalizationSection"; import { BackfillSecretReferenceSecretion } from "../BackfillSecretReferenceSection"; import { DeleteProjectSection } from "../DeleteProjectSection"; -import { E2EESection } from "../E2EESection"; import { EnvironmentSection } from "../EnvironmentSection"; import { PointInTimeVersionLimitSection } from "../PointInTimeVersionLimitSection"; import { ProjectNameChangeSection } from "../ProjectNameChangeSection"; @@ -16,7 +15,6 @@ export const ProjectGeneralTab = () => { - diff --git a/frontend/src/views/Settings/ProjectSettingsPage/components/index.tsx b/frontend/src/views/Settings/ProjectSettingsPage/components/index.tsx index 9d97c8bb8..57b2e82c4 100644 --- a/frontend/src/views/Settings/ProjectSettingsPage/components/index.tsx +++ b/frontend/src/views/Settings/ProjectSettingsPage/components/index.tsx @@ -1,7 +1,6 @@ export { AutoCapitalizationSection } from "./AutoCapitalizationSection"; export { BackfillSecretReferenceSecretion } from "./BackfillSecretReferenceSection"; export { DeleteProjectSection } from "./DeleteProjectSection"; -export { E2EESection } from "./E2EESection"; export { EnvironmentSection } from "./EnvironmentSection"; export { ProjectNameChangeSection } from "./ProjectNameChangeSection"; export { SecretTagsSection } from "./SecretTagsSection";