cs-element
Version:
Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support
207 lines • 7.05 kB
TypeScript
import { CSElementPlugin } from '../types/plugin-interfaces';
import { CSElement } from '../core/CSElement';
export declare enum SecurityLevel {
PUBLIC = "public",
PROTECTED = "protected",
PRIVATE = "private",
CONFIDENTIAL = "confidential",
TOP_SECRET = "top_secret"
}
export declare enum PermissionType {
READ = "read",
WRITE = "write",
DELETE = "delete",
EXECUTE = "execute",
ADMIN = "admin"
}
export declare enum AuthenticationMethod {
PASSWORD = "password",
TOKEN = "token",
CERTIFICATE = "certificate",
BIOMETRIC = "biometric",
MULTI_FACTOR = "multi_factor"
}
export declare enum EncryptionAlgorithm {
AES_256 = "aes-256",
RSA_2048 = "rsa-2048",
ECDSA = "ecdsa",
CHACHA20 = "chacha20"
}
export interface SecurityRule {
id: string;
name: string;
description?: string;
level: SecurityLevel;
permissions: PermissionType[];
conditions?: SecurityCondition[];
actions?: SecurityAction[];
enabled: boolean;
priority: number;
createdAt: Date;
updatedAt: Date;
}
export interface SecurityCondition {
type: 'user' | 'role' | 'time' | 'location' | 'custom';
operator: 'equals' | 'not_equals' | 'contains' | 'matches' | 'greater' | 'less';
value: any;
field?: string;
}
export interface SecurityAction {
type: 'allow' | 'deny' | 'log' | 'alert' | 'encrypt' | 'audit';
parameters?: Record<string, any>;
}
export interface User {
id: string;
username: string;
email?: string;
roles: string[];
permissions: PermissionType[];
authMethods: AuthenticationMethod[];
securityLevel: SecurityLevel;
isActive: boolean;
lastLogin?: Date;
failedAttempts: number;
lockedUntil?: Date;
metadata?: Record<string, any>;
}
export interface Role {
id: string;
name: string;
description?: string;
permissions: PermissionType[];
securityLevel: SecurityLevel;
inherits?: string[];
isActive: boolean;
}
export interface SecurityContext {
user?: User;
sessionId?: string;
ipAddress?: string;
userAgent?: string;
timestamp: Date;
operation: string;
resource?: string;
metadata?: Record<string, any>;
}
export interface EncryptionConfig {
algorithm: EncryptionAlgorithm;
keySize: number;
iv?: string;
salt?: string;
iterations?: number;
}
export interface AuditLog {
id: string;
timestamp: Date;
user?: string;
operation: string;
resource?: string;
result: 'success' | 'failure' | 'denied';
details?: Record<string, any>;
securityLevel: SecurityLevel;
ipAddress?: string;
userAgent?: string;
}
export interface SecurityPluginConfig {
enabled: boolean;
defaultSecurityLevel: SecurityLevel;
encryptionConfig: EncryptionConfig;
sessionTimeout: number;
maxFailedAttempts: number;
lockoutDuration: number;
auditingEnabled: boolean;
encryptionEnabled: boolean;
requireAuthentication: boolean;
allowAnonymous: boolean;
passwordPolicy?: {
minLength: number;
requireUppercase: boolean;
requireLowercase: boolean;
requireNumbers: boolean;
requireSymbols: boolean;
maxAge: number;
};
}
export interface SecurityStats {
totalUsers: number;
activeUsers: number;
lockedUsers: number;
totalRoles: number;
totalRules: number;
activeRules: number;
auditLogs: number;
failedAttempts: number;
successfulLogins: number;
deniedOperations: number;
encryptedElements: number;
lastAuditCleanup?: Date;
}
export declare class SecurityPlugin implements CSElementPlugin {
readonly name = "SecurityPlugin";
readonly version = "1.0.0";
readonly description = "\u041F\u043B\u0430\u0433\u0438\u043D \u0434\u043B\u044F \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0435\u043D\u0438\u044F \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E\u0441\u0442\u0438, \u0430\u0443\u0442\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0446\u0438\u0438 \u0438 \u0430\u0432\u0442\u043E\u0440\u0438\u0437\u0430\u0446\u0438\u0438";
private config;
private users;
private roles;
private rules;
private sessions;
private auditLogs;
private _encryptionKeys;
/**
* Установка ключа шифрования для элемента
*/
setEncryptionKey(elementId: string, key: string): void;
/**
* Получение ключа шифрования для элемента
*/
getEncryptionKey(elementId: string): string | undefined;
private stats;
constructor(config?: Partial<SecurityPluginConfig>);
install(): void;
uninstall(): void;
getConfig(): SecurityPluginConfig;
updateConfig(newConfig: Partial<SecurityPluginConfig>): void;
beforeCreate(element: CSElement, context: any): Promise<any>;
beforeUpdate(element: CSElement, context: any): Promise<any>;
beforeDelete(element: CSElement, context: any): Promise<any>;
afterRead(element: CSElement, context: any): Promise<any>;
createUser(userData: Omit<User, 'id' | 'failedAttempts' | 'isActive'>): User;
getUser(id: string): User | undefined;
getUserByUsername(username: string): User | undefined;
updateUser(id: string, updates: Partial<User>): boolean;
deleteUser(id: string): boolean;
createRole(roleData: Omit<Role, 'id'>): Role;
getRole(id: string): Role | undefined;
updateRole(id: string, updates: Partial<Role>): boolean;
deleteRole(id: string): boolean;
addSecurityRule(ruleData: Omit<SecurityRule, 'id' | 'createdAt' | 'updatedAt'>): SecurityRule;
getSecurityRule(id: string): SecurityRule | undefined;
updateSecurityRule(id: string, updates: Partial<SecurityRule>): boolean;
deleteSecurityRule(id: string): boolean;
authenticate(username: string, password: string, _method?: AuthenticationMethod): Promise<string | null>;
logout(sessionId: string): boolean;
getSession(sessionId: string): SecurityContext | undefined;
checkPermission(context: SecurityContext, permission: PermissionType): Promise<boolean>;
checkElementAccess(context: SecurityContext, element: CSElement, permission: PermissionType): Promise<boolean>;
encryptElementData(element: CSElement, _context: SecurityContext): Promise<boolean>;
decryptElementData(element: CSElement, _context: SecurityContext): Promise<boolean>;
private logAudit;
getAuditLogs(filter?: Partial<AuditLog>): AuditLog[];
private getSecurityContext;
private compareSecurityLevels;
private verifyPassword;
private encrypt;
private decrypt;
private initializeDefaultRoles;
private cleanupExpiredSessions;
private cleanupAuditLogs;
private updateStats;
private generateId;
private generateSessionId;
getStats(): SecurityStats;
getAllUsers(): User[];
getAllRoles(): Role[];
getAllSecurityRules(): SecurityRule[];
getActiveSessions(): SecurityContext[];
}
//# sourceMappingURL=SecurityPlugin.d.ts.map