@aifabrix/miso-client 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/dist/src/services/logger.service.d.ts +1 -0
- package/dist/src/services/logger.service.d.ts.map +1 -1
- package/dist/src/services/logger.service.js +12 -0
- package/dist/src/services/logger.service.js.map +1 -1
- package/dist/src/types/config.types.d.ts +10 -0
- package/dist/src/types/config.types.d.ts.map +1 -1
- package/dist/src/types/config.types.js.map +1 -1
- package/dist/src/utils/audit-log-queue.d.ts +37 -0
- package/dist/src/utils/audit-log-queue.d.ts.map +1 -0
- package/dist/src/utils/audit-log-queue.js +122 -0
- package/dist/src/utils/audit-log-queue.js.map +1 -0
- package/dist/src/utils/http-client.d.ts +11 -0
- package/dist/src/utils/http-client.d.ts.map +1 -1
- package/dist/src/utils/http-client.js +210 -19
- package/dist/src/utils/http-client.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -326,6 +326,28 @@ const user = await client.getUser(token);
|
|
|
326
326
|
MISO_SENSITIVE_FIELDS_CONFIG=/path/to/sensitive-fields.config.json
|
|
327
327
|
```
|
|
328
328
|
|
|
329
|
+
**Built-in Performance Optimizations:**
|
|
330
|
+
The SDK automatically optimizes audit logging performance:
|
|
331
|
+
- Automatic response body truncation for large payloads
|
|
332
|
+
- Optimized masking operations with intelligent size-based processing
|
|
333
|
+
- Batch logging to minimize network overhead
|
|
334
|
+
- Configurable audit levels for performance tuning: `minimal`, `standard`, `detailed` (default), `full`
|
|
335
|
+
- Fast path optimizations for small requests
|
|
336
|
+
- Parallel processing for improved throughput
|
|
337
|
+
|
|
338
|
+
**Performance Configuration:**
|
|
339
|
+
|
|
340
|
+
```typescript
|
|
341
|
+
const client = new MisoClient({
|
|
342
|
+
...loadConfig(),
|
|
343
|
+
audit: {
|
|
344
|
+
level: 'standard', // Light masking, good performance
|
|
345
|
+
batchSize: 20, // Batch 20 logs per request
|
|
346
|
+
maxResponseSize: 10000 // Truncate large responses
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
```
|
|
350
|
+
|
|
329
351
|
**What gets audited:**
|
|
330
352
|
- All HTTP requests to the controller
|
|
331
353
|
- Request/response metadata (method, URL, status, duration, size)
|
|
@@ -337,6 +359,9 @@ MISO_SENSITIVE_FIELDS_CONFIG=/path/to/sensitive-fields.config.json
|
|
|
337
359
|
- Configurable sensitive field patterns
|
|
338
360
|
- Audit trail for all API communications
|
|
339
361
|
- Data protection controls enforced
|
|
362
|
+
- Optimized performance without compromising compliance
|
|
363
|
+
|
|
364
|
+
→ [Audit Configuration Guide](docs/configuration.md#audit-configuration)
|
|
340
365
|
|
|
341
366
|
→ [Custom sensitive fields example](examples/custom-sensitive-fields.example.ts)
|
|
342
367
|
→ [Sensitive fields config example](examples/sensitive-fields-config.example.json)
|
|
@@ -457,6 +482,7 @@ interface MisoClientConfig {
|
|
|
457
482
|
roleTTL?: number; // Role cache TTL (default: 900s)
|
|
458
483
|
permissionTTL?: number; // Permission cache TTL (default: 900s)
|
|
459
484
|
};
|
|
485
|
+
audit?: AuditConfig; // Optional: Audit logging configuration
|
|
460
486
|
}
|
|
461
487
|
```
|
|
462
488
|
|
|
@@ -32,6 +32,7 @@ export declare class LoggerService {
|
|
|
32
32
|
private maskSensitiveData;
|
|
33
33
|
private correlationCounter;
|
|
34
34
|
private performanceMetrics;
|
|
35
|
+
private auditLogQueue;
|
|
35
36
|
constructor(httpClient: HttpClient, redis: RedisService);
|
|
36
37
|
/**
|
|
37
38
|
* Enable or disable sensitive data masking
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../src/services/logger.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.service.d.ts","sourceRoot":"","sources":["../../../src/services/logger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,15 +8,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.LoggerChain = exports.LoggerService = void 0;
|
|
10
10
|
const data_masker_1 = require("../utils/data-masker");
|
|
11
|
+
const audit_log_queue_1 = require("../utils/audit-log-queue");
|
|
11
12
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
12
13
|
class LoggerService {
|
|
13
14
|
constructor(httpClient, redis) {
|
|
14
15
|
this.maskSensitiveData = true; // Default: mask sensitive data
|
|
15
16
|
this.correlationCounter = 0;
|
|
16
17
|
this.performanceMetrics = new Map();
|
|
18
|
+
this.auditLogQueue = null;
|
|
17
19
|
this.config = httpClient.config;
|
|
18
20
|
this.redis = redis;
|
|
19
21
|
this.httpClient = httpClient;
|
|
22
|
+
// Initialize audit log queue if batch logging is enabled
|
|
23
|
+
const auditConfig = this.config.audit || {};
|
|
24
|
+
if (auditConfig.batchSize !== undefined || auditConfig.batchInterval !== undefined) {
|
|
25
|
+
this.auditLogQueue = new audit_log_queue_1.AuditLogQueue(httpClient, redis, this.config);
|
|
26
|
+
}
|
|
20
27
|
}
|
|
21
28
|
/**
|
|
22
29
|
* Enable or disable sensitive data masking
|
|
@@ -173,6 +180,11 @@ class LoggerService {
|
|
|
173
180
|
requestId: options?.requestId,
|
|
174
181
|
...metadata
|
|
175
182
|
};
|
|
183
|
+
// Use batch queue for audit logs if available
|
|
184
|
+
if (level === 'audit' && this.auditLogQueue) {
|
|
185
|
+
await this.auditLogQueue.add(logEntry);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
176
188
|
// Try Redis first (if available)
|
|
177
189
|
if (this.redis.isConnected()) {
|
|
178
190
|
const queueName = `logs:${this.config.clientId}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../src/services/logger.service.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAIH,sDAAkD;AAElD,gEAA+B;AA0B/B,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../src/services/logger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,16 @@ export interface MisoClientConfig {
|
|
|
21
21
|
permissionTTL?: number;
|
|
22
22
|
};
|
|
23
23
|
sensitiveFieldsConfig?: string;
|
|
24
|
+
audit?: AuditConfig;
|
|
25
|
+
}
|
|
26
|
+
export interface AuditConfig {
|
|
27
|
+
enabled?: boolean;
|
|
28
|
+
level?: 'minimal' | 'standard' | 'detailed' | 'full';
|
|
29
|
+
maxResponseSize?: number;
|
|
30
|
+
maxMaskingSize?: number;
|
|
31
|
+
batchSize?: number;
|
|
32
|
+
batchInterval?: number;
|
|
33
|
+
skipEndpoints?: string[];
|
|
24
34
|
}
|
|
25
35
|
export interface UserInfo {
|
|
26
36
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAE/B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IAGrB,KAAK,CAAC,EAAE,WAAW,CAAC;IAGpB,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAG/C,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAGF,qBAAqB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.types.d.ts","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;
|
|
1
|
+
{"version":3,"file":"config.types.js","sourceRoot":"","sources":["../../../src/types/config.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA2HH,0CA4BC;AAhCD;;;GAGG;AACH,SAAgB,eAAe,CAAC,IAAa;IAC3C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,GAAG,GAAG,IAA+B,CAAC;IAE5C,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;QAChF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uDAAuD;IACvD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC;IACrD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit log queue for batching multiple logs into single requests
|
|
3
|
+
* Reduces network overhead by batching audit logs
|
|
4
|
+
*/
|
|
5
|
+
import { LogEntry, MisoClientConfig } from '../types/config.types';
|
|
6
|
+
import { HttpClient } from './http-client';
|
|
7
|
+
import { RedisService } from '../services/redis.service';
|
|
8
|
+
export declare class AuditLogQueue {
|
|
9
|
+
private queue;
|
|
10
|
+
private flushTimer;
|
|
11
|
+
private httpClient;
|
|
12
|
+
private redis;
|
|
13
|
+
private config;
|
|
14
|
+
private batchSize;
|
|
15
|
+
private batchInterval;
|
|
16
|
+
private isFlushing;
|
|
17
|
+
constructor(httpClient: HttpClient, redis: RedisService, config: MisoClientConfig);
|
|
18
|
+
/**
|
|
19
|
+
* Add log entry to queue
|
|
20
|
+
* Automatically flushes if batch size is reached
|
|
21
|
+
*/
|
|
22
|
+
add(entry: LogEntry): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Flush queued logs
|
|
25
|
+
* @param _sync - Reserved for future use (wait for flush to complete for shutdown)
|
|
26
|
+
*/
|
|
27
|
+
flush(_sync?: boolean): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get current queue size
|
|
30
|
+
*/
|
|
31
|
+
getQueueSize(): number;
|
|
32
|
+
/**
|
|
33
|
+
* Clear queue (for testing/cleanup)
|
|
34
|
+
*/
|
|
35
|
+
clear(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=audit-log-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log-queue.d.ts","sourceRoot":"","sources":["../../../src/utils/audit-log-queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAOzD,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB;IAgBjF;;;OAGG;IACG,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzC;;;OAGG;IACG,KAAK,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4DlD;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;CAOd"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Audit log queue for batching multiple logs into single requests
|
|
4
|
+
* Reduces network overhead by batching audit logs
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AuditLogQueue = void 0;
|
|
8
|
+
class AuditLogQueue {
|
|
9
|
+
constructor(httpClient, redis, config) {
|
|
10
|
+
this.queue = [];
|
|
11
|
+
this.flushTimer = null;
|
|
12
|
+
this.isFlushing = false;
|
|
13
|
+
this.httpClient = httpClient;
|
|
14
|
+
this.redis = redis;
|
|
15
|
+
this.config = config;
|
|
16
|
+
const auditConfig = config.audit || {};
|
|
17
|
+
this.batchSize = auditConfig.batchSize ?? 10;
|
|
18
|
+
this.batchInterval = auditConfig.batchInterval ?? 100;
|
|
19
|
+
// Setup graceful shutdown handler (Node.js only)
|
|
20
|
+
if (typeof process !== 'undefined') {
|
|
21
|
+
process.on('SIGINT', () => this.flush(true));
|
|
22
|
+
process.on('SIGTERM', () => this.flush(true));
|
|
23
|
+
process.on('beforeExit', () => this.flush(true));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Add log entry to queue
|
|
28
|
+
* Automatically flushes if batch size is reached
|
|
29
|
+
*/
|
|
30
|
+
async add(entry) {
|
|
31
|
+
this.queue.push({
|
|
32
|
+
entry,
|
|
33
|
+
timestamp: Date.now()
|
|
34
|
+
});
|
|
35
|
+
// Flush if batch size reached
|
|
36
|
+
if (this.queue.length >= this.batchSize) {
|
|
37
|
+
await this.flush(false);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
// Setup flush timer if not already set
|
|
41
|
+
if (!this.flushTimer && this.queue.length > 0) {
|
|
42
|
+
this.flushTimer = setTimeout(() => {
|
|
43
|
+
this.flush(false).catch(() => {
|
|
44
|
+
// Silently swallow flush errors
|
|
45
|
+
});
|
|
46
|
+
}, this.batchInterval);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Flush queued logs
|
|
51
|
+
* @param _sync - Reserved for future use (wait for flush to complete for shutdown)
|
|
52
|
+
*/
|
|
53
|
+
async flush(_sync = false) {
|
|
54
|
+
if (this.isFlushing) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Clear flush timer
|
|
58
|
+
if (this.flushTimer) {
|
|
59
|
+
clearTimeout(this.flushTimer);
|
|
60
|
+
this.flushTimer = null;
|
|
61
|
+
}
|
|
62
|
+
if (this.queue.length === 0) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.isFlushing = true;
|
|
66
|
+
try {
|
|
67
|
+
const entries = this.queue.splice(0); // Clear queue
|
|
68
|
+
if (entries.length === 0) {
|
|
69
|
+
this.isFlushing = false;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// Try Redis first (if available)
|
|
73
|
+
if (this.redis.isConnected()) {
|
|
74
|
+
const queueName = `audit-logs:${this.config.clientId}`;
|
|
75
|
+
const success = await this.redis.rpush(queueName, JSON.stringify(entries.map(e => e.entry)));
|
|
76
|
+
if (success) {
|
|
77
|
+
this.isFlushing = false;
|
|
78
|
+
return; // Successfully queued in Redis
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Fallback to HTTP batch endpoint
|
|
82
|
+
try {
|
|
83
|
+
await this.httpClient.request('POST', '/api/logs/batch', {
|
|
84
|
+
logs: entries.map(e => ({
|
|
85
|
+
...e.entry,
|
|
86
|
+
// Remove fields that backend extracts from credentials
|
|
87
|
+
environment: undefined,
|
|
88
|
+
application: undefined
|
|
89
|
+
}))
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
// Failed to send logs - could implement retry logic here
|
|
94
|
+
// For now, silently fail to avoid infinite loops
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
// Silently swallow errors - never break logging
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
this.isFlushing = false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get current queue size
|
|
106
|
+
*/
|
|
107
|
+
getQueueSize() {
|
|
108
|
+
return this.queue.length;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Clear queue (for testing/cleanup)
|
|
112
|
+
*/
|
|
113
|
+
clear() {
|
|
114
|
+
if (this.flushTimer) {
|
|
115
|
+
clearTimeout(this.flushTimer);
|
|
116
|
+
this.flushTimer = null;
|
|
117
|
+
}
|
|
118
|
+
this.queue = [];
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.AuditLogQueue = AuditLogQueue;
|
|
122
|
+
//# sourceMappingURL=audit-log-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log-queue.js","sourceRoot":"","sources":["../../../src/utils/audit-log-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,9 +23,20 @@ export declare class HttpClient {
|
|
|
23
23
|
* Extract user ID from JWT token
|
|
24
24
|
*/
|
|
25
25
|
private extractUserIdFromToken;
|
|
26
|
+
/**
|
|
27
|
+
* Quick size estimation without full JSON.stringify
|
|
28
|
+
* Uses property count and string length for fast estimation
|
|
29
|
+
*/
|
|
30
|
+
private estimateObjectSize;
|
|
31
|
+
/**
|
|
32
|
+
* Truncate response body to reduce processing cost
|
|
33
|
+
* Returns truncated body with flag indicating truncation
|
|
34
|
+
*/
|
|
35
|
+
private truncateResponseBody;
|
|
26
36
|
/**
|
|
27
37
|
* Log HTTP request audit event
|
|
28
38
|
* Masks all sensitive data before logging (ISO 27001 compliance)
|
|
39
|
+
* Optimized with size limits, fast paths, and configurable audit levels
|
|
29
40
|
*/
|
|
30
41
|
private logHttpRequestAudit;
|
|
31
42
|
get<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAe3D,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa;IAa3D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAe3D,qBAAa,UAAU;IACrB,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,MAAM,CAAgB;IAC9B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa;IAa3D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;;;OAIG;YACW,mBAAmB;IAwO3B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI7E,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5E,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAK/D,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAQP,oBAAoB,CAAC,CAAC,EAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,mDAAmD;IAClE,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;OAOG;IACG,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE;QAAE,aAAa,IAAI,MAAM,CAAA;KAAE,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAMzH;;;;;;;OAOG;IACG,YAAY,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAC/C,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;CAOd"}
|
|
@@ -66,6 +66,18 @@ class HttpClient {
|
|
|
66
66
|
* Excludes certain endpoints to prevent infinite loops
|
|
67
67
|
*/
|
|
68
68
|
shouldAuditRequest(url) {
|
|
69
|
+
// Check if audit is disabled
|
|
70
|
+
if (this.config.audit?.enabled === false) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
// Check skip endpoints
|
|
74
|
+
if (this.config.audit?.skipEndpoints) {
|
|
75
|
+
for (const endpoint of this.config.audit.skipEndpoints) {
|
|
76
|
+
if (url && url.includes(endpoint)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
69
81
|
// Don't audit the logs endpoint itself
|
|
70
82
|
if (url && url.includes('/api/logs')) {
|
|
71
83
|
return false;
|
|
@@ -94,9 +106,73 @@ class HttpClient {
|
|
|
94
106
|
return null;
|
|
95
107
|
}
|
|
96
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* Quick size estimation without full JSON.stringify
|
|
111
|
+
* Uses property count and string length for fast estimation
|
|
112
|
+
*/
|
|
113
|
+
estimateObjectSize(obj) {
|
|
114
|
+
if (obj === null || obj === undefined) {
|
|
115
|
+
return 0;
|
|
116
|
+
}
|
|
117
|
+
if (typeof obj === 'string') {
|
|
118
|
+
return obj.length;
|
|
119
|
+
}
|
|
120
|
+
if (typeof obj !== 'object') {
|
|
121
|
+
return 10; // Estimate for primitives
|
|
122
|
+
}
|
|
123
|
+
if (Array.isArray(obj)) {
|
|
124
|
+
// Estimate based on array length and first few items
|
|
125
|
+
const length = obj.length;
|
|
126
|
+
if (length === 0)
|
|
127
|
+
return 10;
|
|
128
|
+
// Sample first few items for estimation
|
|
129
|
+
const sampleSize = Math.min(3, length);
|
|
130
|
+
let estimatedItemSize = 0;
|
|
131
|
+
for (let i = 0; i < sampleSize; i++) {
|
|
132
|
+
estimatedItemSize += this.estimateObjectSize(obj[i]);
|
|
133
|
+
}
|
|
134
|
+
const avgItemSize = sampleSize > 0 ? estimatedItemSize / sampleSize : 100;
|
|
135
|
+
return length * avgItemSize;
|
|
136
|
+
}
|
|
137
|
+
// Object: estimate based on property count and values
|
|
138
|
+
const entries = Object.entries(obj);
|
|
139
|
+
let size = 0;
|
|
140
|
+
for (const [key, value] of entries) {
|
|
141
|
+
size += key.length + this.estimateObjectSize(value);
|
|
142
|
+
}
|
|
143
|
+
return size;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Truncate response body to reduce processing cost
|
|
147
|
+
* Returns truncated body with flag indicating truncation
|
|
148
|
+
*/
|
|
149
|
+
truncateResponseBody(body, maxSize = 10000) {
|
|
150
|
+
if (body === null || body === undefined) {
|
|
151
|
+
return { data: body, truncated: false };
|
|
152
|
+
}
|
|
153
|
+
// For strings, truncate directly
|
|
154
|
+
if (typeof body === 'string') {
|
|
155
|
+
if (body.length <= maxSize) {
|
|
156
|
+
return { data: body, truncated: false };
|
|
157
|
+
}
|
|
158
|
+
return { data: body.substring(0, maxSize) + '...', truncated: true };
|
|
159
|
+
}
|
|
160
|
+
// For objects/arrays, estimate size first
|
|
161
|
+
const estimatedSize = this.estimateObjectSize(body);
|
|
162
|
+
if (estimatedSize <= maxSize) {
|
|
163
|
+
return { data: body, truncated: false };
|
|
164
|
+
}
|
|
165
|
+
// If estimated size is too large, return placeholder
|
|
166
|
+
// Full body only processed in debug mode
|
|
167
|
+
return {
|
|
168
|
+
data: { _message: 'Response body too large, truncated for performance', _estimatedSize: estimatedSize },
|
|
169
|
+
truncated: true
|
|
170
|
+
};
|
|
171
|
+
}
|
|
97
172
|
/**
|
|
98
173
|
* Log HTTP request audit event
|
|
99
174
|
* Masks all sensitive data before logging (ISO 27001 compliance)
|
|
175
|
+
* Optimized with size limits, fast paths, and configurable audit levels
|
|
100
176
|
*/
|
|
101
177
|
async logHttpRequestAudit(response, error) {
|
|
102
178
|
try {
|
|
@@ -109,6 +185,12 @@ class HttpClient {
|
|
|
109
185
|
if (!metadata) {
|
|
110
186
|
return;
|
|
111
187
|
}
|
|
188
|
+
// Get audit configuration with defaults
|
|
189
|
+
const auditConfig = this.config.audit || {};
|
|
190
|
+
const auditLevel = auditConfig.level || 'detailed';
|
|
191
|
+
const maxResponseSize = auditConfig.maxResponseSize ?? 10000;
|
|
192
|
+
const maxMaskingSize = auditConfig.maxMaskingSize ?? 50000;
|
|
193
|
+
const isDebugMode = this.config.logLevel === 'debug';
|
|
112
194
|
const duration = Date.now() - metadata.startTime;
|
|
113
195
|
const method = metadata.method || 'UNKNOWN';
|
|
114
196
|
const url = metadata.url || '';
|
|
@@ -117,40 +199,149 @@ class HttpClient {
|
|
|
117
199
|
const statusCode = response?.status || error?.response?.status || 0;
|
|
118
200
|
const authHeader = config.headers?.authorization;
|
|
119
201
|
const userId = this.extractUserIdFromToken(authHeader);
|
|
120
|
-
// Extract request/response data
|
|
202
|
+
// Extract request/response data
|
|
121
203
|
const requestHeaders = config.headers || {};
|
|
122
204
|
const requestBody = config.data || error?.config?.data;
|
|
123
205
|
const responseBody = response?.data || error?.response?.data;
|
|
124
206
|
const responseHeaders = response?.headers || error?.response?.headers || {};
|
|
125
|
-
//
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
207
|
+
// Minimal audit level: Only metadata, no masking, no sizes
|
|
208
|
+
if (auditLevel === 'minimal') {
|
|
209
|
+
await this.logger.audit(`http.request.${method}`, url, {
|
|
210
|
+
method,
|
|
211
|
+
url: fullUrl,
|
|
212
|
+
statusCode,
|
|
213
|
+
duration,
|
|
214
|
+
userId: userId || undefined,
|
|
215
|
+
error: error?.message || undefined
|
|
216
|
+
}, {
|
|
217
|
+
token: userId ? undefined : authHeader?.replace('Bearer ', '')
|
|
218
|
+
});
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
// Estimate sizes for routing decisions
|
|
222
|
+
const estimatedRequestSize = requestBody ? this.estimateObjectSize(requestBody) : 0;
|
|
223
|
+
const estimatedResponseSize = responseBody ? this.estimateObjectSize(responseBody) : 0;
|
|
224
|
+
// Fast path for small requests (< 1KB) - minimal masking
|
|
225
|
+
const isSmallRequest = estimatedRequestSize < 1024 && estimatedResponseSize < 1024;
|
|
226
|
+
// Metadata-only path for large requests (> maxMaskingSize)
|
|
227
|
+
const isLargeRequest = estimatedRequestSize > maxMaskingSize || estimatedResponseSize > maxMaskingSize;
|
|
228
|
+
// Truncate response body before masking (performance optimization)
|
|
229
|
+
const { data: truncatedResponseBody, truncated: responseTruncated } = this.truncateResponseBody(responseBody, maxResponseSize);
|
|
230
|
+
// Truncate request body if needed
|
|
231
|
+
const { data: truncatedRequestBody, truncated: requestTruncated } = requestBody && this.estimateObjectSize(requestBody) > maxResponseSize
|
|
232
|
+
? this.truncateResponseBody(requestBody, maxResponseSize)
|
|
233
|
+
: { data: requestBody, truncated: false };
|
|
234
|
+
// Masking strategy based on size and audit level
|
|
235
|
+
let maskedHeaders;
|
|
236
|
+
let maskedRequestBody;
|
|
237
|
+
let maskedResponseBody;
|
|
238
|
+
let maskedResponseHeaders;
|
|
239
|
+
if (auditLevel === 'standard') {
|
|
240
|
+
// Standard level: Light masking (headers only, skip body masking for large objects)
|
|
241
|
+
maskedHeaders = data_masker_1.DataMasker.maskSensitiveData(requestHeaders);
|
|
242
|
+
maskedResponseHeaders = data_masker_1.DataMasker.maskSensitiveData(responseHeaders);
|
|
243
|
+
if (isSmallRequest) {
|
|
244
|
+
maskedRequestBody = data_masker_1.DataMasker.maskSensitiveData(truncatedRequestBody);
|
|
245
|
+
maskedResponseBody = data_masker_1.DataMasker.maskSensitiveData(truncatedResponseBody);
|
|
246
|
+
}
|
|
247
|
+
else if (isLargeRequest) {
|
|
248
|
+
maskedRequestBody = { _message: 'Request body too large, masking skipped' };
|
|
249
|
+
maskedResponseBody = { _message: 'Response body too large, masking skipped' };
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
maskedRequestBody = data_masker_1.DataMasker.maskSensitiveData(truncatedRequestBody);
|
|
253
|
+
maskedResponseBody = data_masker_1.DataMasker.maskSensitiveData(truncatedResponseBody);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
// Detailed/Full level: Full masking with parallelization
|
|
258
|
+
if (isLargeRequest) {
|
|
259
|
+
// Skip masking for very large objects
|
|
260
|
+
maskedHeaders = requestHeaders;
|
|
261
|
+
maskedResponseHeaders = responseHeaders;
|
|
262
|
+
maskedRequestBody = { _message: 'Request body too large, masking skipped' };
|
|
263
|
+
maskedResponseBody = { _message: 'Response body too large, masking skipped' };
|
|
264
|
+
}
|
|
265
|
+
else if (isSmallRequest) {
|
|
266
|
+
// Fast path: sequential masking (small objects, no benefit from parallelization)
|
|
267
|
+
maskedHeaders = data_masker_1.DataMasker.maskSensitiveData(requestHeaders);
|
|
268
|
+
maskedRequestBody = data_masker_1.DataMasker.maskSensitiveData(truncatedRequestBody);
|
|
269
|
+
maskedResponseBody = data_masker_1.DataMasker.maskSensitiveData(truncatedResponseBody);
|
|
270
|
+
maskedResponseHeaders = data_masker_1.DataMasker.maskSensitiveData(responseHeaders);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
// Parallelize masking for medium-sized objects
|
|
274
|
+
const [maskedHeadersResult, maskedRequestBodyResult, maskedResponseBodyResult, maskedResponseHeadersResult] = await Promise.all([
|
|
275
|
+
Promise.resolve(data_masker_1.DataMasker.maskSensitiveData(requestHeaders)),
|
|
276
|
+
Promise.resolve(data_masker_1.DataMasker.maskSensitiveData(truncatedRequestBody)),
|
|
277
|
+
Promise.resolve(data_masker_1.DataMasker.maskSensitiveData(truncatedResponseBody)),
|
|
278
|
+
Promise.resolve(data_masker_1.DataMasker.maskSensitiveData(responseHeaders))
|
|
279
|
+
]);
|
|
280
|
+
maskedHeaders = maskedHeadersResult;
|
|
281
|
+
maskedRequestBody = maskedRequestBodyResult;
|
|
282
|
+
maskedResponseBody = maskedResponseBodyResult;
|
|
283
|
+
maskedResponseHeaders = maskedResponseHeadersResult;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// Calculate sizes efficiently (only for detailed/full levels)
|
|
287
|
+
let requestSize;
|
|
288
|
+
let responseSize;
|
|
289
|
+
if (auditLevel === 'detailed' || auditLevel === 'full') {
|
|
290
|
+
// Reuse stringified results if available, otherwise calculate
|
|
291
|
+
let requestStr;
|
|
292
|
+
let responseStr;
|
|
293
|
+
if (requestBody) {
|
|
294
|
+
requestStr = JSON.stringify(requestBody);
|
|
295
|
+
const calculatedSize = Buffer.byteLength(requestStr);
|
|
296
|
+
// Treat empty objects/arrays as size 0 (they serialize to "{}" or "[]")
|
|
297
|
+
requestSize = calculatedSize <= 2 ? 0 : calculatedSize;
|
|
298
|
+
}
|
|
299
|
+
if (responseBody) {
|
|
300
|
+
responseStr = JSON.stringify(responseBody);
|
|
301
|
+
const calculatedSize = Buffer.byteLength(responseStr);
|
|
302
|
+
// Treat empty objects/arrays as size 0 (they serialize to "{}" or "[]")
|
|
303
|
+
responseSize = calculatedSize <= 2 ? 0 : calculatedSize;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Build audit context
|
|
307
|
+
const auditContext = {
|
|
135
308
|
method,
|
|
136
309
|
url: fullUrl,
|
|
137
310
|
statusCode,
|
|
138
311
|
duration,
|
|
139
312
|
userId: userId || undefined,
|
|
140
|
-
requestSize: requestSize > 0 ? requestSize : undefined,
|
|
141
|
-
responseSize: responseSize > 0 ? responseSize : undefined,
|
|
142
313
|
error: error?.message || undefined
|
|
143
|
-
}
|
|
314
|
+
};
|
|
315
|
+
// Add sizes only for detailed/full levels
|
|
316
|
+
if (auditLevel === 'detailed' || auditLevel === 'full') {
|
|
317
|
+
// Include size field even if 0 (as undefined) for consistency with old behavior
|
|
318
|
+
auditContext.requestSize = requestSize !== undefined && requestSize > 0 ? requestSize : undefined;
|
|
319
|
+
auditContext.responseSize = responseSize !== undefined && responseSize > 0 ? responseSize : undefined;
|
|
320
|
+
if (requestTruncated) {
|
|
321
|
+
auditContext.requestTruncated = true;
|
|
322
|
+
}
|
|
323
|
+
if (responseTruncated) {
|
|
324
|
+
auditContext.responseTruncated = true;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// Audit log - always log
|
|
328
|
+
await this.logger.audit(`http.request.${method}`, url, auditContext, {
|
|
144
329
|
token: userId ? undefined : authHeader?.replace('Bearer ', '')
|
|
145
330
|
});
|
|
146
331
|
// Debug log - only if debug mode enabled
|
|
147
|
-
|
|
332
|
+
// Note: auditLevel cannot be 'minimal' here due to early return above
|
|
333
|
+
if (isDebugMode) {
|
|
148
334
|
// Limit response body size for debug logs
|
|
149
335
|
let responseBodySnippet = maskedResponseBody;
|
|
150
|
-
if (
|
|
336
|
+
if (maskedResponseBody && typeof maskedResponseBody === 'object') {
|
|
151
337
|
const responseStr = JSON.stringify(maskedResponseBody);
|
|
152
338
|
if (responseStr.length > 1000) {
|
|
153
|
-
|
|
339
|
+
try {
|
|
340
|
+
responseBodySnippet = JSON.parse(responseStr.substring(0, 1000) + '...');
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
responseBodySnippet = { _message: 'Response body truncated' };
|
|
344
|
+
}
|
|
154
345
|
}
|
|
155
346
|
}
|
|
156
347
|
await this.logger.debug(`HTTP ${method} ${url}`, {
|
|
@@ -165,8 +356,8 @@ class HttpClient {
|
|
|
165
356
|
responseHeaders: maskedResponseHeaders,
|
|
166
357
|
requestBody: maskedRequestBody,
|
|
167
358
|
responseBody: responseBodySnippet,
|
|
168
|
-
requestSize: requestSize > 0 ? requestSize : undefined,
|
|
169
|
-
responseSize: responseSize > 0 ? responseSize : undefined,
|
|
359
|
+
requestSize: requestSize !== undefined && requestSize > 0 ? requestSize : undefined,
|
|
360
|
+
responseSize: responseSize !== undefined && responseSize > 0 ? responseSize : undefined,
|
|
170
361
|
error: error?.message || undefined
|
|
171
362
|
}, {
|
|
172
363
|
token: userId ? undefined : authHeader?.replace('Bearer ', '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
|