@gftdcojp/gftd-orm
Version:
Enterprise-grade real-time data platform with ksqlDB, inspired by Supabase architecture
158 lines • 4.37 kB
TypeScript
/**
* 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