From 4009580cf252b8efd2d08dc1e7cd48601060f59e Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Sat, 20 Jul 2024 02:52:34 +0800 Subject: [PATCH] misc: removed kms from service --- backend/src/@types/fastify.d.ts | 2 - backend/src/ee/routes/v1/project-router.ts | 9 ++++- backend/src/server/routes/index.ts | 1 - .../src/services/project/project-service.ts | 37 ++++++++++++++++++- backend/src/services/project/project-types.ts | 2 + 5 files changed, 45 insertions(+), 6 deletions(-) diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 7b6ef592b..8ae892560 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -48,7 +48,6 @@ import { TIdentityTokenAuthServiceFactory } from "@app/services/identity-token-a import { TIdentityUaServiceFactory } from "@app/services/identity-ua/identity-ua-service"; import { TIntegrationServiceFactory } from "@app/services/integration/integration-service"; import { TIntegrationAuthServiceFactory } from "@app/services/integration-auth/integration-auth-service"; -import { TKmsServiceFactory } from "@app/services/kms/kms-service"; import { TOrgRoleServiceFactory } from "@app/services/org/org-role-service"; import { TOrgServiceFactory } from "@app/services/org/org-service"; import { TProjectServiceFactory } from "@app/services/project/project-service"; @@ -165,7 +164,6 @@ declare module "fastify" { secretSharing: TSecretSharingServiceFactory; rateLimit: TRateLimitServiceFactory; userEngagement: TUserEngagementServiceFactory; - kms: TKmsServiceFactory; externalKms: TExternalKmsServiceFactory; }; // this is exclusive use for middlewares in which we need to inject data diff --git a/backend/src/ee/routes/v1/project-router.ts b/backend/src/ee/routes/v1/project-router.ts index 7113b2a41..8015dc8bf 100644 --- a/backend/src/ee/routes/v1/project-router.ts +++ b/backend/src/ee/routes/v1/project-router.ts @@ -194,7 +194,14 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { - const secretManagerKmsKey = await server.services.kms.getProjectSecretManagerKmsKey(req.params.workspaceId); + const secretManagerKmsKey = await server.services.project.getProjectSecretManagerKmsKey({ + actor: req.permission.type, + actorId: req.permission.id, + actorAuthMethod: req.permission.authMethod, + actorOrgId: req.permission.orgId, + projectId: req.params.workspaceId + }); + return { secretManagerKmsKey }; diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 9fc47c046..c0f3f76e2 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -1054,7 +1054,6 @@ export const registerRoutes = async ( identityProjectAdditionalPrivilege: identityProjectAdditionalPrivilegeService, secretSharing: secretSharingService, userEngagement: userEngagementService, - kms: kmsService, externalKms: externalKmsService }); diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index 368915521..ee1278351 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -39,6 +39,7 @@ import { TCreateProjectDTO, TDeleteProjectDTO, TGetProjectDTO, + TGetProjectKmsKey, TListProjectCasDTO, TListProjectCertsDTO, TLoadProjectKmsBackupDTO, @@ -81,7 +82,11 @@ type TProjectServiceFactoryDep = { keyStore: Pick; kmsService: Pick< TKmsServiceFactory, - "updateProjectSecretManagerKmsKey" | "getProjectKeyBackup" | "loadProjectKeyBackup" | "getKmsById" + | "updateProjectSecretManagerKmsKey" + | "getProjectKeyBackup" + | "loadProjectKeyBackup" + | "getKmsById" + | "getProjectSecretManagerKmsKeyId" >; }; @@ -767,6 +772,33 @@ export const projectServiceFactory = ({ return kmsBackup; }; + const getProjectSecretManagerKmsKey = async ({ + projectId, + actor, + actorId, + actorAuthMethod, + actorOrgId + }: TGetProjectKmsKey) => { + const { membership } = await permissionService.getProjectPermission( + actor, + actorId, + projectId, + actorAuthMethod, + actorOrgId + ); + + if (!membership) { + throw new ForbiddenRequestError({ + message: "User is not a member of the project" + }); + } + + const kmsKeyId = await kmsService.getProjectSecretManagerKmsKeyId(projectId); + const kmsKey = await kmsService.getKmsById(kmsKeyId); + + return kmsKey; + }; + return { createProject, deleteProject, @@ -783,6 +815,7 @@ export const projectServiceFactory = ({ updateAuditLogsRetention, updateProjectKmsKey, getProjectKmsBackup, - loadProjectKmsBackup + loadProjectKmsBackup, + getProjectSecretManagerKmsKey }; }; diff --git a/backend/src/services/project/project-types.ts b/backend/src/services/project/project-types.ts index 4b2fb21e2..43156f415 100644 --- a/backend/src/services/project/project-types.ts +++ b/backend/src/services/project/project-types.ts @@ -112,3 +112,5 @@ export type TUpdateProjectKmsDTO = { export type TLoadProjectKmsBackupDTO = { backup: string; } & TProjectPermission; + +export type TGetProjectKmsKey = TProjectPermission;