UNPKG

@gftdcojp/gftd-orm

Version:

Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture

158 lines 4.37 kB
/** * Audit Log System - 監査ログ機能 */ /** * 監査ログレベル */ export declare enum AuditLogLevel { INFO = "INFO", WARN = "WARN", ERROR = "ERROR", SECURITY = "SECURITY" } /** * 監査ログの種類 */ export declare enum AuditEventType { AUTH_LOGIN = "AUTH_LOGIN", AUTH_LOGOUT = "AUTH_LOGOUT", AUTH_FAILED = "AUTH_FAILED", AUTH_TOKEN_REFRESH = "AUTH_TOKEN_REFRESH", DATA_READ = "DATA_READ", DATA_WRITE = "DATA_WRITE", DATA_DELETE = "DATA_DELETE", DATA_EXPORT = "DATA_EXPORT", SYSTEM_START = "SYSTEM_START", SYSTEM_STOP = "SYSTEM_STOP", SYSTEM_ERROR = "SYSTEM_ERROR", SECURITY_VIOLATION = "SECURITY_VIOLATION", RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED", UNAUTHORIZED_ACCESS = "UNAUTHORIZED_ACCESS", ADMIN_USER_CREATE = "ADMIN_USER_CREATE", ADMIN_USER_DELETE = "ADMIN_USER_DELETE", ADMIN_POLICY_CHANGE = "ADMIN_POLICY_CHANGE" } /** * 監査ログエントリの型定義 */ interface AuditLogEntry { timestamp: string; level: AuditLogLevel; eventType: AuditEventType; userId?: string; tenantId?: string; sessionId?: string; ip?: string; userAgent?: string; resource?: string; action?: string; result: 'SUCCESS' | 'FAILURE' | 'ERROR'; message: string; details?: Record<string, any>; requestId?: string; duration?: number; } /** * 監査ログマネージャー */ export declare class AuditLogManager { private static instance; private config; private logQueue; private isProcessing; private constructor(); /** * シングルトンインスタンスを取得 */ static getInstance(): AuditLogManager; /** * 監査ログを記録 */ static log(entry: Omit<AuditLogEntry, 'timestamp'>): void; /** * 認証成功ログ */ static logAuthSuccess(userId: string, tenantId: string, sessionId: string, ip?: string): void; /** * 認証失敗ログ */ static logAuthFailure(email: string, reason: string, ip?: string): void; /** * データアクセスログ */ static logDataAccess(userId: string, tenantId: string, action: 'read' | 'write' | 'delete', resource: string, success: boolean, details?: Record<string, any>): void; /** * セキュリティ違反ログ */ static logSecurityViolation(userId: string | undefined, tenantId: string | undefined, violationType: string, details: Record<string, any>, ip?: string): void; /** * レート制限違反ログ */ static logRateLimitViolation(ip: string, endpoint: string, userId?: string): void; /** * 管理者操作ログ */ static logAdminAction(adminUserId: string, tenantId: string, action: string, targetUserId?: string, details?: Record<string, any>): void; /** * ログエントリを追加 */ private addLogEntry; /** * ログキューを処理 */ private processLogQueue; /** * ログエントリをファイルに書き込み */ private writeLogEntry; /** * ログディレクトリが存在することを確認 */ private ensureLogDirectory; /** * ログファイルのローテーション */ private checkAndRotateLog; /** * ログファイルをローテーション */ private rotateLogFile; /** * 古いログファイルを削除 */ private cleanupOldLogFiles; /** * ログを検索 */ static searchLogs(criteria: { userId?: string; tenantId?: string; eventType?: AuditEventType; startDate?: Date; endDate?: Date; limit?: number; }): Promise<AuditLogEntry[]>; /** * ログエントリを検索 */ private searchLogEntries; /** * ログエントリが検索条件に一致するかチェック */ private matchesCriteria; /** * 統計情報を取得 */ static getStatistics(tenantId?: string, startDate?: Date, endDate?: Date): Promise<{ totalEvents: number; eventsByType: Record<string, number>; eventsByUser: Record<string, number>; securityViolations: number; }>; /** * ログ統計を取得 */ private getLogStatistics; } export {}; //# sourceMappingURL=audit-log.d.ts.map