@memberjunction/encryption 0.0.1 → 2.129.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 +391 -28
- package/dist/EncryptionEngine.d.ts +351 -0
- package/dist/EncryptionEngine.d.ts.map +1 -0
- package/dist/EncryptionEngine.js +683 -0
- package/dist/EncryptionEngine.js.map +1 -0
- package/dist/EncryptionKeySourceBase.d.ts +203 -0
- package/dist/EncryptionKeySourceBase.d.ts.map +1 -0
- package/dist/EncryptionKeySourceBase.js +133 -0
- package/dist/EncryptionKeySourceBase.js.map +1 -0
- package/dist/actions/EnableFieldEncryptionAction.d.ts +87 -0
- package/dist/actions/EnableFieldEncryptionAction.d.ts.map +1 -0
- package/dist/actions/EnableFieldEncryptionAction.js +308 -0
- package/dist/actions/EnableFieldEncryptionAction.js.map +1 -0
- package/dist/actions/RotateEncryptionKeyAction.d.ts +79 -0
- package/dist/actions/RotateEncryptionKeyAction.d.ts.map +1 -0
- package/dist/actions/RotateEncryptionKeyAction.js +343 -0
- package/dist/actions/RotateEncryptionKeyAction.js.map +1 -0
- package/dist/actions/index.d.ts +12 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +17 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces.d.ts +216 -0
- package/dist/interfaces.d.ts.map +1 -0
- package/dist/interfaces.js +15 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/providers/AWSKMSKeySource.d.ts +110 -0
- package/dist/providers/AWSKMSKeySource.d.ts.map +1 -0
- package/dist/providers/AWSKMSKeySource.js +245 -0
- package/dist/providers/AWSKMSKeySource.js.map +1 -0
- package/dist/providers/AzureKeyVaultKeySource.d.ts +109 -0
- package/dist/providers/AzureKeyVaultKeySource.d.ts.map +1 -0
- package/dist/providers/AzureKeyVaultKeySource.js +268 -0
- package/dist/providers/AzureKeyVaultKeySource.js.map +1 -0
- package/dist/providers/ConfigFileKeySource.d.ts +173 -0
- package/dist/providers/ConfigFileKeySource.d.ts.map +1 -0
- package/dist/providers/ConfigFileKeySource.js +310 -0
- package/dist/providers/ConfigFileKeySource.js.map +1 -0
- package/dist/providers/EnvVarKeySource.d.ts +152 -0
- package/dist/providers/EnvVarKeySource.d.ts.map +1 -0
- package/dist/providers/EnvVarKeySource.js +251 -0
- package/dist/providers/EnvVarKeySource.js.map +1 -0
- package/package.json +65 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncryptionEngine.js","sourceRoot":"","sources":["../src/EncryptionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Abstract base class for encryption key source providers.
|
|
3
|
+
*
|
|
4
|
+
* This module defines the extensible provider pattern for retrieving encryption
|
|
5
|
+
* key material from various sources (environment variables, vault services,
|
|
6
|
+
* configuration files, etc.).
|
|
7
|
+
*
|
|
8
|
+
* ## Implementing a Custom Key Source
|
|
9
|
+
*
|
|
10
|
+
* To add a new key source:
|
|
11
|
+
*
|
|
12
|
+
* 1. Create a class extending `EncryptionKeySourceBase`
|
|
13
|
+
* 2. Decorate with `@RegisterClass(EncryptionKeySourceBase, 'YourSourceName')`
|
|
14
|
+
* 3. Implement all abstract methods
|
|
15
|
+
* 4. Register in the database `EncryptionKeySource` table
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { RegisterClass } from '@memberjunction/global';
|
|
20
|
+
* import { EncryptionKeySourceBase } from '@memberjunction/encryption';
|
|
21
|
+
*
|
|
22
|
+
* @RegisterClass(EncryptionKeySourceBase, 'CustomVaultKeySource')
|
|
23
|
+
* export class CustomVaultKeySource extends EncryptionKeySourceBase {
|
|
24
|
+
* get SourceName(): string { return 'Custom Vault'; }
|
|
25
|
+
*
|
|
26
|
+
* ValidateConfiguration(): boolean {
|
|
27
|
+
* return !!this._config.additionalConfig?.vaultUrl;
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* async GetKey(lookupValue: string): Promise<Buffer> {
|
|
31
|
+
* // Retrieve key from vault...
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* async KeyExists(lookupValue: string): Promise<boolean> {
|
|
35
|
+
* // Check if key exists in vault...
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @module @memberjunction/encryption
|
|
41
|
+
*/
|
|
42
|
+
/// <reference types="node" />
|
|
43
|
+
import { EncryptionKeySourceConfig } from './interfaces';
|
|
44
|
+
/**
|
|
45
|
+
* Abstract base class for encryption key source providers.
|
|
46
|
+
*
|
|
47
|
+
* Key sources are responsible for securely retrieving encryption key material
|
|
48
|
+
* from various backends. The MemberJunction encryption system uses the
|
|
49
|
+
* ClassFactory pattern to instantiate the appropriate provider based on
|
|
50
|
+
* database configuration.
|
|
51
|
+
*
|
|
52
|
+
* ## Security Considerations
|
|
53
|
+
*
|
|
54
|
+
* - **Never log or expose key material** - Key bytes should only be returned
|
|
55
|
+
* via the GetKey() method and immediately used for crypto operations.
|
|
56
|
+
*
|
|
57
|
+
* - **Validate inputs** - Always validate lookupValue parameters to prevent
|
|
58
|
+
* injection attacks against your backend.
|
|
59
|
+
*
|
|
60
|
+
* - **Use secure connections** - For network-based sources (vaults, KMS),
|
|
61
|
+
* always use TLS and verify certificates.
|
|
62
|
+
*
|
|
63
|
+
* - **Handle errors securely** - Don't expose internal details in error
|
|
64
|
+
* messages that could help attackers.
|
|
65
|
+
*
|
|
66
|
+
* ## Lifecycle
|
|
67
|
+
*
|
|
68
|
+
* 1. **Construction** - Provider is instantiated with config
|
|
69
|
+
* 2. **Initialize()** - Called once before first use (async setup)
|
|
70
|
+
* 3. **GetKey()/KeyExists()** - Called for each operation
|
|
71
|
+
* 4. **Dispose()** - Called during cleanup (close connections)
|
|
72
|
+
*
|
|
73
|
+
* @abstract
|
|
74
|
+
*/
|
|
75
|
+
export declare abstract class EncryptionKeySourceBase {
|
|
76
|
+
/**
|
|
77
|
+
* Configuration passed during instantiation.
|
|
78
|
+
* Contains lookupValue and any source-specific additional config.
|
|
79
|
+
*
|
|
80
|
+
* @protected
|
|
81
|
+
*/
|
|
82
|
+
protected _config: EncryptionKeySourceConfig;
|
|
83
|
+
/**
|
|
84
|
+
* Creates a new key source instance.
|
|
85
|
+
*
|
|
86
|
+
* Note: The config may be empty/undefined when using ClassFactory.
|
|
87
|
+
* Configuration is typically loaded from the database and passed
|
|
88
|
+
* when retrieving keys.
|
|
89
|
+
*
|
|
90
|
+
* @param config - Optional configuration for the key source
|
|
91
|
+
*/
|
|
92
|
+
constructor(config?: EncryptionKeySourceConfig);
|
|
93
|
+
/**
|
|
94
|
+
* Human-readable name of this key source.
|
|
95
|
+
*
|
|
96
|
+
* Used for logging, error messages, and UI display.
|
|
97
|
+
* Should be concise but descriptive.
|
|
98
|
+
*
|
|
99
|
+
* @example 'Environment Variable', 'AWS KMS', 'HashiCorp Vault'
|
|
100
|
+
*/
|
|
101
|
+
abstract get SourceName(): string;
|
|
102
|
+
/**
|
|
103
|
+
* Validates that the source is properly configured.
|
|
104
|
+
*
|
|
105
|
+
* Called before attempting key operations to fail fast on
|
|
106
|
+
* misconfiguration. Check for:
|
|
107
|
+
* - Required config values are present
|
|
108
|
+
* - Config values are in expected format
|
|
109
|
+
* - Connectivity to backend (for network sources)
|
|
110
|
+
*
|
|
111
|
+
* @returns `true` if configuration is valid, `false` otherwise
|
|
112
|
+
*/
|
|
113
|
+
abstract ValidateConfiguration(): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Retrieves the raw key material for the given lookup value.
|
|
116
|
+
*
|
|
117
|
+
* ## Security Requirements
|
|
118
|
+
*
|
|
119
|
+
* - Return key bytes directly, don't cache them in the provider
|
|
120
|
+
* - Never log the key material
|
|
121
|
+
* - Throw descriptive errors on failure (without exposing secrets)
|
|
122
|
+
* - Validate lookupValue format before using it
|
|
123
|
+
*
|
|
124
|
+
* ## Key Format
|
|
125
|
+
*
|
|
126
|
+
* Keys should be base64-encoded in the source storage.
|
|
127
|
+
* The provider decodes and returns raw bytes.
|
|
128
|
+
*
|
|
129
|
+
* @param lookupValue - Identifier for the key in this source
|
|
130
|
+
* - Env vars: the variable name (e.g., 'MJ_ENCRYPTION_KEY_PII')
|
|
131
|
+
* - Config files: the key name (e.g., 'pii_master_key')
|
|
132
|
+
* - Vaults: the secret path (e.g., '/secrets/encryption/pii')
|
|
133
|
+
*
|
|
134
|
+
* @param keyVersion - Optional version for versioned key stores.
|
|
135
|
+
* Some sources (like vaults) maintain multiple versions.
|
|
136
|
+
* If not specified, returns the current/latest version.
|
|
137
|
+
*
|
|
138
|
+
* @returns Promise resolving to raw key bytes as a Buffer.
|
|
139
|
+
* The buffer length must match the algorithm's KeyLengthBits/8.
|
|
140
|
+
*
|
|
141
|
+
* @throws Error if the key cannot be retrieved with a descriptive message
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* // Simple retrieval
|
|
146
|
+
* const key = await source.GetKey('MJ_ENCRYPTION_KEY_PII');
|
|
147
|
+
*
|
|
148
|
+
* // With version for rotation
|
|
149
|
+
* const oldKey = await source.GetKey('MJ_ENCRYPTION_KEY_PII', '1');
|
|
150
|
+
* const newKey = await source.GetKey('MJ_ENCRYPTION_KEY_PII', '2');
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
abstract GetKey(lookupValue: string, keyVersion?: string): Promise<Buffer>;
|
|
154
|
+
/**
|
|
155
|
+
* Checks if a key exists without retrieving it.
|
|
156
|
+
*
|
|
157
|
+
* Used for validation before operations that would fail on missing keys.
|
|
158
|
+
* More efficient than GetKey() when you only need existence check.
|
|
159
|
+
*
|
|
160
|
+
* @param lookupValue - Identifier for the key in this source
|
|
161
|
+
* @returns Promise resolving to `true` if key exists, `false` otherwise
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```typescript
|
|
165
|
+
* if (await source.KeyExists('NEW_ROTATION_KEY')) {
|
|
166
|
+
* // Safe to proceed with key rotation
|
|
167
|
+
* } else {
|
|
168
|
+
* throw new Error('New key must be set before rotation');
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
abstract KeyExists(lookupValue: string): Promise<boolean>;
|
|
173
|
+
/**
|
|
174
|
+
* Optional async initialization for sources that need setup.
|
|
175
|
+
*
|
|
176
|
+
* Called once by the encryption engine before first use.
|
|
177
|
+
* Use this for:
|
|
178
|
+
* - Loading config files
|
|
179
|
+
* - Establishing connections to vault services
|
|
180
|
+
* - Authenticating with cloud key management
|
|
181
|
+
* - Caching frequently-accessed metadata
|
|
182
|
+
*
|
|
183
|
+
* The default implementation is a no-op for simple sources.
|
|
184
|
+
*
|
|
185
|
+
* @virtual Override in subclasses that need async initialization
|
|
186
|
+
*/
|
|
187
|
+
Initialize(): Promise<void>;
|
|
188
|
+
/**
|
|
189
|
+
* Optional cleanup for sources with connections or resources.
|
|
190
|
+
*
|
|
191
|
+
* Called during graceful shutdown to release resources.
|
|
192
|
+
* Use this for:
|
|
193
|
+
* - Closing vault connections
|
|
194
|
+
* - Releasing pooled resources
|
|
195
|
+
* - Flushing any pending operations
|
|
196
|
+
*
|
|
197
|
+
* The default implementation is a no-op for stateless sources.
|
|
198
|
+
*
|
|
199
|
+
* @virtual Override in subclasses that hold resources
|
|
200
|
+
*/
|
|
201
|
+
Dispose(): Promise<void>;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=EncryptionKeySourceBase.d.ts.map
|
|
@@ -0,0 +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;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;OAaG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;;;;;;;;;;;OAYG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAIjC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Abstract base class for encryption key source providers.
|
|
4
|
+
*
|
|
5
|
+
* This module defines the extensible provider pattern for retrieving encryption
|
|
6
|
+
* key material from various sources (environment variables, vault services,
|
|
7
|
+
* configuration files, etc.).
|
|
8
|
+
*
|
|
9
|
+
* ## Implementing a Custom Key Source
|
|
10
|
+
*
|
|
11
|
+
* To add a new key source:
|
|
12
|
+
*
|
|
13
|
+
* 1. Create a class extending `EncryptionKeySourceBase`
|
|
14
|
+
* 2. Decorate with `@RegisterClass(EncryptionKeySourceBase, 'YourSourceName')`
|
|
15
|
+
* 3. Implement all abstract methods
|
|
16
|
+
* 4. Register in the database `EncryptionKeySource` table
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { RegisterClass } from '@memberjunction/global';
|
|
21
|
+
* import { EncryptionKeySourceBase } from '@memberjunction/encryption';
|
|
22
|
+
*
|
|
23
|
+
* @RegisterClass(EncryptionKeySourceBase, 'CustomVaultKeySource')
|
|
24
|
+
* export class CustomVaultKeySource extends EncryptionKeySourceBase {
|
|
25
|
+
* get SourceName(): string { return 'Custom Vault'; }
|
|
26
|
+
*
|
|
27
|
+
* ValidateConfiguration(): boolean {
|
|
28
|
+
* return !!this._config.additionalConfig?.vaultUrl;
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* async GetKey(lookupValue: string): Promise<Buffer> {
|
|
32
|
+
* // Retrieve key from vault...
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* async KeyExists(lookupValue: string): Promise<boolean> {
|
|
36
|
+
* // Check if key exists in vault...
|
|
37
|
+
* }
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @module @memberjunction/encryption
|
|
42
|
+
*/
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.EncryptionKeySourceBase = void 0;
|
|
45
|
+
/**
|
|
46
|
+
* Abstract base class for encryption key source providers.
|
|
47
|
+
*
|
|
48
|
+
* Key sources are responsible for securely retrieving encryption key material
|
|
49
|
+
* from various backends. The MemberJunction encryption system uses the
|
|
50
|
+
* ClassFactory pattern to instantiate the appropriate provider based on
|
|
51
|
+
* database configuration.
|
|
52
|
+
*
|
|
53
|
+
* ## Security Considerations
|
|
54
|
+
*
|
|
55
|
+
* - **Never log or expose key material** - Key bytes should only be returned
|
|
56
|
+
* via the GetKey() method and immediately used for crypto operations.
|
|
57
|
+
*
|
|
58
|
+
* - **Validate inputs** - Always validate lookupValue parameters to prevent
|
|
59
|
+
* injection attacks against your backend.
|
|
60
|
+
*
|
|
61
|
+
* - **Use secure connections** - For network-based sources (vaults, KMS),
|
|
62
|
+
* always use TLS and verify certificates.
|
|
63
|
+
*
|
|
64
|
+
* - **Handle errors securely** - Don't expose internal details in error
|
|
65
|
+
* messages that could help attackers.
|
|
66
|
+
*
|
|
67
|
+
* ## Lifecycle
|
|
68
|
+
*
|
|
69
|
+
* 1. **Construction** - Provider is instantiated with config
|
|
70
|
+
* 2. **Initialize()** - Called once before first use (async setup)
|
|
71
|
+
* 3. **GetKey()/KeyExists()** - Called for each operation
|
|
72
|
+
* 4. **Dispose()** - Called during cleanup (close connections)
|
|
73
|
+
*
|
|
74
|
+
* @abstract
|
|
75
|
+
*/
|
|
76
|
+
class EncryptionKeySourceBase {
|
|
77
|
+
/**
|
|
78
|
+
* Configuration passed during instantiation.
|
|
79
|
+
* Contains lookupValue and any source-specific additional config.
|
|
80
|
+
*
|
|
81
|
+
* @protected
|
|
82
|
+
*/
|
|
83
|
+
_config;
|
|
84
|
+
/**
|
|
85
|
+
* Creates a new key source instance.
|
|
86
|
+
*
|
|
87
|
+
* Note: The config may be empty/undefined when using ClassFactory.
|
|
88
|
+
* Configuration is typically loaded from the database and passed
|
|
89
|
+
* when retrieving keys.
|
|
90
|
+
*
|
|
91
|
+
* @param config - Optional configuration for the key source
|
|
92
|
+
*/
|
|
93
|
+
constructor(config) {
|
|
94
|
+
this._config = config || {};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Optional async initialization for sources that need setup.
|
|
98
|
+
*
|
|
99
|
+
* Called once by the encryption engine before first use.
|
|
100
|
+
* Use this for:
|
|
101
|
+
* - Loading config files
|
|
102
|
+
* - Establishing connections to vault services
|
|
103
|
+
* - Authenticating with cloud key management
|
|
104
|
+
* - Caching frequently-accessed metadata
|
|
105
|
+
*
|
|
106
|
+
* The default implementation is a no-op for simple sources.
|
|
107
|
+
*
|
|
108
|
+
* @virtual Override in subclasses that need async initialization
|
|
109
|
+
*/
|
|
110
|
+
async Initialize() {
|
|
111
|
+
// Default implementation - no initialization needed
|
|
112
|
+
// Subclasses can override for async setup
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Optional cleanup for sources with connections or resources.
|
|
116
|
+
*
|
|
117
|
+
* Called during graceful shutdown to release resources.
|
|
118
|
+
* Use this for:
|
|
119
|
+
* - Closing vault connections
|
|
120
|
+
* - Releasing pooled resources
|
|
121
|
+
* - Flushing any pending operations
|
|
122
|
+
*
|
|
123
|
+
* The default implementation is a no-op for stateless sources.
|
|
124
|
+
*
|
|
125
|
+
* @virtual Override in subclasses that hold resources
|
|
126
|
+
*/
|
|
127
|
+
async Dispose() {
|
|
128
|
+
// Default implementation - no cleanup needed
|
|
129
|
+
// Subclasses can override for resource cleanup
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.EncryptionKeySourceBase = EncryptionKeySourceBase;
|
|
133
|
+
//# sourceMappingURL=EncryptionKeySourceBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EncryptionKeySourceBase.js","sourceRoot":"","sources":["../src/EncryptionKeySourceBase.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAsB,uBAAuB;IACzC;;;;;OAKG;IACO,OAAO,CAA4B;IAE7C;;;;;;;;OAQG;IACH,YAAY,MAAkC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;IAChC,CAAC;IAsFD;;;;;;;;;;;;;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;AA9ID,0DA8IC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Action for enabling encryption on an existing entity field.
|
|
3
|
+
*
|
|
4
|
+
* When encryption is enabled on a field that already has data, this action:
|
|
5
|
+
* 1. Verifies the encryption key is valid and accessible
|
|
6
|
+
* 2. Loads existing records in batches
|
|
7
|
+
* 3. Encrypts all non-null values
|
|
8
|
+
* 4. Saves the encrypted values back to the database
|
|
9
|
+
*
|
|
10
|
+
* ## Usage
|
|
11
|
+
*
|
|
12
|
+
* This action is typically invoked after updating the EntityField metadata
|
|
13
|
+
* to enable encryption:
|
|
14
|
+
*
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // First, update the EntityField to enable encryption
|
|
17
|
+
* entityField.Encrypt = true;
|
|
18
|
+
* entityField.EncryptionKeyID = 'key-uuid';
|
|
19
|
+
* await entityField.Save();
|
|
20
|
+
*
|
|
21
|
+
* // Then, encrypt existing data
|
|
22
|
+
* const result = await actionEngine.RunAction({
|
|
23
|
+
* ActionName: 'Enable Field Encryption',
|
|
24
|
+
* Params: [
|
|
25
|
+
* { Name: 'EntityFieldID', Value: entityField.ID },
|
|
26
|
+
* { Name: 'BatchSize', Value: 100 }
|
|
27
|
+
* ],
|
|
28
|
+
* ContextUser: currentUser
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* ## Security Considerations
|
|
33
|
+
*
|
|
34
|
+
* - This is a one-way operation - plaintext is replaced with ciphertext
|
|
35
|
+
* - Ensure backups exist before running
|
|
36
|
+
* - Values that are already encrypted are skipped
|
|
37
|
+
* - Empty/null values are not encrypted
|
|
38
|
+
*
|
|
39
|
+
* @module @memberjunction/encryption
|
|
40
|
+
*/
|
|
41
|
+
import { ActionResultSimple, RunActionParams } from '@memberjunction/actions-base';
|
|
42
|
+
/**
|
|
43
|
+
* Action for encrypting existing data when encryption is enabled on a field.
|
|
44
|
+
*
|
|
45
|
+
* This action handles the initial encryption of existing plaintext data
|
|
46
|
+
* after the Encrypt flag is set on an EntityField.
|
|
47
|
+
*
|
|
48
|
+
* ## Process
|
|
49
|
+
*
|
|
50
|
+
* 1. Loads the EntityField metadata to get encryption settings
|
|
51
|
+
* 2. Validates the encryption key is accessible
|
|
52
|
+
* 3. Queries for all records where the field is not null
|
|
53
|
+
* 4. For each record:
|
|
54
|
+
* - Skip if already encrypted
|
|
55
|
+
* - Encrypt the plaintext value
|
|
56
|
+
* - Save the encrypted value
|
|
57
|
+
* 5. Returns statistics on encrypted/skipped records
|
|
58
|
+
*
|
|
59
|
+
* ## Batch Processing
|
|
60
|
+
*
|
|
61
|
+
* Records are processed in configurable batches to manage memory
|
|
62
|
+
* and allow for progress tracking.
|
|
63
|
+
*
|
|
64
|
+
* @security This is a privileged operation that modifies data.
|
|
65
|
+
* Should be restricted to administrators.
|
|
66
|
+
*/
|
|
67
|
+
export declare class EnableFieldEncryptionAction {
|
|
68
|
+
/**
|
|
69
|
+
* Executes the field encryption operation.
|
|
70
|
+
*
|
|
71
|
+
* @param params - Action parameters including EntityFieldID and optional BatchSize
|
|
72
|
+
* @returns Result with counts of encrypted and skipped records
|
|
73
|
+
*/
|
|
74
|
+
Run(params: RunActionParams): Promise<ActionResultSimple>;
|
|
75
|
+
/**
|
|
76
|
+
* Performs the actual field encryption operation.
|
|
77
|
+
*
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
private enableFieldEncryption;
|
|
81
|
+
/**
|
|
82
|
+
* Helper to extract parameter value by name.
|
|
83
|
+
* @private
|
|
84
|
+
*/
|
|
85
|
+
private getParamValue;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=EnableFieldEncryptionAction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnableFieldEncryptionAction.d.ts","sourceRoot":"","sources":["../../src/actions/EnableFieldEncryptionAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAe,MAAM,8BAA8B,CAAC;AAIhG;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,2BAA2B;IACpC;;;;;OAKG;IACU,GAAG,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0DtE;;;;OAIG;YACW,qBAAqB;IA6LnC;;;OAGG;IACH,OAAO,CAAC,aAAa;CAIxB"}
|