UNPKG

cs-element

Version:

Advanced reactive data management library with state machines, blueprints, persistence, compression, networking, and multithreading support

207 lines 7.05 kB
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