Files
makemd/server/src/services/SecurityComplianceService.ts
wurenzhi 6d0d2b6157 feat: 添加前端页面和业务说明书
refactor(server): 重构服务层代码结构
feat(server): 添加基础设施、跨境电商、AI决策等核心服务
docs: 完善前端业务说明书和开发进度文档
style: 格式化代码和文档
2026-03-18 19:12:38 +08:00

290 lines
8.9 KiB
TypeScript

import { SecurityConfig, SecurityStatus, ComplianceCheck, ComplianceResult } from '../types/security';
import { logger } from '../utils/logger';
/**
* 安全合规服务
* 负责管理系统的安全配置和合规检查
*/
export class SecurityComplianceService {
private static securityConfigs: Map<string, SecurityConfig> = new Map();
private static securityStatus: Map<string, SecurityStatus> = new Map();
private static complianceChecks: Map<string, ComplianceCheck> = new Map();
/**
* 配置安全设置
* @param config 安全配置
* @returns 配置结果
*/
static async configureSecurity(config: SecurityConfig): Promise<{ success: boolean; message: string }> {
try {
this.securityConfigs.set(config.id, config);
this.securityStatus.set(config.id, {
status: 'ACTIVE',
lastUpdated: new Date(),
complianceLevel: 'COMPLIANT'
});
logger.info(`Security config ${config.id} configured successfully`);
return { success: true, message: 'Security config configured successfully' };
} catch (error) {
logger.error(`Error configuring security: ${error}`);
return { success: false, message: `Error configuring security: ${error}` };
}
}
/**
* 执行合规检查
* @param checkId 检查ID
* @param target 检查目标
* @returns 合规检查结果
*/
static async runComplianceCheck(checkId: string, target: string): Promise<ComplianceResult> {
try {
const check = this.complianceChecks.get(checkId);
if (!check) {
return {
checkId,
target,
status: 'ERROR',
message: 'Compliance check not found',
timestamp: new Date(),
details: {}
};
}
// 模拟合规检查
await new Promise(resolve => setTimeout(resolve, 1500));
// 随机生成合规结果
const isCompliant = Math.random() > 0.2; // 80% 概率合规
const result: ComplianceResult = {
checkId,
target,
status: isCompliant ? 'COMPLIANT' : 'NON_COMPLIANT',
message: isCompliant ? 'Compliance check passed' : 'Compliance check failed',
timestamp: new Date(),
details: {
checkType: check.type,
severity: check.severity,
remediation: isCompliant ? null : `Please fix ${check.type} issues in ${target}`
}
};
logger.info(`Compliance check ${checkId} completed for ${target}, result: ${result.status}`);
return result;
} catch (error) {
logger.error(`Error running compliance check: ${error}`);
return {
checkId,
target,
status: 'ERROR',
message: `Error running compliance check: ${error}`,
timestamp: new Date(),
details: {}
};
}
}
/**
* 注册合规检查
* @param check 合规检查配置
* @returns 注册结果
*/
static async registerComplianceCheck(check: ComplianceCheck): Promise<{ success: boolean; message: string }> {
try {
this.complianceChecks.set(check.id, check);
logger.info(`Compliance check ${check.id} registered successfully`);
return { success: true, message: 'Compliance check registered successfully' };
} catch (error) {
logger.error(`Error registering compliance check: ${error}`);
return { success: false, message: `Error registering compliance check: ${error}` };
}
}
/**
* 获取安全状态
* @param configId 配置ID
* @returns 安全状态
*/
static async getSecurityStatus(configId: string): Promise<SecurityStatus | null> {
try {
const status = this.securityStatus.get(configId);
if (!status) {
return null;
}
return status;
} catch (error) {
logger.error(`Error getting security status: ${error}`);
return null;
}
}
/**
* 列出所有安全配置
* @returns 安全配置列表
*/
static async listSecurityConfigs(): Promise<Array<{ id: string; config: SecurityConfig; status: SecurityStatus }>> {
try {
const configs: Array<{ id: string; config: SecurityConfig; status: SecurityStatus }> = [];
for (const [id, config] of this.securityConfigs.entries()) {
const status = this.securityStatus.get(id) || {
status: 'INACTIVE',
lastUpdated: new Date(),
complianceLevel: 'UNKNOWN'
};
configs.push({ id, config, status });
}
return configs;
} catch (error) {
logger.error(`Error listing security configs: ${error}`);
return [];
}
}
/**
* 列出所有合规检查
* @returns 合规检查列表
*/
static async listComplianceChecks(): Promise<ComplianceCheck[]> {
try {
return Array.from(this.complianceChecks.values());
} catch (error) {
logger.error(`Error listing compliance checks: ${error}`);
return [];
}
}
/**
* 执行所有合规检查
* @param target 检查目标
* @returns 合规检查结果列表
*/
static async runAllComplianceChecks(target: string): Promise<ComplianceResult[]> {
try {
const results: ComplianceResult[] = [];
for (const check of this.complianceChecks.values()) {
const result = await this.runComplianceCheck(check.id, target);
results.push(result);
}
return results;
} catch (error) {
logger.error(`Error running all compliance checks: ${error}`);
return [];
}
}
/**
* 更新安全配置
* @param configId 配置ID
* @param updates 更新内容
* @returns 更新结果
*/
static async updateSecurityConfig(configId: string, updates: Partial<SecurityConfig>): Promise<{ success: boolean; message: string }> {
try {
const config = this.securityConfigs.get(configId);
if (!config) {
return { success: false, message: 'Security config not found' };
}
// 更新配置
const updatedConfig = { ...config, ...updates };
this.securityConfigs.set(configId, updatedConfig);
// 更新状态
const status = this.securityStatus.get(configId);
if (status) {
status.lastUpdated = new Date();
this.securityStatus.set(configId, status);
}
logger.info(`Security config ${configId} updated successfully`);
return { success: true, message: 'Security config updated successfully' };
} catch (error) {
logger.error(`Error updating security config: ${error}`);
return { success: false, message: `Error updating security config: ${error}` };
}
}
/**
* 删除安全配置
* @param configId 配置ID
* @returns 删除结果
*/
static async deleteSecurityConfig(configId: string): Promise<{ success: boolean; message: string }> {
try {
const config = this.securityConfigs.get(configId);
if (!config) {
return { success: false, message: 'Security config not found' };
}
this.securityConfigs.delete(configId);
this.securityStatus.delete(configId);
logger.info(`Security config ${configId} deleted successfully`);
return { success: true, message: 'Security config deleted successfully' };
} catch (error) {
logger.error(`Error deleting security config: ${error}`);
return { success: false, message: `Error deleting security config: ${error}` };
}
}
/**
* 删除合规检查
* @param checkId 检查ID
* @returns 删除结果
*/
static async deleteComplianceCheck(checkId: string): Promise<{ success: boolean; message: string }> {
try {
const check = this.complianceChecks.get(checkId);
if (!check) {
return { success: false, message: 'Compliance check not found' };
}
this.complianceChecks.delete(checkId);
logger.info(`Compliance check ${checkId} deleted successfully`);
return { success: true, message: 'Compliance check deleted successfully' };
} catch (error) {
logger.error(`Error deleting compliance check: ${error}`);
return { success: false, message: `Error deleting compliance check: ${error}` };
}
}
/**
* 生成安全报告
* @returns 安全报告
*/
static async generateSecurityReport(): Promise<{ success: boolean; report: any; message: string }> {
try {
const configs = await this.listSecurityConfigs();
const checks = await this.listComplianceChecks();
const report = {
generatedAt: new Date(),
summary: {
totalConfigs: configs.length,
totalChecks: checks.length,
compliantConfigs: configs.filter(c => c.status.complianceLevel === 'COMPLIANT').length
},
details: {
configs,
checks
}
};
logger.info('Security report generated successfully');
return { success: true, report, message: 'Security report generated successfully' };
} catch (error) {
logger.error(`Error generating security report: ${error}`);
return { success: false, report: null, message: `Error generating security report: ${error}` };
}
}
}