@pengzi/kms 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +325 -0
  3. package/dist/client.d.ts +130 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +266 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +20 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +54 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/core/asymmetric-crypto.d.ts +81 -0
  12. package/dist/core/asymmetric-crypto.d.ts.map +1 -0
  13. package/dist/core/asymmetric-crypto.js +171 -0
  14. package/dist/core/asymmetric-crypto.js.map +1 -0
  15. package/dist/core/crypto.d.ts +37 -0
  16. package/dist/core/crypto.d.ts.map +1 -0
  17. package/dist/core/crypto.js +100 -0
  18. package/dist/core/crypto.js.map +1 -0
  19. package/dist/core/crypto.service.d.ts +35 -0
  20. package/dist/core/crypto.service.d.ts.map +1 -0
  21. package/dist/core/crypto.service.js +67 -0
  22. package/dist/core/crypto.service.js.map +1 -0
  23. package/dist/core/key-derivation.d.ts +25 -0
  24. package/dist/core/key-derivation.d.ts.map +1 -0
  25. package/dist/core/key-derivation.js +96 -0
  26. package/dist/core/key-derivation.js.map +1 -0
  27. package/dist/index.d.ts +10 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +51 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/models/audit.model.d.ts +40 -0
  32. package/dist/models/audit.model.d.ts.map +1 -0
  33. package/dist/models/audit.model.js +83 -0
  34. package/dist/models/audit.model.js.map +1 -0
  35. package/dist/models/key.model.d.ts +40 -0
  36. package/dist/models/key.model.d.ts.map +1 -0
  37. package/dist/models/key.model.js +120 -0
  38. package/dist/models/key.model.js.map +1 -0
  39. package/dist/models/project.model.d.ts +20 -0
  40. package/dist/models/project.model.d.ts.map +1 -0
  41. package/dist/models/project.model.js +54 -0
  42. package/dist/models/project.model.js.map +1 -0
  43. package/dist/models/user.model.d.ts +48 -0
  44. package/dist/models/user.model.d.ts.map +1 -0
  45. package/dist/models/user.model.js +141 -0
  46. package/dist/models/user.model.js.map +1 -0
  47. package/dist/repositories/audit.repository.d.ts +37 -0
  48. package/dist/repositories/audit.repository.d.ts.map +1 -0
  49. package/dist/repositories/audit.repository.js +116 -0
  50. package/dist/repositories/audit.repository.js.map +1 -0
  51. package/dist/repositories/base.repository.d.ts +54 -0
  52. package/dist/repositories/base.repository.d.ts.map +1 -0
  53. package/dist/repositories/base.repository.js +97 -0
  54. package/dist/repositories/base.repository.js.map +1 -0
  55. package/dist/repositories/key.repository.d.ts +60 -0
  56. package/dist/repositories/key.repository.d.ts.map +1 -0
  57. package/dist/repositories/key.repository.js +126 -0
  58. package/dist/repositories/key.repository.js.map +1 -0
  59. package/dist/repositories/project.repository.d.ts +42 -0
  60. package/dist/repositories/project.repository.d.ts.map +1 -0
  61. package/dist/repositories/project.repository.js +82 -0
  62. package/dist/repositories/project.repository.js.map +1 -0
  63. package/dist/repositories/user.repository.d.ts +58 -0
  64. package/dist/repositories/user.repository.d.ts.map +1 -0
  65. package/dist/repositories/user.repository.js +102 -0
  66. package/dist/repositories/user.repository.js.map +1 -0
  67. package/dist/services/audit.service.d.ts +63 -0
  68. package/dist/services/audit.service.d.ts.map +1 -0
  69. package/dist/services/audit.service.js +113 -0
  70. package/dist/services/audit.service.js.map +1 -0
  71. package/dist/services/auth.service.d.ts +39 -0
  72. package/dist/services/auth.service.d.ts.map +1 -0
  73. package/dist/services/auth.service.js +179 -0
  74. package/dist/services/auth.service.js.map +1 -0
  75. package/dist/services/key.service.d.ts +47 -0
  76. package/dist/services/key.service.d.ts.map +1 -0
  77. package/dist/services/key.service.js +135 -0
  78. package/dist/services/key.service.js.map +1 -0
  79. package/dist/services/permission.service.d.ts +37 -0
  80. package/dist/services/permission.service.d.ts.map +1 -0
  81. package/dist/services/permission.service.js +140 -0
  82. package/dist/services/permission.service.js.map +1 -0
  83. package/dist/services/project.service.d.ts +37 -0
  84. package/dist/services/project.service.d.ts.map +1 -0
  85. package/dist/services/project.service.js +96 -0
  86. package/dist/services/project.service.js.map +1 -0
  87. package/dist/types/audit.types.d.ts +122 -0
  88. package/dist/types/audit.types.d.ts.map +1 -0
  89. package/dist/types/audit.types.js +55 -0
  90. package/dist/types/audit.types.js.map +1 -0
  91. package/dist/types/client.types.d.ts +47 -0
  92. package/dist/types/client.types.d.ts.map +1 -0
  93. package/dist/types/client.types.js +6 -0
  94. package/dist/types/client.types.js.map +1 -0
  95. package/dist/types/crypto.types.d.ts +48 -0
  96. package/dist/types/crypto.types.d.ts.map +1 -0
  97. package/dist/types/crypto.types.js +6 -0
  98. package/dist/types/crypto.types.js.map +1 -0
  99. package/dist/types/index.d.ts +86 -0
  100. package/dist/types/index.d.ts.map +1 -0
  101. package/dist/types/index.js +92 -0
  102. package/dist/types/index.js.map +1 -0
  103. package/dist/types/key.types.d.ts +125 -0
  104. package/dist/types/key.types.d.ts.map +1 -0
  105. package/dist/types/key.types.js +28 -0
  106. package/dist/types/key.types.js.map +1 -0
  107. package/dist/types/project.types.d.ts +57 -0
  108. package/dist/types/project.types.d.ts.map +1 -0
  109. package/dist/types/project.types.js +16 -0
  110. package/dist/types/project.types.js.map +1 -0
  111. package/dist/types/user.types.d.ts +110 -0
  112. package/dist/types/user.types.d.ts.map +1 -0
  113. package/dist/types/user.types.js +49 -0
  114. package/dist/types/user.types.js.map +1 -0
  115. package/dist/utils/config-loader.d.ts +64 -0
  116. package/dist/utils/config-loader.d.ts.map +1 -0
  117. package/dist/utils/config-loader.js +126 -0
  118. package/dist/utils/config-loader.js.map +1 -0
  119. package/dist/utils/constants.d.ts +62 -0
  120. package/dist/utils/constants.d.ts.map +1 -0
  121. package/dist/utils/constants.js +119 -0
  122. package/dist/utils/constants.js.map +1 -0
  123. package/dist/utils/error-handler.d.ts +48 -0
  124. package/dist/utils/error-handler.d.ts.map +1 -0
  125. package/dist/utils/error-handler.js +109 -0
  126. package/dist/utils/error-handler.js.map +1 -0
  127. package/package.json +53 -0
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /**
3
+ * 权限服务
4
+ * 负责权限验证和访问控制
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PermissionService = void 0;
8
+ const types_1 = require("../types");
9
+ const constants_1 = require("../utils/constants");
10
+ class PermissionService {
11
+ userRepo;
12
+ auditService;
13
+ constructor(userRepo, auditService) {
14
+ this.userRepo = userRepo;
15
+ this.auditService = auditService;
16
+ }
17
+ /**
18
+ * 检查用户是否拥有指定权限
19
+ */
20
+ async checkPermission(projectId, userId, requiredPermission) {
21
+ const user = await this.userRepo.findByProjectAndUsername(projectId, userId);
22
+ if (!user) {
23
+ return false;
24
+ }
25
+ if (user.status !== 'active') {
26
+ return false;
27
+ }
28
+ // 检查直接权限
29
+ if (user.permissions.includes(requiredPermission)) {
30
+ return true;
31
+ }
32
+ // 检查角色权限
33
+ for (const role of user.roles) {
34
+ const rolePermissions = constants_1.ROLE_PERMISSIONS[role];
35
+ if (rolePermissions?.includes(requiredPermission)) {
36
+ return true;
37
+ }
38
+ }
39
+ return false;
40
+ }
41
+ /**
42
+ * 要求用户必须拥有指定权限,否则抛出异常
43
+ */
44
+ async requirePermission(projectId, userId, requiredPermission) {
45
+ const hasPermission = await this.checkPermission(projectId, userId, requiredPermission);
46
+ if (!hasPermission) {
47
+ await this.auditService.log({
48
+ projectId,
49
+ userId,
50
+ action: types_1.AuditAction.PERMISSION_DENIED,
51
+ resourceType: types_1.ResourceType.KEY,
52
+ resourceId: requiredPermission,
53
+ details: {
54
+ success: false,
55
+ errorMessage: `User ${userId} does not have permission: ${requiredPermission}`,
56
+ },
57
+ });
58
+ throw new types_1.ForbiddenError(`User does not have required permission: ${requiredPermission}`);
59
+ }
60
+ }
61
+ /**
62
+ * 检查用户是否拥有指定角色
63
+ */
64
+ async hasRole(projectId, userId, role) {
65
+ const user = await this.userRepo.findByProjectAndUsername(projectId, userId);
66
+ if (!user) {
67
+ return false;
68
+ }
69
+ return user.roles.includes(role);
70
+ }
71
+ /**
72
+ * 授予角色
73
+ */
74
+ async grantRole(projectId, adminUserId, targetUserId, role) {
75
+ // 验证管理员权限
76
+ await this.requirePermission(projectId, adminUserId, types_1.Permission.USER_UPDATE);
77
+ const user = await this.userRepo.findByProjectAndUsername(projectId, targetUserId);
78
+ if (!user) {
79
+ throw new Error('User not found');
80
+ }
81
+ if (user.roles.includes(role)) {
82
+ return; // 已经拥有该角色
83
+ }
84
+ await this.userRepo.updateUser(user.userId, {
85
+ roles: [...user.roles, role],
86
+ });
87
+ await this.auditService.log({
88
+ projectId,
89
+ userId: adminUserId,
90
+ action: types_1.AuditAction.GRANT_ROLE,
91
+ resourceType: types_1.ResourceType.USER,
92
+ resourceId: user.userId,
93
+ details: {
94
+ success: true,
95
+ },
96
+ });
97
+ }
98
+ /**
99
+ * 撤销角色
100
+ */
101
+ async revokeRole(projectId, adminUserId, targetUserId, role) {
102
+ // 验证管理员权限
103
+ await this.requirePermission(projectId, adminUserId, types_1.Permission.USER_UPDATE);
104
+ const user = await this.userRepo.findByProjectAndUsername(projectId, targetUserId);
105
+ if (!user) {
106
+ throw new Error('User not found');
107
+ }
108
+ await this.userRepo.updateUser(user.userId, {
109
+ roles: user.roles.filter((r) => r !== role),
110
+ });
111
+ await this.auditService.log({
112
+ projectId,
113
+ userId: adminUserId,
114
+ action: types_1.AuditAction.REVOKE_ROLE,
115
+ resourceType: types_1.ResourceType.USER,
116
+ resourceId: user.userId,
117
+ details: {
118
+ success: true,
119
+ },
120
+ });
121
+ }
122
+ /**
123
+ * 获取用户的所有权限(包括角色权限)
124
+ */
125
+ async getUserPermissions(projectId, userId) {
126
+ const user = await this.userRepo.findByProjectAndUsername(projectId, userId);
127
+ if (!user) {
128
+ return [];
129
+ }
130
+ const permissions = new Set(user.permissions);
131
+ // 添加角色权限
132
+ for (const role of user.roles) {
133
+ const rolePermissions = constants_1.ROLE_PERMISSIONS[role] || [];
134
+ rolePermissions.forEach((p) => permissions.add(p));
135
+ }
136
+ return Array.from(permissions);
137
+ }
138
+ }
139
+ exports.PermissionService = PermissionService;
140
+ //# sourceMappingURL=permission.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.service.js","sourceRoot":"","sources":["../../src/services/permission.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 项目服务
3
+ * 负责项目的业务逻辑
4
+ */
5
+ import { ProjectRepository } from '../repositories/project.repository';
6
+ import { UserRepository } from '../repositories/user.repository';
7
+ import { AuditService } from './audit.service';
8
+ import { CryptoService } from '../core/crypto.service';
9
+ import { Project, CreateProjectOptions } from '../types';
10
+ export declare class ProjectService {
11
+ private projectRepo;
12
+ private userRepo;
13
+ private auditService;
14
+ private cryptoService;
15
+ constructor(projectRepo: ProjectRepository, userRepo: UserRepository, auditService: AuditService, cryptoService: CryptoService);
16
+ /**
17
+ * 创建项目
18
+ */
19
+ createProject(options: CreateProjectOptions, userId: string): Promise<Project>;
20
+ /**
21
+ * 获取项目
22
+ */
23
+ getProject(projectId: string): Promise<Project>;
24
+ /**
25
+ * 列出所有项目
26
+ */
27
+ listProjects(): Promise<Project[]>;
28
+ /**
29
+ * 删除项目
30
+ */
31
+ deleteProject(projectId: string, userId: string): Promise<void>;
32
+ /**
33
+ * 解锁项目主密钥(使用主密码)
34
+ */
35
+ unlockProjectMasterKey(projectId: string, masterPassword: string): Promise<string>;
36
+ }
37
+ //# sourceMappingURL=project.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.service.d.ts","sourceRoot":"","sources":["../../src/services/project.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAOzD,qBAAa,cAAc;IAEvB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;gBAHb,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa;IAGtC;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0CpF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIxC;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrE;;OAEG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAWzF"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ /**
3
+ * 项目服务
4
+ * 负责项目的业务逻辑
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ProjectService = void 0;
8
+ const project_model_1 = require("../models/project.model");
9
+ const key_derivation_1 = require("../core/key-derivation");
10
+ const types_1 = require("../types");
11
+ const constants_1 = require("../utils/constants");
12
+ const types_2 = require("../types");
13
+ class ProjectService {
14
+ projectRepo;
15
+ userRepo;
16
+ auditService;
17
+ cryptoService;
18
+ constructor(projectRepo, userRepo, auditService, cryptoService) {
19
+ this.projectRepo = projectRepo;
20
+ this.userRepo = userRepo;
21
+ this.auditService = auditService;
22
+ this.cryptoService = cryptoService;
23
+ }
24
+ /**
25
+ * 创建项目
26
+ */
27
+ async createProject(options, userId) {
28
+ // 验证密码强度
29
+ const passwordValidation = (0, constants_1.validatePasswordStrength)(options.masterPassword);
30
+ if (!passwordValidation.valid) {
31
+ throw new types_1.ValidationError(passwordValidation.errors.join(', '));
32
+ }
33
+ // 验证项目名称唯一性
34
+ const existingProject = await this.projectRepo.findByProjectName(options.projectName);
35
+ if (existingProject) {
36
+ throw new types_1.ValidationError('Project name already exists');
37
+ }
38
+ // 派生主密钥
39
+ const salt = (0, key_derivation_1.generateSalt)();
40
+ const masterKey = await this.cryptoService.deriveMasterKey(options.masterPassword, salt);
41
+ const masterKeyHash = await this.cryptoService.hashMasterKey(masterKey);
42
+ // 加密主密钥(这里简化处理,实际应该使用系统主密钥加密)
43
+ // 为了安全,我们存储哈希用于验证,不存储加密的主密钥
44
+ // 使用时需要用户重新提供密码来派生主密钥
45
+ const project = (0, project_model_1.createProject)(options, '', // 加密后的主密钥(可选实现)
46
+ masterKeyHash, salt);
47
+ await this.projectRepo.insertOne(project);
48
+ // 记录审计日志
49
+ await this.auditService.logProjectCreated(project.projectId, userId, project.projectName, true);
50
+ return project;
51
+ }
52
+ /**
53
+ * 获取项目
54
+ */
55
+ async getProject(projectId) {
56
+ const project = await this.projectRepo.findByProjectId(projectId);
57
+ if (!project) {
58
+ throw new types_1.ProjectNotFoundError(projectId);
59
+ }
60
+ return project;
61
+ }
62
+ /**
63
+ * 列出所有项目
64
+ */
65
+ async listProjects() {
66
+ return await this.projectRepo.findProjects();
67
+ }
68
+ /**
69
+ * 删除项目
70
+ */
71
+ async deleteProject(projectId, userId) {
72
+ const project = await this.getProject(projectId);
73
+ await this.projectRepo.softDeleteProject(projectId);
74
+ await this.auditService.log({
75
+ projectId,
76
+ userId,
77
+ action: types_2.AuditAction.DELETE_PROJECT,
78
+ resourceType: types_2.ResourceType.PROJECT,
79
+ resourceId: projectId,
80
+ details: {
81
+ keyName: project.projectName,
82
+ success: true,
83
+ },
84
+ });
85
+ }
86
+ /**
87
+ * 解锁项目主密钥(使用主密码)
88
+ */
89
+ async unlockProjectMasterKey(projectId, masterPassword) {
90
+ const project = await this.getProject(projectId);
91
+ const masterKey = await this.cryptoService.unlockProjectMasterKey(masterPassword, project.salt, project.masterKeyHash);
92
+ return masterKey.toString('hex');
93
+ }
94
+ }
95
+ exports.ProjectService = ProjectService;
96
+ //# sourceMappingURL=project.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.service.js","sourceRoot":"","sources":["../../src/services/project.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * 审计日志相关类型定义
3
+ */
4
+ /**
5
+ * 操作类型
6
+ */
7
+ export declare enum AuditAction {
8
+ CREATE_PROJECT = "CREATE_PROJECT",
9
+ UPDATE_PROJECT = "UPDATE_PROJECT",
10
+ DELETE_PROJECT = "DELETE_PROJECT",
11
+ CREATE_KEY = "CREATE_KEY",
12
+ READ_KEY = "READ_KEY",
13
+ UPDATE_KEY = "UPDATE_KEY",
14
+ DELETE_KEY = "DELETE_KEY",
15
+ LIST_KEYS = "LIST_KEYS",
16
+ ROTATE_KEY = "ROTATE_KEY",
17
+ CREATE_USER = "CREATE_USER",
18
+ UPDATE_USER = "UPDATE_USER",
19
+ DELETE_USER = "DELETE_USER",
20
+ GRANT_ROLE = "GRANT_ROLE",
21
+ REVOKE_ROLE = "REVOKE_ROLE",
22
+ LOGIN = "LOGIN",
23
+ LOGOUT = "LOGOUT",
24
+ LOGIN_FAILED = "LOGIN_FAILED",
25
+ PERMISSION_DENIED = "PERMISSION_DENIED"
26
+ }
27
+ /**
28
+ * 资源类型
29
+ */
30
+ export declare enum ResourceType {
31
+ PROJECT = "project",
32
+ KEY = "key",
33
+ USER = "user"
34
+ }
35
+ /**
36
+ * 日志严重级别
37
+ */
38
+ export declare enum AuditSeverity {
39
+ INFO = "info",
40
+ WARNING = "warning",
41
+ ERROR = "error",
42
+ CRITICAL = "critical"
43
+ }
44
+ /**
45
+ * 审计日志数据结构
46
+ */
47
+ export interface AuditLog {
48
+ /** MongoDB ObjectId */
49
+ _id?: string;
50
+ /** 项目ID */
51
+ projectId: string;
52
+ /** 操作用户ID */
53
+ userId?: string;
54
+ /** 操作类型 */
55
+ action: AuditAction;
56
+ /** 资源类型 */
57
+ resourceType: ResourceType;
58
+ /** 资源ID */
59
+ resourceId: string;
60
+ /** 操作详情 */
61
+ details: AuditDetails;
62
+ /** 时间戳 */
63
+ timestamp: Date;
64
+ /** 严重级别 */
65
+ severity: AuditSeverity;
66
+ }
67
+ /**
68
+ * 审计日志详情
69
+ */
70
+ export interface AuditDetails {
71
+ /** 密钥名称 */
72
+ keyName?: string;
73
+ /** 密钥类型 */
74
+ keyType?: string;
75
+ /** IP地址 */
76
+ ipAddress?: string;
77
+ /** User Agent */
78
+ userAgent?: string;
79
+ /** 是否成功 */
80
+ success: boolean;
81
+ /** 错误信息 */
82
+ errorMessage?: string;
83
+ /** 额外信息 */
84
+ [key: string]: any;
85
+ }
86
+ /**
87
+ * 审计日志查询参数
88
+ */
89
+ export interface AuditQuery {
90
+ /** 开始时间 */
91
+ startDate?: Date;
92
+ /** 结束时间 */
93
+ endDate?: Date;
94
+ /** 操作类型 */
95
+ action?: AuditAction;
96
+ /** 资源类型 */
97
+ resourceType?: ResourceType;
98
+ /** 用户ID */
99
+ userId?: string;
100
+ /** 严重级别 */
101
+ severity?: AuditSeverity;
102
+ /** 是否成功 */
103
+ success?: boolean;
104
+ /** 分页:页码 */
105
+ page?: number;
106
+ /** 分页:每页数量 */
107
+ limit?: number;
108
+ }
109
+ /**
110
+ * 审计日志查询结果
111
+ */
112
+ export interface AuditQueryResult {
113
+ /** 日志列表 */
114
+ logs: AuditLog[];
115
+ /** 总数 */
116
+ total: number;
117
+ /** 当前页 */
118
+ page: number;
119
+ /** 每页数量 */
120
+ limit: number;
121
+ }
122
+ //# sourceMappingURL=audit.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.types.d.ts","sourceRoot":"","sources":["../../src/types/audit.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,oBAAY,WAAW;IAErB,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IAGjC,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,UAAU,eAAe;IAGzB,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAG3B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,YAAY,iBAAiB;IAG7B,iBAAiB,sBAAsB;CACxC;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,uBAAuB;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW;IACX,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU;IACV,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW;IACX,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW;IACX,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,WAAW;IACX,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,WAAW;IACX,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW;IACX,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,WAAW;IACX,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,UAAU;IACV,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * 审计日志相关类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AuditSeverity = exports.ResourceType = exports.AuditAction = void 0;
7
+ /**
8
+ * 操作类型
9
+ */
10
+ var AuditAction;
11
+ (function (AuditAction) {
12
+ // 项目操作
13
+ AuditAction["CREATE_PROJECT"] = "CREATE_PROJECT";
14
+ AuditAction["UPDATE_PROJECT"] = "UPDATE_PROJECT";
15
+ AuditAction["DELETE_PROJECT"] = "DELETE_PROJECT";
16
+ // 密钥操作
17
+ AuditAction["CREATE_KEY"] = "CREATE_KEY";
18
+ AuditAction["READ_KEY"] = "READ_KEY";
19
+ AuditAction["UPDATE_KEY"] = "UPDATE_KEY";
20
+ AuditAction["DELETE_KEY"] = "DELETE_KEY";
21
+ AuditAction["LIST_KEYS"] = "LIST_KEYS";
22
+ AuditAction["ROTATE_KEY"] = "ROTATE_KEY";
23
+ // 用户操作
24
+ AuditAction["CREATE_USER"] = "CREATE_USER";
25
+ AuditAction["UPDATE_USER"] = "UPDATE_USER";
26
+ AuditAction["DELETE_USER"] = "DELETE_USER";
27
+ AuditAction["GRANT_ROLE"] = "GRANT_ROLE";
28
+ AuditAction["REVOKE_ROLE"] = "REVOKE_ROLE";
29
+ // 认证操作
30
+ AuditAction["LOGIN"] = "LOGIN";
31
+ AuditAction["LOGOUT"] = "LOGOUT";
32
+ AuditAction["LOGIN_FAILED"] = "LOGIN_FAILED";
33
+ // 权限
34
+ AuditAction["PERMISSION_DENIED"] = "PERMISSION_DENIED";
35
+ })(AuditAction || (exports.AuditAction = AuditAction = {}));
36
+ /**
37
+ * 资源类型
38
+ */
39
+ var ResourceType;
40
+ (function (ResourceType) {
41
+ ResourceType["PROJECT"] = "project";
42
+ ResourceType["KEY"] = "key";
43
+ ResourceType["USER"] = "user";
44
+ })(ResourceType || (exports.ResourceType = ResourceType = {}));
45
+ /**
46
+ * 日志严重级别
47
+ */
48
+ var AuditSeverity;
49
+ (function (AuditSeverity) {
50
+ AuditSeverity["INFO"] = "info";
51
+ AuditSeverity["WARNING"] = "warning";
52
+ AuditSeverity["ERROR"] = "error";
53
+ AuditSeverity["CRITICAL"] = "critical";
54
+ })(AuditSeverity || (exports.AuditSeverity = AuditSeverity = {}));
55
+ //# sourceMappingURL=audit.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.types.js","sourceRoot":"","sources":["../../src/types/audit.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;GAEG;AACH,IAAY,WA4BX;AA5BD,WAAY,WAAW;IACrB,OAAO;IACP,gDAAiC,CAAA;IACjC,gDAAiC,CAAA;IACjC,gDAAiC,CAAA;IAEjC,OAAO;IACP,wCAAyB,CAAA;IACzB,oCAAqB,CAAA;IACrB,wCAAyB,CAAA;IACzB,wCAAyB,CAAA;IACzB,sCAAuB,CAAA;IACvB,wCAAyB,CAAA;IAEzB,OAAO;IACP,0CAA2B,CAAA;IAC3B,0CAA2B,CAAA;IAC3B,0CAA2B,CAAA;IAC3B,wCAAyB,CAAA;IACzB,0CAA2B,CAAA;IAE3B,OAAO;IACP,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,4CAA6B,CAAA;IAE7B,KAAK;IACL,sDAAuC,CAAA;AACzC,CAAC,EA5BW,WAAW,2BAAX,WAAW,QA4BtB;AAED;;GAEG;AACH,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,2BAAW,CAAA;IACX,6BAAa,CAAA;AACf,CAAC,EAJW,YAAY,4BAAZ,YAAY,QAIvB;AAED;;GAEG;AACH,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,oCAAmB,CAAA;IACnB,gCAAe,CAAA;IACf,sCAAqB,CAAA;AACvB,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * KMS 客户端类型定义
3
+ */
4
+ /**
5
+ * KMS 客户端配置选项
6
+ */
7
+ export interface KMSClientOptions {
8
+ /** MongoDB 连接字符串(明文) */
9
+ connectionString: string;
10
+ /** 数据库名称 */
11
+ databaseName: string;
12
+ /** 连接选项 */
13
+ connectionOptions?: {
14
+ connectTimeoutMS?: number;
15
+ socketTimeoutMS?: number;
16
+ serverSelectionTimeoutMS?: number;
17
+ maxPoolSize?: number;
18
+ minPoolSize?: number;
19
+ };
20
+ }
21
+ /**
22
+ * 加密的 KMS 客户端配置选项
23
+ * 用于安全地存储数据库连接字符串
24
+ */
25
+ export interface EncryptedKMSClientOptions {
26
+ /** 加密的连接字符串(JSON 格式) */
27
+ encryptedConnectionString: string;
28
+ /** 数据库名称 */
29
+ databaseName: string;
30
+ /** 私钥(PEM 格式),默认从 KMS_PRIVATE_KEY 环境变量读取 */
31
+ privateKey?: string;
32
+ /** 私钥密码(如果私钥有密码保护),默认从 KMS_PRIVATE_KEY_PASSPHRASE 环境变量读取 */
33
+ privateKeyPassphrase?: string;
34
+ /** 连接选项 */
35
+ connectionOptions?: {
36
+ connectTimeoutMS?: number;
37
+ socketTimeoutMS?: number;
38
+ serverSelectionTimeoutMS?: number;
39
+ maxPoolSize?: number;
40
+ minPoolSize?: number;
41
+ };
42
+ }
43
+ /**
44
+ * 客户端配置(联合类型)
45
+ */
46
+ export type ClientOptions = KMSClientOptions | EncryptedKMSClientOptions;
47
+ //# sourceMappingURL=client.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.types.d.ts","sourceRoot":"","sources":["../../src/types/client.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,iBAAiB,CAAC,EAAE;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,wBAAwB;IACxB,yBAAyB,EAAE,MAAM,CAAC;IAClC,YAAY;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW;IACX,iBAAiB,CAAC,EAAE;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,yBAAyB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * KMS 客户端类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=client.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.types.js","sourceRoot":"","sources":["../../src/types/client.types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 加密相关类型定义
3
+ */
4
+ /**
5
+ * 加密后的数据结构
6
+ */
7
+ export interface EncryptedData {
8
+ /** 加密后的数据(十六进制) */
9
+ encrypted: string;
10
+ /** 初始化向量(十六进制) */
11
+ iv: string;
12
+ /** 认证标签(十六进制) */
13
+ authTag: string;
14
+ }
15
+ /**
16
+ * 密钥派生配置
17
+ */
18
+ export interface KeyDerivationConfig {
19
+ /** 迭代次数 */
20
+ iterations: number;
21
+ /** 密钥长度(字节) */
22
+ keyLength: number;
23
+ /** 盐值(十六进制) */
24
+ salt: string;
25
+ }
26
+ /**
27
+ * 加密配置
28
+ */
29
+ export interface EncryptionConfig {
30
+ /** 加密算法 */
31
+ algorithm: string;
32
+ /** 密钥长度(字节) */
33
+ keyLength: number;
34
+ /** IV长度(字节) */
35
+ ivLength: number;
36
+ }
37
+ /**
38
+ * 项目主密钥信息
39
+ */
40
+ export interface MasterKeyInfo {
41
+ /** 加密后的主密钥 */
42
+ encryptedMasterKey: string;
43
+ /** 主密钥哈希(用于验证) */
44
+ masterKeyHash: string;
45
+ /** 盐值 */
46
+ salt: string;
47
+ }
48
+ //# sourceMappingURL=crypto.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.types.d.ts","sourceRoot":"","sources":["../../src/types/crypto.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc;IACd,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * 加密相关类型定义
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=crypto.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.types.js","sourceRoot":"","sources":["../../src/types/crypto.types.ts"],"names":[],"mappings":";AAAA;;GAEG"}