@pengzi/kms 1.1.0 → 1.2.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.
- package/README.md +64 -5
- package/dist/cli/cli/kms.js +1050 -0
- package/dist/cli/kms.js +1050 -0
- package/dist/cli/src/client.js +254 -0
- package/dist/cli/src/core/asymmetric-crypto.js +170 -0
- package/dist/cli/src/core/crypto.js +99 -0
- package/dist/cli/src/core/crypto.service.js +66 -0
- package/dist/cli/src/core/key-derivation.js +95 -0
- package/dist/cli/src/index.js +50 -0
- package/dist/cli/src/models/audit.model.js +82 -0
- package/dist/cli/src/models/key.model.js +119 -0
- package/dist/cli/src/models/project.model.js +53 -0
- package/dist/cli/src/models/user.model.js +140 -0
- package/dist/cli/src/repositories/audit.repository.js +115 -0
- package/dist/cli/src/repositories/base.repository.js +94 -0
- package/dist/cli/src/repositories/key.repository.js +125 -0
- package/dist/cli/src/repositories/project.repository.js +81 -0
- package/dist/cli/src/repositories/user.repository.js +101 -0
- package/dist/cli/src/services/audit.service.js +111 -0
- package/dist/cli/src/services/auth.service.js +176 -0
- package/dist/cli/src/services/key.service.js +137 -0
- package/dist/cli/src/services/permission.service.js +142 -0
- package/dist/cli/src/services/project.service.js +102 -0
- package/dist/cli/src/types/audit.types.js +54 -0
- package/dist/cli/src/types/crypto.types.js +5 -0
- package/dist/cli/src/types/index.js +90 -0
- package/dist/cli/src/types/key.types.js +27 -0
- package/dist/cli/src/types/project.types.js +15 -0
- package/dist/cli/src/types/user.types.js +48 -0
- package/dist/cli/src/utils/config-loader.js +125 -0
- package/dist/cli/src/utils/constants.js +118 -0
- package/dist/cli/src/utils/error-handler.js +108 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +19 -2
- package/dist/client.js.map +1 -1
- package/dist/models/key.model.js +1 -1
- package/dist/models/key.model.js.map +1 -1
- package/dist/services/key.service.d.ts +5 -0
- package/dist/services/key.service.d.ts.map +1 -1
- package/dist/services/key.service.js +12 -4
- package/dist/services/key.service.js.map +1 -1
- package/dist/src/client.js +269 -0
- package/dist/src/core/asymmetric-crypto.js +170 -0
- package/dist/src/core/crypto.js +99 -0
- package/dist/src/core/crypto.service.js +66 -0
- package/dist/src/core/key-derivation.js +95 -0
- package/dist/src/index.js +50 -0
- package/dist/src/models/audit.model.js +82 -0
- package/dist/src/models/key.model.js +119 -0
- package/dist/src/models/project.model.js +53 -0
- package/dist/src/models/user.model.js +140 -0
- package/dist/src/repositories/audit.repository.js +115 -0
- package/dist/src/repositories/base.repository.js +94 -0
- package/dist/src/repositories/key.repository.js +125 -0
- package/dist/src/repositories/project.repository.js +81 -0
- package/dist/src/repositories/user.repository.js +101 -0
- package/dist/src/services/audit.service.js +111 -0
- package/dist/src/services/auth.service.js +176 -0
- package/dist/src/services/key.service.js +137 -0
- package/dist/src/services/permission.service.js +142 -0
- package/dist/src/services/project.service.js +102 -0
- package/dist/src/types/audit.types.js +54 -0
- package/dist/src/types/crypto.types.js +5 -0
- package/dist/src/types/index.js +90 -0
- package/dist/src/types/key.types.js +27 -0
- package/dist/src/types/project.types.js +15 -0
- package/dist/src/types/user.types.js +48 -0
- package/dist/src/utils/config-loader.js +125 -0
- package/dist/src/utils/constants.js +118 -0
- package/dist/src/utils/error-handler.js +108 -0
- package/dist/types/client.types.d.ts +20 -0
- package/dist/types/client.types.d.ts.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 配置加载工具
|
|
4
|
+
* 用于从加密配置文件中加载连接字符串
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.loadEncryptedConfig = loadEncryptedConfig;
|
|
41
|
+
exports.loadConfigFromEnvironment = loadConfigFromEnvironment;
|
|
42
|
+
exports.createClientFromEncryptedConfig = createClientFromEncryptedConfig;
|
|
43
|
+
exports.readPrivateKeyFile = readPrivateKeyFile;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const asymmetric_crypto_1 = require("../core/asymmetric-crypto");
|
|
47
|
+
const asymmetric_crypto_2 = require("../core/asymmetric-crypto");
|
|
48
|
+
/**
|
|
49
|
+
* 从加密配置文件加载配置
|
|
50
|
+
* @param configPath 配置文件路径
|
|
51
|
+
* @param privateKeyPem 私钥(可选,默认从环境变量读取)
|
|
52
|
+
* @param passphrase 私钥密码(可选,默认从环境变量读取)
|
|
53
|
+
* @returns KMS 客户端配置
|
|
54
|
+
*/
|
|
55
|
+
function loadEncryptedConfig(configPath, privateKeyPem, passphrase) {
|
|
56
|
+
// 读取配置文件
|
|
57
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
58
|
+
// 获取私钥
|
|
59
|
+
const finalPrivateKeyPem = privateKeyPem || process.env.KMS_PRIVATE_KEY;
|
|
60
|
+
if (!finalPrivateKeyPem) {
|
|
61
|
+
throw new Error('私钥未提供。请设置 KMS_PRIVATE_KEY 环境变量或传入 privateKeyPem 参数');
|
|
62
|
+
}
|
|
63
|
+
// 获取密码
|
|
64
|
+
const finalPassphrase = passphrase || (0, asymmetric_crypto_1.getPrivateKeyPassphrase)();
|
|
65
|
+
// 解密连接字符串
|
|
66
|
+
const connectionString = (0, asymmetric_crypto_2.parseEncryptedConnectionStringConfig)({ encryptedConnectionString: config.encryptedConnectionString }, finalPrivateKeyPem, finalPassphrase);
|
|
67
|
+
return {
|
|
68
|
+
connectionString,
|
|
69
|
+
databaseName: config.databaseName || 'kms',
|
|
70
|
+
connectionOptions: config.connectionOptions
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 从环境变量和文件加载配置
|
|
75
|
+
* 优先级:加密配置文件 > 环境变量
|
|
76
|
+
* @returns KMS 客户端配置
|
|
77
|
+
*/
|
|
78
|
+
function loadConfigFromEnvironment() {
|
|
79
|
+
const configPath = process.env.KMS_ENCRYPTED_CONFIG_PATH;
|
|
80
|
+
if (configPath && fs.existsSync(configPath)) {
|
|
81
|
+
return loadEncryptedConfig(configPath);
|
|
82
|
+
}
|
|
83
|
+
// 回退到环境变量
|
|
84
|
+
const connectionString = process.env.KMS_CONNECTION_STRING || process.env.MONGO_URL;
|
|
85
|
+
if (!connectionString) {
|
|
86
|
+
throw new Error('未找到连接字符串。请设置 KMS_ENCRYPTED_CONFIG_PATH 或 KMS_CONNECTION_STRING 环境变量');
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
connectionString,
|
|
90
|
+
databaseName: process.env.KMS_DATABASE_NAME || 'kms',
|
|
91
|
+
connectionOptions: {
|
|
92
|
+
connectTimeoutMS: process.env.KMS_CONNECT_TIMEOUT
|
|
93
|
+
? parseInt(process.env.KMS_CONNECT_TIMEOUT, 10)
|
|
94
|
+
: undefined,
|
|
95
|
+
socketTimeoutMS: process.env.KMS_SOCKET_TIMEOUT
|
|
96
|
+
? parseInt(process.env.KMS_SOCKET_TIMEOUT, 10)
|
|
97
|
+
: undefined,
|
|
98
|
+
maxPoolSize: process.env.KMS_MAX_POOL_SIZE
|
|
99
|
+
? parseInt(process.env.KMS_MAX_POOL_SIZE, 10)
|
|
100
|
+
: undefined
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 创建 KMS 客户端(从加密配置)
|
|
106
|
+
* @param configPath 配置文件路径
|
|
107
|
+
* @param privateKeyPem 私钥(可选)
|
|
108
|
+
* @param passphrase 私钥密码(可选)
|
|
109
|
+
* @returns KMS 客户端选项
|
|
110
|
+
*/
|
|
111
|
+
function createClientFromEncryptedConfig(configPath, privateKeyPem, passphrase) {
|
|
112
|
+
return loadEncryptedConfig(configPath, privateKeyPem, passphrase);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 读取私钥文件
|
|
116
|
+
* @param filePath 私钥文件路径
|
|
117
|
+
* @returns 私钥内容
|
|
118
|
+
*/
|
|
119
|
+
function readPrivateKeyFile(filePath) {
|
|
120
|
+
const absolutePath = path.resolve(filePath);
|
|
121
|
+
if (!fs.existsSync(absolutePath)) {
|
|
122
|
+
throw new Error(`私钥文件不存在: ${absolutePath}`);
|
|
123
|
+
}
|
|
124
|
+
return fs.readFileSync(absolutePath, 'utf-8');
|
|
125
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 系统常量定义
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.COLLECTIONS = exports.KEY_TYPES = exports.ROLE_PERMISSIONS = exports.SECURITY_CONFIG = void 0;
|
|
7
|
+
exports.generateId = generateId;
|
|
8
|
+
exports.validatePasswordStrength = validatePasswordStrength;
|
|
9
|
+
const types_1 = require("../types");
|
|
10
|
+
/**
|
|
11
|
+
* 安全配置常量
|
|
12
|
+
*/
|
|
13
|
+
exports.SECURITY_CONFIG = {
|
|
14
|
+
// 密钥派生配置
|
|
15
|
+
KEY_DERIVATION: {
|
|
16
|
+
ALGORITHM: 'pbkdf2',
|
|
17
|
+
ITERATIONS: 100000,
|
|
18
|
+
KEY_LENGTH: 32, // 256 bits
|
|
19
|
+
DIGEST: 'sha256',
|
|
20
|
+
},
|
|
21
|
+
// 加密配置
|
|
22
|
+
ENCRYPTION: {
|
|
23
|
+
ALGORITHM: 'aes-256-gcm',
|
|
24
|
+
KEY_LENGTH: 32, // 256 bits
|
|
25
|
+
IV_LENGTH: 16, // 128 bits
|
|
26
|
+
AUTH_TAG_LENGTH: 16, // 128 bits
|
|
27
|
+
},
|
|
28
|
+
// 密码策略
|
|
29
|
+
PASSWORD_POLICY: {
|
|
30
|
+
MIN_LENGTH: 12,
|
|
31
|
+
REQUIRE_UPPERCASE: true,
|
|
32
|
+
REQUIRE_LOWERCASE: true,
|
|
33
|
+
REQUIRE_NUMBERS: true,
|
|
34
|
+
REQUIRE_SPECIAL_CHARS: true,
|
|
35
|
+
},
|
|
36
|
+
// 速率限制
|
|
37
|
+
RATE_LIMITING: {
|
|
38
|
+
WINDOW_MS: 15 * 60 * 1000, // 15分钟
|
|
39
|
+
MAX_REQUESTS: 100,
|
|
40
|
+
},
|
|
41
|
+
// API密钥长度
|
|
42
|
+
API_KEY_LENGTH: 64,
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* 角色-权限映射
|
|
46
|
+
*/
|
|
47
|
+
exports.ROLE_PERMISSIONS = {
|
|
48
|
+
[types_1.Role.ADMIN]: [
|
|
49
|
+
types_1.Permission.PROJECT_CREATE,
|
|
50
|
+
types_1.Permission.PROJECT_UPDATE,
|
|
51
|
+
types_1.Permission.PROJECT_DELETE,
|
|
52
|
+
types_1.Permission.KEY_CREATE,
|
|
53
|
+
types_1.Permission.KEY_READ,
|
|
54
|
+
types_1.Permission.KEY_UPDATE,
|
|
55
|
+
types_1.Permission.KEY_DELETE,
|
|
56
|
+
types_1.Permission.KEY_LIST,
|
|
57
|
+
types_1.Permission.USER_CREATE,
|
|
58
|
+
types_1.Permission.USER_UPDATE,
|
|
59
|
+
types_1.Permission.USER_DELETE,
|
|
60
|
+
types_1.Permission.AUDIT_READ,
|
|
61
|
+
],
|
|
62
|
+
[types_1.Role.OPERATOR]: [
|
|
63
|
+
types_1.Permission.KEY_READ,
|
|
64
|
+
types_1.Permission.KEY_UPDATE,
|
|
65
|
+
types_1.Permission.KEY_LIST,
|
|
66
|
+
types_1.Permission.AUDIT_READ,
|
|
67
|
+
],
|
|
68
|
+
[types_1.Role.DEVELOPER]: [types_1.Permission.KEY_READ, types_1.Permission.KEY_LIST],
|
|
69
|
+
[types_1.Role.READONLY]: [types_1.Permission.KEY_LIST],
|
|
70
|
+
[types_1.Role.AUDITOR]: [types_1.Permission.AUDIT_READ],
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* 密钥类型列表
|
|
74
|
+
*/
|
|
75
|
+
exports.KEY_TYPES = ['mongodb', 'mysql', 'postgresql', 'redis', 'custom'];
|
|
76
|
+
/**
|
|
77
|
+
* 集合名称
|
|
78
|
+
*/
|
|
79
|
+
exports.COLLECTIONS = {
|
|
80
|
+
PROJECTS: 'projects',
|
|
81
|
+
KEYS: 'keys',
|
|
82
|
+
USERS: 'users',
|
|
83
|
+
AUDIT_LOGS: 'audit_logs',
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* ID生成器
|
|
87
|
+
*/
|
|
88
|
+
function generateId(prefix) {
|
|
89
|
+
const timestamp = Date.now().toString(36);
|
|
90
|
+
const random = Math.random().toString(36).substring(2, 11);
|
|
91
|
+
return `${prefix}_${timestamp}${random}`;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 密码强度验证
|
|
95
|
+
*/
|
|
96
|
+
function validatePasswordStrength(password) {
|
|
97
|
+
const errors = [];
|
|
98
|
+
const policy = exports.SECURITY_CONFIG.PASSWORD_POLICY;
|
|
99
|
+
if (password.length < policy.MIN_LENGTH) {
|
|
100
|
+
errors.push(`Password must be at least ${policy.MIN_LENGTH} characters long`);
|
|
101
|
+
}
|
|
102
|
+
if (policy.REQUIRE_UPPERCASE && !/[A-Z]/.test(password)) {
|
|
103
|
+
errors.push('Password must contain at least one uppercase letter');
|
|
104
|
+
}
|
|
105
|
+
if (policy.REQUIRE_LOWERCASE && !/[a-z]/.test(password)) {
|
|
106
|
+
errors.push('Password must contain at least one lowercase letter');
|
|
107
|
+
}
|
|
108
|
+
if (policy.REQUIRE_NUMBERS && !/\d/.test(password)) {
|
|
109
|
+
errors.push('Password must contain at least one number');
|
|
110
|
+
}
|
|
111
|
+
if (policy.REQUIRE_SPECIAL_CHARS && !/[!@#$%^&*(),.?":{}|<>]/.test(password)) {
|
|
112
|
+
errors.push('Password must contain at least one special character');
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
valid: errors.length === 0,
|
|
116
|
+
errors,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 错误处理工具
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ErrorCode = void 0;
|
|
7
|
+
exports.createKMSError = createKMSError;
|
|
8
|
+
exports.asyncError = asyncError;
|
|
9
|
+
exports.formatErrorMessage = formatErrorMessage;
|
|
10
|
+
const types_1 = require("../types");
|
|
11
|
+
/**
|
|
12
|
+
* 错误代码枚举
|
|
13
|
+
*/
|
|
14
|
+
var ErrorCode;
|
|
15
|
+
(function (ErrorCode) {
|
|
16
|
+
// 项目错误 (1xxx)
|
|
17
|
+
ErrorCode["PROJECT_NOT_FOUND"] = "PROJECT_NOT_FOUND";
|
|
18
|
+
ErrorCode["PROJECT_ALREADY_EXISTS"] = "PROJECT_ALREADY_EXISTS";
|
|
19
|
+
ErrorCode["PROJECT_SUSPENDED"] = "PROJECT_SUSPENDED";
|
|
20
|
+
// 密钥错误 (2xxx)
|
|
21
|
+
ErrorCode["KEY_NOT_FOUND"] = "KEY_NOT_FOUND";
|
|
22
|
+
ErrorCode["KEY_ALREADY_EXISTS"] = "KEY_ALREADY_EXISTS";
|
|
23
|
+
ErrorCode["KEY_EXPIRED"] = "KEY_EXPIRED";
|
|
24
|
+
ErrorCode["KEY_DISABLED"] = "KEY_DISABLED";
|
|
25
|
+
// 用户错误 (3xxx)
|
|
26
|
+
ErrorCode["USER_NOT_FOUND"] = "USER_NOT_FOUND";
|
|
27
|
+
ErrorCode["USER_ALREADY_EXISTS"] = "USER_ALREADY_EXISTS";
|
|
28
|
+
ErrorCode["USER_LOCKED"] = "USER_LOCKED";
|
|
29
|
+
// 认证错误 (4xxx)
|
|
30
|
+
ErrorCode["AUTHENTICATION_FAILED"] = "AUTHENTICATION_FAILED";
|
|
31
|
+
ErrorCode["INVALID_PASSWORD"] = "INVALID_PASSWORD";
|
|
32
|
+
ErrorCode["INVALID_API_KEY"] = "INVALID_API_KEY";
|
|
33
|
+
// 权限错误 (5xxx)
|
|
34
|
+
ErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
|
|
35
|
+
ErrorCode["INSUFFICIENT_PERMISSIONS"] = "INSUFFICIENT_PERMISSIONS";
|
|
36
|
+
// 验证错误 (6xxx)
|
|
37
|
+
ErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
|
|
38
|
+
ErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
|
|
39
|
+
ErrorCode["MISSING_REQUIRED_FIELD"] = "MISSING_REQUIRED_FIELD";
|
|
40
|
+
// 加密错误 (7xxx)
|
|
41
|
+
ErrorCode["CRYPTO_ERROR"] = "CRYPTO_ERROR";
|
|
42
|
+
ErrorCode["ENCRYPTION_FAILED"] = "ENCRYPTION_FAILED";
|
|
43
|
+
ErrorCode["DECRYPTION_FAILED"] = "DECRYPTION_FAILED";
|
|
44
|
+
// 数据库错误 (8xxx)
|
|
45
|
+
ErrorCode["DATABASE_ERROR"] = "DATABASE_ERROR";
|
|
46
|
+
ErrorCode["CONNECTION_FAILED"] = "CONNECTION_FAILED";
|
|
47
|
+
// 通用错误 (9xxx)
|
|
48
|
+
ErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
49
|
+
ErrorCode["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
|
|
50
|
+
})(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
|
|
51
|
+
/**
|
|
52
|
+
* 创建KMS错误
|
|
53
|
+
*/
|
|
54
|
+
function createKMSError(code, message) {
|
|
55
|
+
const messages = {
|
|
56
|
+
[ErrorCode.PROJECT_NOT_FOUND]: 'Project not found',
|
|
57
|
+
[ErrorCode.PROJECT_ALREADY_EXISTS]: 'Project already exists',
|
|
58
|
+
[ErrorCode.PROJECT_SUSPENDED]: 'Project is suspended',
|
|
59
|
+
[ErrorCode.KEY_NOT_FOUND]: 'Key not found',
|
|
60
|
+
[ErrorCode.KEY_ALREADY_EXISTS]: 'Key already exists',
|
|
61
|
+
[ErrorCode.KEY_EXPIRED]: 'Key has expired',
|
|
62
|
+
[ErrorCode.KEY_DISABLED]: 'Key is disabled',
|
|
63
|
+
[ErrorCode.USER_NOT_FOUND]: 'User not found',
|
|
64
|
+
[ErrorCode.USER_ALREADY_EXISTS]: 'User already exists',
|
|
65
|
+
[ErrorCode.USER_LOCKED]: 'User account is locked',
|
|
66
|
+
[ErrorCode.AUTHENTICATION_FAILED]: 'Authentication failed',
|
|
67
|
+
[ErrorCode.INVALID_PASSWORD]: 'Invalid password',
|
|
68
|
+
[ErrorCode.INVALID_API_KEY]: 'Invalid API key',
|
|
69
|
+
[ErrorCode.PERMISSION_DENIED]: 'Permission denied',
|
|
70
|
+
[ErrorCode.INSUFFICIENT_PERMISSIONS]: 'Insufficient permissions',
|
|
71
|
+
[ErrorCode.VALIDATION_ERROR]: 'Validation error',
|
|
72
|
+
[ErrorCode.INVALID_INPUT]: 'Invalid input',
|
|
73
|
+
[ErrorCode.MISSING_REQUIRED_FIELD]: 'Missing required field',
|
|
74
|
+
[ErrorCode.CRYPTO_ERROR]: 'Cryptographic error',
|
|
75
|
+
[ErrorCode.ENCRYPTION_FAILED]: 'Encryption failed',
|
|
76
|
+
[ErrorCode.DECRYPTION_FAILED]: 'Decryption failed',
|
|
77
|
+
[ErrorCode.DATABASE_ERROR]: 'Database error',
|
|
78
|
+
[ErrorCode.CONNECTION_FAILED]: 'Connection failed',
|
|
79
|
+
[ErrorCode.INTERNAL_ERROR]: 'Internal error',
|
|
80
|
+
[ErrorCode.NOT_IMPLEMENTED]: 'Not implemented',
|
|
81
|
+
};
|
|
82
|
+
return new types_1.KMSError(message || messages[code], code);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 包装异步错误
|
|
86
|
+
*/
|
|
87
|
+
function asyncError(fn) {
|
|
88
|
+
return (async (...args) => {
|
|
89
|
+
try {
|
|
90
|
+
return await fn(...args);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (error instanceof types_1.KMSError) {
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
throw createKMSError(ErrorCode.INTERNAL_ERROR, error instanceof Error ? error.message : 'Unknown error');
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 格式化错误消息
|
|
102
|
+
*/
|
|
103
|
+
function formatErrorMessage(error) {
|
|
104
|
+
if (error instanceof types_1.KMSError) {
|
|
105
|
+
return `[${error.code}] ${error.message}`;
|
|
106
|
+
}
|
|
107
|
+
return error.message;
|
|
108
|
+
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,OAAO,EACP,GAAG,EACH,QAAQ,EACR,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACX,MAAM,SAAS,CAAC;AAkBjB;;GAEG;AACH,qBAAa,SAAS;IAgBR,OAAO,CAAC,OAAO;IAf3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,EAAE,CAAM;IAChB,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAAuB;gBAExB,OAAO,EAAE,gBAAgB,GAAG,yBAAyB;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -40,13 +40,28 @@ class KMSClient {
|
|
|
40
40
|
constructor(options) {
|
|
41
41
|
this.options = options;
|
|
42
42
|
const connectionString = this.resolveConnectionString(options);
|
|
43
|
-
|
|
43
|
+
// 构建 MongoClient 配置
|
|
44
|
+
const clientOptions = {
|
|
44
45
|
connectTimeoutMS: this.options.connectionOptions?.connectTimeoutMS || 10000,
|
|
45
46
|
socketTimeoutMS: this.options.connectionOptions?.socketTimeoutMS || 30000,
|
|
46
47
|
serverSelectionTimeoutMS: this.options.connectionOptions?.serverSelectionTimeoutMS || 10000,
|
|
47
48
|
maxPoolSize: this.options.connectionOptions?.maxPoolSize || 10,
|
|
48
49
|
minPoolSize: this.options.connectionOptions?.minPoolSize || 0,
|
|
49
|
-
}
|
|
50
|
+
};
|
|
51
|
+
// 添加 TLS/SSL 配置
|
|
52
|
+
const opts = this.options.connectionOptions;
|
|
53
|
+
if (opts?.tls) {
|
|
54
|
+
clientOptions.tls = true;
|
|
55
|
+
if (opts.tlsCAFile)
|
|
56
|
+
clientOptions.tlsCAFile = opts.tlsCAFile;
|
|
57
|
+
if (opts.tlsCertificateKeyFile)
|
|
58
|
+
clientOptions.tlsCertificateKeyFile = opts.tlsCertificateKeyFile;
|
|
59
|
+
if (opts.tlsAllowInvalidCertificates !== undefined)
|
|
60
|
+
clientOptions.tlsAllowInvalidCertificates = opts.tlsAllowInvalidCertificates;
|
|
61
|
+
if (opts.tlsAllowInvalidHostnames !== undefined)
|
|
62
|
+
clientOptions.tlsAllowInvalidHostnames = opts.tlsAllowInvalidHostnames;
|
|
63
|
+
}
|
|
64
|
+
this.mongoClient = new mongodb_1.MongoClient(connectionString, clientOptions);
|
|
50
65
|
}
|
|
51
66
|
/**
|
|
52
67
|
* 解析连接字符串(支持加密配置)
|
|
@@ -108,6 +123,8 @@ class KMSClient {
|
|
|
108
123
|
this.projectService = new project_service_1.ProjectService(this.projectRepo, this.userRepo, this.auditService, this.cryptoService);
|
|
109
124
|
this.authService = new auth_service_1.AuthService(this.userRepo, this.auditService);
|
|
110
125
|
this.keyService = new key_service_1.KeyService(this.keyRepo, this.auditService, this.permissionService, this.cryptoService);
|
|
126
|
+
// 设置 KeyService 的 ProjectService 引用(避免循环依赖)
|
|
127
|
+
this.keyService.setProjectService(this.projectService);
|
|
111
128
|
}
|
|
112
129
|
/**
|
|
113
130
|
* 初始化数据库索引
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qCAA0C;AAgB1C,0DAAsD;AACtD,0EAAsE;AACtE,kEAA8D;AAC9D,oEAAgE;AAChE,sEAAkE;AAClE,gEAA4D;AAC5D,wDAAoD;AACpD,0DAAsD;AACtD,sEAAkE;AAClE,4DAAwD;AAExD,yDAAkE;AAClE,gEAGkC;AAElC;;GAEG;AACH,MAAa,SAAS;IAgBA;IAfZ,WAAW,CAAc;IACzB,EAAE,CAAM;IACR,aAAa,CAAiB;IAC9B,WAAW,CAAqB;IAChC,OAAO,CAAiB;IACxB,QAAQ,CAAkB;IAC1B,SAAS,CAAmB;IAC5B,cAAc,CAAkB;IAChC,UAAU,CAAc;IACxB,WAAW,CAAe;IAC1B,iBAAiB,CAAqB;IACtC,YAAY,CAAgB;IAC5B,SAAS,GAAY,KAAK,CAAC;IAC3B,aAAa,GAAkB,IAAI,CAAC;IAE5C,YAAoB,OAAqD;QAArD,YAAO,GAAP,OAAO,CAA8C;QACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/models/key.model.js
CHANGED
|
@@ -103,7 +103,7 @@ function toKeyValue(key, decryptedValue) {
|
|
|
103
103
|
* 检查密钥是否已过期
|
|
104
104
|
*/
|
|
105
105
|
function isKeyExpired(key) {
|
|
106
|
-
return key.expiresAt
|
|
106
|
+
return key.expiresAt != null && key.expiresAt < new Date();
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
109
|
* 检查密钥是否可用
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.model.js","sourceRoot":"","sources":["../../src/models/key.model.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"key.model.js","sourceRoot":"","sources":["../../src/models/key.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,12 @@ export declare class KeyService {
|
|
|
12
12
|
private auditService;
|
|
13
13
|
private permissionService;
|
|
14
14
|
private cryptoService;
|
|
15
|
+
private projectService?;
|
|
15
16
|
constructor(keyRepo: KeyRepository, auditService: AuditService, permissionService: PermissionService, cryptoService: CryptoService);
|
|
17
|
+
/**
|
|
18
|
+
* 设置 ProjectService 引用(避免循环依赖)
|
|
19
|
+
*/
|
|
20
|
+
setProjectService(projectService: any): void;
|
|
16
21
|
/**
|
|
17
22
|
* 创建密钥
|
|
18
23
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.service.d.ts","sourceRoot":"","sources":["../../src/services/key.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,GAAG,EACH,QAAQ,EACR,aAAa,EACb,aAAa,EACb,UAAU,EAEX,MAAM,UAAU,CAAC;AAMlB,qBAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"key.service.d.ts","sourceRoot":"","sources":["../../src/services/key.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EACL,GAAG,EACH,QAAQ,EACR,aAAa,EACb,aAAa,EACb,UAAU,EAEX,MAAM,UAAU,CAAC;AAMlB,qBAAa,UAAU;IAInB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,aAAa;IANvB,OAAO,CAAC,cAAc,CAAC,CAAM;gBAGnB,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,aAAa;IAGtC;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,GAAG,GAAG,IAAI;IAI5C;;OAEG;IACG,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,GAAG,CAAC;IA0Cf;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,QAAQ,CAAC;IAuCpB;;OAEG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAO1C;;OAEG;IACG,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,GAAG,CAAC;IA2Bf;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhF;;OAEG;YACW,YAAY;CAO3B"}
|
|
@@ -14,12 +14,19 @@ class KeyService {
|
|
|
14
14
|
auditService;
|
|
15
15
|
permissionService;
|
|
16
16
|
cryptoService;
|
|
17
|
+
projectService; // 延迟注入以避免循环依赖
|
|
17
18
|
constructor(keyRepo, auditService, permissionService, cryptoService) {
|
|
18
19
|
this.keyRepo = keyRepo;
|
|
19
20
|
this.auditService = auditService;
|
|
20
21
|
this.permissionService = permissionService;
|
|
21
22
|
this.cryptoService = cryptoService;
|
|
22
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* 设置 ProjectService 引用(避免循环依赖)
|
|
26
|
+
*/
|
|
27
|
+
setProjectService(projectService) {
|
|
28
|
+
this.projectService = projectService;
|
|
29
|
+
}
|
|
23
30
|
/**
|
|
24
31
|
* 创建密钥
|
|
25
32
|
*/
|
|
@@ -125,10 +132,11 @@ class KeyService {
|
|
|
125
132
|
* 获取项目主密钥(需要从项目服务获取)
|
|
126
133
|
*/
|
|
127
134
|
async getMasterKey(projectId, masterPassword) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
135
|
+
if (!this.projectService) {
|
|
136
|
+
throw new Error('ProjectService not set. Call setProjectService() first.');
|
|
137
|
+
}
|
|
138
|
+
const masterKey = await this.projectService.unlockProjectMasterKey(projectId, masterPassword);
|
|
139
|
+
return masterKey.toString('hex');
|
|
132
140
|
}
|
|
133
141
|
}
|
|
134
142
|
exports.KeyService = KeyService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.service.js","sourceRoot":"","sources":["../../src/services/key.service.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,mDAAqG;AACrG,oCAA6D;AAC7D,oCAAiE;AACjE,2CAA0D;AAE1D,MAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"key.service.js","sourceRoot":"","sources":["../../src/services/key.service.ts"],"names":[],"mappings":"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"}
|