@memberjunction/encryption 5.14.0 → 5.16.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/dist/EncryptionEngine.d.ts +48 -0
- package/dist/EncryptionEngine.d.ts.map +1 -1
- package/dist/EncryptionEngine.js +91 -2
- package/dist/EncryptionEngine.js.map +1 -1
- package/dist/EncryptionKeySourceBase.d.ts +33 -1
- package/dist/EncryptionKeySourceBase.d.ts.map +1 -1
- package/dist/EncryptionKeySourceBase.js.map +1 -1
- package/dist/EncryptionStartupValidator.d.ts +58 -0
- package/dist/EncryptionStartupValidator.d.ts.map +1 -0
- package/dist/EncryptionStartupValidator.js +185 -0
- package/dist/EncryptionStartupValidator.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +23 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/providers/AWSKMSKeySource.d.ts +8 -0
- package/dist/providers/AWSKMSKeySource.d.ts.map +1 -1
- package/dist/providers/AWSKMSKeySource.js +76 -0
- package/dist/providers/AWSKMSKeySource.js.map +1 -1
- package/dist/providers/AzureKeyVaultKeySource.d.ts +8 -0
- package/dist/providers/AzureKeyVaultKeySource.d.ts.map +1 -1
- package/dist/providers/AzureKeyVaultKeySource.js +86 -2
- package/dist/providers/AzureKeyVaultKeySource.js.map +1 -1
- package/dist/providers/ConfigFileKeySource.d.ts +8 -0
- package/dist/providers/ConfigFileKeySource.d.ts.map +1 -1
- package/dist/providers/ConfigFileKeySource.js +65 -0
- package/dist/providers/ConfigFileKeySource.js.map +1 -1
- package/dist/providers/EnvVarKeySource.d.ts +8 -0
- package/dist/providers/EnvVarKeySource.d.ts.map +1 -1
- package/dist/providers/EnvVarKeySource.js +69 -0
- package/dist/providers/EnvVarKeySource.js.map +1 -1
- package/package.json +6 -6
|
@@ -290,6 +290,9 @@ export declare class EncryptionEngine extends BaseSingleton<EncryptionEngine> {
|
|
|
290
290
|
* Call after key rotation or configuration changes to ensure
|
|
291
291
|
* fresh data is loaded. The base class metadata caches are
|
|
292
292
|
* handled separately via RefreshAllItems().
|
|
293
|
+
*
|
|
294
|
+
* Key material buffers are explicitly zeroed before removal
|
|
295
|
+
* to minimize the window where sensitive bytes linger in memory.
|
|
293
296
|
*/
|
|
294
297
|
ClearCaches(): void;
|
|
295
298
|
/**
|
|
@@ -299,6 +302,22 @@ export declare class EncryptionEngine extends BaseSingleton<EncryptionEngine> {
|
|
|
299
302
|
* when you need to completely refresh all cached data.
|
|
300
303
|
*/
|
|
301
304
|
ClearAllCaches(): Promise<void>;
|
|
305
|
+
/**
|
|
306
|
+
* Zeros all key material buffers and clears the cache.
|
|
307
|
+
*
|
|
308
|
+
* Overwrites each cached Buffer with 0x00 bytes before removing
|
|
309
|
+
* references, reducing the window where key material persists
|
|
310
|
+
* in process memory awaiting garbage collection.
|
|
311
|
+
*
|
|
312
|
+
* @private
|
|
313
|
+
*/
|
|
314
|
+
private zeroAndClearKeyMaterialCache;
|
|
315
|
+
/**
|
|
316
|
+
* Zeros a single key material buffer (e.g. when replacing a stale cache entry).
|
|
317
|
+
*
|
|
318
|
+
* @private
|
|
319
|
+
*/
|
|
320
|
+
private zeroBuffer;
|
|
302
321
|
/**
|
|
303
322
|
* Ensures the engine is configured before operations.
|
|
304
323
|
*
|
|
@@ -353,5 +372,34 @@ export declare class EncryptionEngine extends BaseSingleton<EncryptionEngine> {
|
|
|
353
372
|
* @private
|
|
354
373
|
*/
|
|
355
374
|
private isValidUUID;
|
|
375
|
+
/**
|
|
376
|
+
* Validates that ALL active encryption keys have accessible key material.
|
|
377
|
+
*
|
|
378
|
+
* This method iterates through every active encryption key in the system,
|
|
379
|
+
* instantiates the appropriate key source provider, and delegates validation
|
|
380
|
+
* to each provider's `ValidateKeyAccessibility()` method. Each provider
|
|
381
|
+
* encapsulates its own validation logic and generates source-specific
|
|
382
|
+
* error messages with actionable remediation steps.
|
|
383
|
+
*
|
|
384
|
+
* The engine never touches key material during validation — that stays
|
|
385
|
+
* encapsulated within each provider.
|
|
386
|
+
*
|
|
387
|
+
* @param contextUser - User context for database access
|
|
388
|
+
* @returns Array of validation results, one per active key
|
|
389
|
+
*/
|
|
390
|
+
ValidateAllKeys(contextUser?: UserInfo): Promise<Array<{
|
|
391
|
+
KeyName: string;
|
|
392
|
+
KeyId: string;
|
|
393
|
+
SourceType: string;
|
|
394
|
+
LookupValue: string;
|
|
395
|
+
IsAccessible: boolean;
|
|
396
|
+
Error?: string;
|
|
397
|
+
}>>;
|
|
398
|
+
/**
|
|
399
|
+
* Validates a single encryption key by delegating to its source provider.
|
|
400
|
+
*
|
|
401
|
+
* @private
|
|
402
|
+
*/
|
|
403
|
+
private validateSingleKey;
|
|
356
404
|
}
|
|
357
405
|
//# sourceMappingURL=EncryptionEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionEngine.d.ts","sourceRoot":"","sources":["../src/EncryptionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"EncryptionEngine.d.ts","sourceRoot":"","sources":["../src/EncryptionEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/EncryptionEngine.js
CHANGED
|
@@ -443,9 +443,12 @@ export class EncryptionEngine extends BaseSingleton {
|
|
|
443
443
|
* Call after key rotation or configuration changes to ensure
|
|
444
444
|
* fresh data is loaded. The base class metadata caches are
|
|
445
445
|
* handled separately via RefreshAllItems().
|
|
446
|
+
*
|
|
447
|
+
* Key material buffers are explicitly zeroed before removal
|
|
448
|
+
* to minimize the window where sensitive bytes linger in memory.
|
|
446
449
|
*/
|
|
447
450
|
ClearCaches() {
|
|
448
|
-
this.
|
|
451
|
+
this.zeroAndClearKeyMaterialCache();
|
|
449
452
|
// Don't clear source cache - sources can be reused
|
|
450
453
|
}
|
|
451
454
|
/**
|
|
@@ -455,12 +458,35 @@ export class EncryptionEngine extends BaseSingleton {
|
|
|
455
458
|
* when you need to completely refresh all cached data.
|
|
456
459
|
*/
|
|
457
460
|
async ClearAllCaches() {
|
|
458
|
-
this.
|
|
461
|
+
this.zeroAndClearKeyMaterialCache();
|
|
459
462
|
await this.RefreshAllItems();
|
|
460
463
|
}
|
|
461
464
|
// ========================================================================
|
|
462
465
|
// PRIVATE METHODS
|
|
463
466
|
// ========================================================================
|
|
467
|
+
/**
|
|
468
|
+
* Zeros all key material buffers and clears the cache.
|
|
469
|
+
*
|
|
470
|
+
* Overwrites each cached Buffer with 0x00 bytes before removing
|
|
471
|
+
* references, reducing the window where key material persists
|
|
472
|
+
* in process memory awaiting garbage collection.
|
|
473
|
+
*
|
|
474
|
+
* @private
|
|
475
|
+
*/
|
|
476
|
+
zeroAndClearKeyMaterialCache() {
|
|
477
|
+
for (const entry of this._keyMaterialCache.values()) {
|
|
478
|
+
entry.value.fill(0);
|
|
479
|
+
}
|
|
480
|
+
this._keyMaterialCache.clear();
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Zeros a single key material buffer (e.g. when replacing a stale cache entry).
|
|
484
|
+
*
|
|
485
|
+
* @private
|
|
486
|
+
*/
|
|
487
|
+
zeroBuffer(buf) {
|
|
488
|
+
buf.fill(0);
|
|
489
|
+
}
|
|
464
490
|
/**
|
|
465
491
|
* Ensures the engine is configured before operations.
|
|
466
492
|
*
|
|
@@ -613,6 +639,10 @@ export class EncryptionEngine extends BaseSingleton {
|
|
|
613
639
|
if (cached && cached.expiry > new Date()) {
|
|
614
640
|
return cached.value;
|
|
615
641
|
}
|
|
642
|
+
// Zero the stale buffer before replacing it
|
|
643
|
+
if (cached) {
|
|
644
|
+
this.zeroBuffer(cached.value);
|
|
645
|
+
}
|
|
616
646
|
// Get or create the key source
|
|
617
647
|
const source = await this.getOrCreateKeySource(config.source.driverClass);
|
|
618
648
|
// Get key from source
|
|
@@ -703,5 +733,64 @@ export class EncryptionEngine extends BaseSingleton {
|
|
|
703
733
|
const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
704
734
|
return uuidPattern.test(value);
|
|
705
735
|
}
|
|
736
|
+
// ========================================================================
|
|
737
|
+
// KEY VALIDATION
|
|
738
|
+
// ========================================================================
|
|
739
|
+
/**
|
|
740
|
+
* Validates that ALL active encryption keys have accessible key material.
|
|
741
|
+
*
|
|
742
|
+
* This method iterates through every active encryption key in the system,
|
|
743
|
+
* instantiates the appropriate key source provider, and delegates validation
|
|
744
|
+
* to each provider's `ValidateKeyAccessibility()` method. Each provider
|
|
745
|
+
* encapsulates its own validation logic and generates source-specific
|
|
746
|
+
* error messages with actionable remediation steps.
|
|
747
|
+
*
|
|
748
|
+
* The engine never touches key material during validation — that stays
|
|
749
|
+
* encapsulated within each provider.
|
|
750
|
+
*
|
|
751
|
+
* @param contextUser - User context for database access
|
|
752
|
+
* @returns Array of validation results, one per active key
|
|
753
|
+
*/
|
|
754
|
+
async ValidateAllKeys(contextUser) {
|
|
755
|
+
await this.ensureConfigured(contextUser);
|
|
756
|
+
const activeKeys = this.ActiveEncryptionKeys;
|
|
757
|
+
// Validate all keys concurrently — each validation is independent
|
|
758
|
+
return Promise.all(activeKeys.map(key => this.validateSingleKey(key)));
|
|
759
|
+
}
|
|
760
|
+
/**
|
|
761
|
+
* Validates a single encryption key by delegating to its source provider.
|
|
762
|
+
*
|
|
763
|
+
* @private
|
|
764
|
+
*/
|
|
765
|
+
async validateSingleKey(key) {
|
|
766
|
+
const result = {
|
|
767
|
+
KeyName: key.Name,
|
|
768
|
+
KeyId: key.ID,
|
|
769
|
+
SourceType: '',
|
|
770
|
+
LookupValue: key.KeyLookupValue || '',
|
|
771
|
+
IsAccessible: false,
|
|
772
|
+
Error: undefined
|
|
773
|
+
};
|
|
774
|
+
try {
|
|
775
|
+
// Validate metadata configuration (key, algorithm, source all active)
|
|
776
|
+
const keyConfig = this.buildKeyConfiguration(key.ID);
|
|
777
|
+
result.SourceType = keyConfig.source.driverClass;
|
|
778
|
+
result.LookupValue = keyConfig.source.lookupValue;
|
|
779
|
+
// Get or create the key source provider
|
|
780
|
+
const source = await this.getOrCreateKeySource(keyConfig.source.driverClass);
|
|
781
|
+
// Delegate validation entirely to the provider — each provider
|
|
782
|
+
// encapsulates its own validation logic, error messages, and
|
|
783
|
+
// remediation guidance. Key material never flows back to the engine.
|
|
784
|
+
const expectedBytes = keyConfig.algorithm.keyLengthBits / 8;
|
|
785
|
+
const validation = await source.ValidateKeyAccessibility(keyConfig.source.lookupValue, keyConfig.keyVersion, expectedBytes);
|
|
786
|
+
result.IsAccessible = validation.IsAccessible;
|
|
787
|
+
result.Error = validation.Error;
|
|
788
|
+
}
|
|
789
|
+
catch (err) {
|
|
790
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
791
|
+
result.Error = message;
|
|
792
|
+
}
|
|
793
|
+
return result;
|
|
794
|
+
}
|
|
706
795
|
}
|
|
707
796
|
//# sourceMappingURL=EncryptionEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionEngine.js","sourceRoot":"","sources":["../src/EncryptionEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EncryptionEngine.js","sourceRoot":"","sources":["../src/EncryptionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
*
|
|
40
40
|
* @module @memberjunction/encryption
|
|
41
41
|
*/
|
|
42
|
-
import { EncryptionKeySourceConfig } from './interfaces.js';
|
|
42
|
+
import { EncryptionKeySourceConfig, KeyValidationResult } from './interfaces.js';
|
|
43
43
|
/**
|
|
44
44
|
* Abstract base class for encryption key source providers.
|
|
45
45
|
*
|
|
@@ -169,6 +169,38 @@ export declare abstract class EncryptionKeySourceBase {
|
|
|
169
169
|
* ```
|
|
170
170
|
*/
|
|
171
171
|
abstract KeyExists(lookupValue: string): Promise<boolean>;
|
|
172
|
+
/**
|
|
173
|
+
* Validates that a specific key is accessible and usable from this source.
|
|
174
|
+
*
|
|
175
|
+
* Each provider implements source-specific validation logic and returns
|
|
176
|
+
* actionable remediation messages on failure. This keeps key-source-specific
|
|
177
|
+
* knowledge encapsulated within the provider rather than in the engine.
|
|
178
|
+
*
|
|
179
|
+
* ## Contract
|
|
180
|
+
*
|
|
181
|
+
* - **MUST NOT** expose key material to the caller — key bytes stay inside the provider
|
|
182
|
+
* - **MUST** return `{ IsAccessible: true }` only if key material can be retrieved
|
|
183
|
+
* and passes all validation (exists, valid format, correct length if expectedKeyLengthBytes provided)
|
|
184
|
+
* - **MUST** return a human-readable `Error` string with remediation steps on failure
|
|
185
|
+
* - **SHOULD** catch all exceptions internally and return them as Error strings
|
|
186
|
+
*
|
|
187
|
+
* @param lookupValue - Identifier for the key in this source
|
|
188
|
+
* @param keyVersion - Optional version for versioned key stores
|
|
189
|
+
* @param expectedKeyLengthBytes - Optional expected key length in bytes for validation.
|
|
190
|
+
* When provided, the provider should retrieve the key and verify its length matches.
|
|
191
|
+
* @returns Promise resolving to a validation result
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```typescript
|
|
195
|
+
* const result = await source.ValidateKeyAccessibility('MJ_BASE_ENCRYPTION_KEY', '1', 32);
|
|
196
|
+
* if (!result.IsAccessible) {
|
|
197
|
+
* console.error(result.Error);
|
|
198
|
+
* // "Environment variable "MJ_BASE_ENCRYPTION_KEY" is not set.
|
|
199
|
+
* // Set it with: export MJ_BASE_ENCRYPTION_KEY=$(openssl rand -base64 32)"
|
|
200
|
+
* }
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
abstract ValidateKeyAccessibility(lookupValue: string, keyVersion?: string, expectedKeyLengthBytes?: number): Promise<KeyValidationResult>;
|
|
172
204
|
/**
|
|
173
205
|
* Optional async initialization for sources that need setup.
|
|
174
206
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionKeySourceBase.d.ts","sourceRoot":"","sources":["../src/EncryptionKeySourceBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"EncryptionKeySourceBase.d.ts","sourceRoot":"","sources":["../src/EncryptionKeySourceBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,8BAAsB,uBAAuB;IACzC;;;;;OAKG;IACH,SAAS,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAE7C;;;;;;;;OAQG;gBACS,MAAM,CAAC,EAAE,yBAAyB;IAI9C;;;;;;;OAOG;IACH,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC;IAElC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,qBAAqB,IAAI,OAAO;IAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE1E;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,QAAQ,CAAC,wBAAwB,CAC7B,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,sBAAsB,CAAC,EAAE,MAAM,GAChC,OAAO,CAAC,mBAAmB,CAAC;IAE/B;;;;;;;;;;;;;OAaG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;;;;;;;;;;;OAYG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAIjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptionKeySourceBase.js","sourceRoot":"","sources":["../src/EncryptionKeySourceBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAgB,uBAAuB;IASzC;;;;;;;;OAQG;IACH,YAAY,MAAkC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"EncryptionKeySourceBase.js","sourceRoot":"","sources":["../src/EncryptionKeySourceBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAgB,uBAAuB;IASzC;;;;;;;;OAQG;IACH,YAAY,MAAkC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAChC,CAAC;IA2HD;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,UAAU;QACZ,oDAAoD;QACpD,0CAA0C;IAC9C,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,OAAO;QACT,6CAA6C;QAC7C,+CAA+C;IACnD,CAAC;CACJ"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Startup validator for encryption key configuration.
|
|
3
|
+
*
|
|
4
|
+
* This class is registered with @RegisterForStartup to run during server bootstrap.
|
|
5
|
+
* It performs two critical validations:
|
|
6
|
+
*
|
|
7
|
+
* 1. **Field metadata check**: Ensures no entity fields have `Encrypt=true` with a null
|
|
8
|
+
* `EncryptionKeyID`, which would cause saves to be rejected at runtime.
|
|
9
|
+
*
|
|
10
|
+
* 2. **Key material accessibility**: Probes each active encryption key's source provider
|
|
11
|
+
* (env vars, config files, cloud vaults) to verify key material is actually accessible.
|
|
12
|
+
* This catches misconfigurations (missing env vars, unreachable vaults) at startup
|
|
13
|
+
* rather than at the first save/load attempt.
|
|
14
|
+
*
|
|
15
|
+
* Priority is set to 200 (runs after EncryptionEngineBase at default 100) to ensure
|
|
16
|
+
* encryption metadata is loaded before validation begins.
|
|
17
|
+
*
|
|
18
|
+
* @module @memberjunction/encryption
|
|
19
|
+
*/
|
|
20
|
+
import { IMetadataProvider, IStartupSink, UserInfo } from '@memberjunction/core';
|
|
21
|
+
import { BaseSingleton } from '@memberjunction/global';
|
|
22
|
+
/**
|
|
23
|
+
* Validates encryption key configuration at server startup.
|
|
24
|
+
*
|
|
25
|
+
* Registered with `@RegisterForStartup` at priority 200 (after metadata engines load).
|
|
26
|
+
* Severity is 'error' — validation failures are logged prominently but don't prevent
|
|
27
|
+
* startup, allowing the server to come up for non-encryption operations while making
|
|
28
|
+
* the misconfiguration impossible to miss.
|
|
29
|
+
*/
|
|
30
|
+
export declare class EncryptionStartupValidator extends BaseSingleton<EncryptionStartupValidator> implements IStartupSink {
|
|
31
|
+
protected constructor();
|
|
32
|
+
static get Instance(): EncryptionStartupValidator;
|
|
33
|
+
/**
|
|
34
|
+
* Called by StartupManager during server bootstrap.
|
|
35
|
+
*
|
|
36
|
+
* Performs two critical validations:
|
|
37
|
+
* 1. Checks that no entity fields have `Encrypt=true` with a null `EncryptionKeyID`
|
|
38
|
+
* 2. Validates that all active encryption keys have accessible key material
|
|
39
|
+
*/
|
|
40
|
+
HandleStartup(contextUser?: UserInfo, _provider?: IMetadataProvider): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Finds entity fields that have Encrypt=true but no EncryptionKeyID set.
|
|
43
|
+
*/
|
|
44
|
+
private findMisconfiguredEncryptedFields;
|
|
45
|
+
/**
|
|
46
|
+
* Logs a prominent warning about fields configured for encryption but missing key references.
|
|
47
|
+
*/
|
|
48
|
+
private logMisconfiguredFieldsWarning;
|
|
49
|
+
/**
|
|
50
|
+
* Logs a prominent error about encryption keys that cannot access their key material.
|
|
51
|
+
*/
|
|
52
|
+
private logKeyValidationFailures;
|
|
53
|
+
/**
|
|
54
|
+
* Wraps text to the specified max line length, breaking at word boundaries.
|
|
55
|
+
*/
|
|
56
|
+
private wrapText;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=EncryptionStartupValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncryptionStartupValidator.d.ts","sourceRoot":"","sources":["../src/EncryptionStartupValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAgC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD;;;;;;;GAOG;AACH,qBACa,0BAA2B,SAAQ,aAAa,CAAC,0BAA0B,CAAE,YAAW,YAAY;IAC7G,SAAS;IAIT,WAAkB,QAAQ,IAAI,0BAA0B,CAEvD;IAED;;;;;;OAMG;IACU,aAAa,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoChG;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAkBxC;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAyBrC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAsChC;;OAEG;IACH,OAAO,CAAC,QAAQ;CAgBnB"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Startup validator for encryption key configuration.
|
|
3
|
+
*
|
|
4
|
+
* This class is registered with @RegisterForStartup to run during server bootstrap.
|
|
5
|
+
* It performs two critical validations:
|
|
6
|
+
*
|
|
7
|
+
* 1. **Field metadata check**: Ensures no entity fields have `Encrypt=true` with a null
|
|
8
|
+
* `EncryptionKeyID`, which would cause saves to be rejected at runtime.
|
|
9
|
+
*
|
|
10
|
+
* 2. **Key material accessibility**: Probes each active encryption key's source provider
|
|
11
|
+
* (env vars, config files, cloud vaults) to verify key material is actually accessible.
|
|
12
|
+
* This catches misconfigurations (missing env vars, unreachable vaults) at startup
|
|
13
|
+
* rather than at the first save/load attempt.
|
|
14
|
+
*
|
|
15
|
+
* Priority is set to 200 (runs after EncryptionEngineBase at default 100) to ensure
|
|
16
|
+
* encryption metadata is loaded before validation begins.
|
|
17
|
+
*
|
|
18
|
+
* @module @memberjunction/encryption
|
|
19
|
+
*/
|
|
20
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
21
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
22
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
23
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
24
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
25
|
+
};
|
|
26
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
27
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
28
|
+
};
|
|
29
|
+
import { Metadata, RegisterForStartup } from '@memberjunction/core';
|
|
30
|
+
import { BaseSingleton } from '@memberjunction/global';
|
|
31
|
+
import { EncryptionEngine } from './EncryptionEngine.js';
|
|
32
|
+
/**
|
|
33
|
+
* Validates encryption key configuration at server startup.
|
|
34
|
+
*
|
|
35
|
+
* Registered with `@RegisterForStartup` at priority 200 (after metadata engines load).
|
|
36
|
+
* Severity is 'error' — validation failures are logged prominently but don't prevent
|
|
37
|
+
* startup, allowing the server to come up for non-encryption operations while making
|
|
38
|
+
* the misconfiguration impossible to miss.
|
|
39
|
+
*/
|
|
40
|
+
let EncryptionStartupValidator = class EncryptionStartupValidator extends BaseSingleton {
|
|
41
|
+
constructor() {
|
|
42
|
+
super();
|
|
43
|
+
}
|
|
44
|
+
static get Instance() {
|
|
45
|
+
return super.getInstance();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Called by StartupManager during server bootstrap.
|
|
49
|
+
*
|
|
50
|
+
* Performs two critical validations:
|
|
51
|
+
* 1. Checks that no entity fields have `Encrypt=true` with a null `EncryptionKeyID`
|
|
52
|
+
* 2. Validates that all active encryption keys have accessible key material
|
|
53
|
+
*/
|
|
54
|
+
async HandleStartup(contextUser, _provider) {
|
|
55
|
+
const engine = EncryptionEngine.Instance;
|
|
56
|
+
await engine.Config(false, contextUser);
|
|
57
|
+
let hasErrors = false;
|
|
58
|
+
// Phase 1: Check for fields marked Encrypt=true but missing EncryptionKeyID
|
|
59
|
+
const misconfiguredFields = this.findMisconfiguredEncryptedFields();
|
|
60
|
+
if (misconfiguredFields.length > 0) {
|
|
61
|
+
this.logMisconfiguredFieldsWarning(misconfiguredFields);
|
|
62
|
+
hasErrors = true;
|
|
63
|
+
}
|
|
64
|
+
// Phase 2: Validate all active keys have accessible key material
|
|
65
|
+
const activeKeys = engine.ActiveEncryptionKeys;
|
|
66
|
+
if (activeKeys.length > 0) {
|
|
67
|
+
const results = await engine.ValidateAllKeys(contextUser);
|
|
68
|
+
const failures = results.filter(r => !r.IsAccessible);
|
|
69
|
+
if (failures.length > 0) {
|
|
70
|
+
this.logKeyValidationFailures(failures, results.length);
|
|
71
|
+
hasErrors = true;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
console.log(` ✓ All ${results.length} encryption key(s) validated successfully`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (hasErrors) {
|
|
78
|
+
throw new Error('Encryption configuration validation failed. ' +
|
|
79
|
+
'See console output above for details and remediation steps. ' +
|
|
80
|
+
'The server will continue to start, but encrypted field operations may fail.');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Finds entity fields that have Encrypt=true but no EncryptionKeyID set.
|
|
85
|
+
*/
|
|
86
|
+
findMisconfiguredEncryptedFields() {
|
|
87
|
+
const md = new Metadata();
|
|
88
|
+
const misconfigured = [];
|
|
89
|
+
for (const entity of md.Entities) {
|
|
90
|
+
for (const field of entity.Fields) {
|
|
91
|
+
if (field.Encrypt && !field.EncryptionKeyID) {
|
|
92
|
+
misconfigured.push({
|
|
93
|
+
entityName: entity.Name,
|
|
94
|
+
fieldName: field.Name
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return misconfigured;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Logs a prominent warning about fields configured for encryption but missing key references.
|
|
103
|
+
*/
|
|
104
|
+
logMisconfiguredFieldsWarning(fields) {
|
|
105
|
+
const border = '═'.repeat(70);
|
|
106
|
+
const lines = [
|
|
107
|
+
'',
|
|
108
|
+
`╔${border}╗`,
|
|
109
|
+
`║ ENCRYPTION CONFIGURATION WARNING`.padEnd(71) + `║`,
|
|
110
|
+
`║`.padEnd(71) + `║`,
|
|
111
|
+
`║ The following fields are marked Encrypt=true but have no`.padEnd(71) + `║`,
|
|
112
|
+
`║ EncryptionKeyID configured. Data in these fields will be REJECTED`.padEnd(71) + `║`,
|
|
113
|
+
`║ on save to prevent storing cleartext sensitive data.`.padEnd(71) + `║`,
|
|
114
|
+
`║`.padEnd(71) + `║`,
|
|
115
|
+
];
|
|
116
|
+
for (const f of fields) {
|
|
117
|
+
lines.push(`║ • ${f.entityName}.${f.fieldName}`.padEnd(71) + `║`);
|
|
118
|
+
}
|
|
119
|
+
lines.push(`║`.padEnd(71) + `║`);
|
|
120
|
+
lines.push(`║ Fix: Set EncryptionKeyID on these EntityField records.`.padEnd(71) + `║`);
|
|
121
|
+
lines.push(`╚${border}╝`);
|
|
122
|
+
lines.push('');
|
|
123
|
+
console.error(lines.join('\n'));
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Logs a prominent error about encryption keys that cannot access their key material.
|
|
127
|
+
*/
|
|
128
|
+
logKeyValidationFailures(failures, totalKeys) {
|
|
129
|
+
const border = '═'.repeat(70);
|
|
130
|
+
const lines = [
|
|
131
|
+
'',
|
|
132
|
+
`╔${border}╗`,
|
|
133
|
+
`║ ENCRYPTION KEY VALIDATION FAILED`.padEnd(71) + `║`,
|
|
134
|
+
`║`.padEnd(71) + `║`,
|
|
135
|
+
`║ ${failures.length} of ${totalKeys} active encryption key(s) cannot access key material.`.padEnd(71) + `║`,
|
|
136
|
+
`║ Encrypted fields using these keys will FAIL on save/load.`.padEnd(71) + `║`,
|
|
137
|
+
`║`.padEnd(71) + `║`,
|
|
138
|
+
];
|
|
139
|
+
for (const f of failures) {
|
|
140
|
+
lines.push(`║ Key: "${f.KeyName}"`.padEnd(71) + `║`);
|
|
141
|
+
lines.push(`║ Source: ${f.SourceType}`.padEnd(71) + `║`);
|
|
142
|
+
lines.push(`║ Lookup: ${f.LookupValue}`.padEnd(71) + `║`);
|
|
143
|
+
if (f.Error) {
|
|
144
|
+
// Wrap long error messages
|
|
145
|
+
const errorPrefix = ' Error: ';
|
|
146
|
+
const maxLineLen = 68 - errorPrefix.length;
|
|
147
|
+
const errorLines = this.wrapText(f.Error, maxLineLen);
|
|
148
|
+
for (let i = 0; i < errorLines.length; i++) {
|
|
149
|
+
const prefix = i === 0 ? errorPrefix : ' '.repeat(errorPrefix.length);
|
|
150
|
+
lines.push(`║ ${prefix}${errorLines[i]}`.padEnd(71) + `║`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
lines.push(`║`.padEnd(71) + `║`);
|
|
154
|
+
}
|
|
155
|
+
lines.push(`╚${border}╝`);
|
|
156
|
+
lines.push('');
|
|
157
|
+
console.error(lines.join('\n'));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Wraps text to the specified max line length, breaking at word boundaries.
|
|
161
|
+
*/
|
|
162
|
+
wrapText(text, maxLen) {
|
|
163
|
+
const words = text.split(/\s+/);
|
|
164
|
+
const lines = [];
|
|
165
|
+
let current = '';
|
|
166
|
+
for (const word of words) {
|
|
167
|
+
if (current.length + word.length + 1 > maxLen && current.length > 0) {
|
|
168
|
+
lines.push(current);
|
|
169
|
+
current = word;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
current = current ? `${current} ${word}` : word;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (current)
|
|
176
|
+
lines.push(current);
|
|
177
|
+
return lines.length > 0 ? lines : [''];
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
EncryptionStartupValidator = __decorate([
|
|
181
|
+
RegisterForStartup({ priority: 200, severity: 'error', description: 'Encryption key material validation' }),
|
|
182
|
+
__metadata("design:paramtypes", [])
|
|
183
|
+
], EncryptionStartupValidator);
|
|
184
|
+
export { EncryptionStartupValidator };
|
|
185
|
+
//# sourceMappingURL=EncryptionStartupValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncryptionStartupValidator.js","sourceRoot":"","sources":["../src/EncryptionStartupValidator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -59,9 +59,10 @@
|
|
|
59
59
|
* @module @memberjunction/encryption
|
|
60
60
|
* @packageDocumentation
|
|
61
61
|
*/
|
|
62
|
-
export { EncryptionKeySourceConfig, EncryptedValueParts, KeyConfiguration, RotateKeyParams, RotateKeyResult, EnableFieldEncryptionParams, EnableFieldEncryptionResult } from './interfaces.js';
|
|
62
|
+
export { EncryptionKeySourceConfig, EncryptedValueParts, KeyConfiguration, KeyValidationResult, RotateKeyParams, RotateKeyResult, EnableFieldEncryptionParams, EnableFieldEncryptionResult } from './interfaces.js';
|
|
63
63
|
export { EncryptionKeySourceBase } from './EncryptionKeySourceBase.js';
|
|
64
64
|
export { EncryptionEngine } from './EncryptionEngine.js';
|
|
65
|
+
export { EncryptionStartupValidator } from './EncryptionStartupValidator.js';
|
|
65
66
|
export { EnvVarKeySource } from './providers/EnvVarKeySource.js';
|
|
66
67
|
export { ConfigFileKeySource } from './providers/ConfigFileKeySource.js';
|
|
67
68
|
export { AWSKMSKeySource } from './providers/AWSKMSKeySource.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAGH,OAAO,EACH,yBAAyB,EACzB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,2BAA2B,EAC9B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAG5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAGH,OAAO,EACH,yBAAyB,EACzB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,2BAA2B,EAC3B,2BAA2B,EAC9B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAG5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -63,6 +63,8 @@
|
|
|
63
63
|
export { EncryptionKeySourceBase } from './EncryptionKeySourceBase.js';
|
|
64
64
|
// Core encryption engine
|
|
65
65
|
export { EncryptionEngine } from './EncryptionEngine.js';
|
|
66
|
+
// Startup validation (auto-registered via @RegisterForStartup)
|
|
67
|
+
export { EncryptionStartupValidator } from './EncryptionStartupValidator.js';
|
|
66
68
|
// Built-in key source providers
|
|
67
69
|
export { EnvVarKeySource } from './providers/EnvVarKeySource.js';
|
|
68
70
|
export { ConfigFileKeySource } from './providers/ConfigFileKeySource.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAcH,sCAAsC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,yBAAyB;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,+DAA+D;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,gCAAgC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,6DAA6D;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,gDAAgD;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC"}
|