@mitre/hdf-schema 3.2.0 → 3.3.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 +15 -16
- package/dist/go/hdf.go +398 -134
- package/dist/helpers.d.ts +1 -1
- package/dist/index.d.ts +27 -52
- package/dist/index.js +30 -48
- package/dist/schemas/hdf-amendments.schema.json +466 -45
- package/dist/schemas/hdf-baseline.schema.json +471 -50
- package/dist/schemas/hdf-comparison.schema.json +721 -103
- package/dist/schemas/hdf-evidence-package.schema.json +465 -44
- package/dist/schemas/hdf-plan.schema.json +472 -50
- package/dist/schemas/hdf-results.schema.json +678 -80
- package/dist/schemas/hdf-system.schema.json +497 -59
- package/dist/ts/hdf.d.ts +3562 -0
- package/dist/ts/hdf.js +564 -0
- package/dist/ts/hdf.ts +3623 -0
- package/package.json +18 -17
- package/dist/ts/hdf-amendments.d.ts +0 -474
- package/dist/ts/hdf-amendments.js +0 -88
- package/dist/ts/hdf-amendments.ts +0 -486
- package/dist/ts/hdf-baseline.d.ts +0 -549
- package/dist/ts/hdf-baseline.js +0 -110
- package/dist/ts/hdf-baseline.ts +0 -563
- package/dist/ts/hdf-comparison.d.ts +0 -1185
- package/dist/ts/hdf-comparison.js +0 -216
- package/dist/ts/hdf-comparison.ts +0 -1210
- package/dist/ts/hdf-evidence-package.d.ts +0 -348
- package/dist/ts/hdf-evidence-package.js +0 -39
- package/dist/ts/hdf-evidence-package.ts +0 -356
- package/dist/ts/hdf-plan.d.ts +0 -204
- package/dist/ts/hdf-plan.js +0 -23
- package/dist/ts/hdf-plan.ts +0 -205
- package/dist/ts/hdf-results.d.ts +0 -1588
- package/dist/ts/hdf-results.js +0 -246
- package/dist/ts/hdf-results.ts +0 -1616
- package/dist/ts/hdf-system.d.ts +0 -609
- package/dist/ts/hdf-system.js +0 -102
- package/dist/ts/hdf-system.ts +0 -617
package/dist/ts/hdf-system.ts
DELETED
|
@@ -1,617 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Describes a system's authorization boundary, components, and interconnections. Maps to
|
|
3
|
-
* OSCAL SSP system-characteristics and FedRAMP system inventory.
|
|
4
|
-
*/
|
|
5
|
-
export interface HdfSystem {
|
|
6
|
-
/**
|
|
7
|
-
* Date the current authorization status was granted. ISO 8601 format.
|
|
8
|
-
*/
|
|
9
|
-
authorizationDate?: Date;
|
|
10
|
-
/**
|
|
11
|
-
* Current Authorization to Operate (ATO) status.
|
|
12
|
-
*/
|
|
13
|
-
authorizationStatus?: AuthorizationStatus;
|
|
14
|
-
/**
|
|
15
|
-
* Description of the system's authorization boundary. Example: network CIDR blocks, cloud
|
|
16
|
-
* VPC IDs, physical locations.
|
|
17
|
-
*/
|
|
18
|
-
boundaryDescription?: string;
|
|
19
|
-
/**
|
|
20
|
-
* FIPS 199 security categorization (impact level).
|
|
21
|
-
*/
|
|
22
|
-
categorizationLevel?: CategorizationLevel;
|
|
23
|
-
/**
|
|
24
|
-
* System components within the authorization boundary. Uses the full polymorphic Component
|
|
25
|
-
* type with stable identity (componentId), external references, and SBOM support.
|
|
26
|
-
*/
|
|
27
|
-
components: Component[];
|
|
28
|
-
/**
|
|
29
|
-
* Declares which controls are common, hybrid, or system-specific, and which component
|
|
30
|
-
* provides them. Maps to NIST SP 800-53 control designations and OSCAL
|
|
31
|
-
* leveraged-authorizations.
|
|
32
|
-
*/
|
|
33
|
-
controlDesignations?: ControlDesignation[];
|
|
34
|
-
/**
|
|
35
|
-
* Inter-component data flows describing how components communicate. Supports local,
|
|
36
|
-
* cross-system, and external flows. Replaces the interconnections[] field.
|
|
37
|
-
*/
|
|
38
|
-
dataFlows?: DataFlow[];
|
|
39
|
-
/**
|
|
40
|
-
* Description of the system's purpose and mission.
|
|
41
|
-
*/
|
|
42
|
-
description?: string;
|
|
43
|
-
/**
|
|
44
|
-
* Information about the tool that generated this system document.
|
|
45
|
-
*/
|
|
46
|
-
generator?: Generator;
|
|
47
|
-
/**
|
|
48
|
-
* System identifier from an authoritative source. Example: eMASS system ID, FedRAMP package
|
|
49
|
-
* ID.
|
|
50
|
-
*/
|
|
51
|
-
identifier?: string;
|
|
52
|
-
/**
|
|
53
|
-
* URI identifying the scheme of the system identifier. Example: 'https://emass.mil',
|
|
54
|
-
* 'https://fedramp.gov'.
|
|
55
|
-
*/
|
|
56
|
-
identifierScheme?: string;
|
|
57
|
-
/**
|
|
58
|
-
* Cryptographic integrity information for verifying this system document has not been
|
|
59
|
-
* tampered with.
|
|
60
|
-
*/
|
|
61
|
-
integrity?: Integrity;
|
|
62
|
-
/**
|
|
63
|
-
* Optional key-value labels for grouping and querying systems.
|
|
64
|
-
*/
|
|
65
|
-
labels?: { [key: string]: string };
|
|
66
|
-
/**
|
|
67
|
-
* Human-readable system name. Example: 'Enterprise Portal Production'.
|
|
68
|
-
*/
|
|
69
|
-
name: string;
|
|
70
|
-
/**
|
|
71
|
-
* Team or individual responsible for this system's authorization and compliance. Maps to
|
|
72
|
-
* OSCAL responsible-party with role 'system-owner'.
|
|
73
|
-
*/
|
|
74
|
-
owner?: Identity;
|
|
75
|
-
/**
|
|
76
|
-
* Stable UUID (RFC 4122) for this system. Enables cross-document correlation independent of
|
|
77
|
-
* file location. Optional in casual use, expected in production documents.
|
|
78
|
-
*/
|
|
79
|
-
systemId?: string;
|
|
80
|
-
/**
|
|
81
|
-
* Version of this system document.
|
|
82
|
-
*/
|
|
83
|
-
version?: string;
|
|
84
|
-
[property: string]: any;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Current Authorization to Operate (ATO) status.
|
|
89
|
-
*
|
|
90
|
-
* Authorization to Operate (ATO) status for the system.
|
|
91
|
-
*/
|
|
92
|
-
export enum AuthorizationStatus {
|
|
93
|
-
Authorized = "authorized",
|
|
94
|
-
ConditionallyAuthorized = "conditionallyAuthorized",
|
|
95
|
-
Denied = "denied",
|
|
96
|
-
NotYetRequested = "notYetRequested",
|
|
97
|
-
PendingAuthorization = "pendingAuthorization",
|
|
98
|
-
Revoked = "revoked",
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* FIPS 199 security categorization (impact level).
|
|
103
|
-
*
|
|
104
|
-
* FIPS 199 security categorization level (impact level).
|
|
105
|
-
*/
|
|
106
|
-
export enum CategorizationLevel {
|
|
107
|
-
High = "high",
|
|
108
|
-
Low = "low",
|
|
109
|
-
Moderate = "moderate",
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* A system component. Uses discriminated union pattern with 'type' field as discriminator.
|
|
114
|
-
* Superset of Target with identity, external IDs, and SBOM support.
|
|
115
|
-
*
|
|
116
|
-
* A physical or virtual server, workstation, or network device.
|
|
117
|
-
*
|
|
118
|
-
* Base properties shared by all component types. Extends the Target concept with stable
|
|
119
|
-
* identity, external references, and SBOM embedding.
|
|
120
|
-
*
|
|
121
|
-
* A static container image (not running).
|
|
122
|
-
*
|
|
123
|
-
* A running container instance.
|
|
124
|
-
*
|
|
125
|
-
* A container orchestration platform (Kubernetes, OpenShift, ECS, etc.).
|
|
126
|
-
*
|
|
127
|
-
* A cloud provider account (AWS account, Azure subscription, GCP project).
|
|
128
|
-
*
|
|
129
|
-
* A specific cloud resource (EC2 instance, S3 bucket, Azure VM, etc.).
|
|
130
|
-
*
|
|
131
|
-
* A code repository (for SAST tools).
|
|
132
|
-
*
|
|
133
|
-
* A running application or API (for DAST tools).
|
|
134
|
-
*
|
|
135
|
-
* A software artifact or dependency (for SCA tools).
|
|
136
|
-
*
|
|
137
|
-
* A network segment or network device.
|
|
138
|
-
*
|
|
139
|
-
* A database instance.
|
|
140
|
-
*/
|
|
141
|
-
export interface Component {
|
|
142
|
-
/**
|
|
143
|
-
* Names of baselines that apply to this component.
|
|
144
|
-
*/
|
|
145
|
-
baselineRefs?: string[];
|
|
146
|
-
/**
|
|
147
|
-
* Stable UUID (RFC 4122) for this component. Required in hdf-system documents, optional in
|
|
148
|
-
* hdf-results. Enables cross-document correlation, diffing, and data flow references.
|
|
149
|
-
*/
|
|
150
|
-
componentId?: string;
|
|
151
|
-
/**
|
|
152
|
-
* Description of this component's role or purpose.
|
|
153
|
-
*/
|
|
154
|
-
description?: string;
|
|
155
|
-
/**
|
|
156
|
-
* Map of external identifier scheme to value. Well-known schemes: aws (instance ID), azure
|
|
157
|
-
* (resource ID), cmdb (asset ID), emass (system ID), cve (CVE ID). Custom schemes are
|
|
158
|
-
* allowed.
|
|
159
|
-
*/
|
|
160
|
-
externalIds?: { [key: string]: string };
|
|
161
|
-
/**
|
|
162
|
-
* System-specific overrides for baseline input values.
|
|
163
|
-
*/
|
|
164
|
-
inputOverrides?: InputOverride[];
|
|
165
|
-
/**
|
|
166
|
-
* Optional key-value labels for flexible grouping. Well-known keys: system, component,
|
|
167
|
-
* environment, region, team. Values must be strings.
|
|
168
|
-
*/
|
|
169
|
-
labels?: { [key: string]: string };
|
|
170
|
-
/**
|
|
171
|
-
* Human-readable name for this component.
|
|
172
|
-
*/
|
|
173
|
-
name: string;
|
|
174
|
-
/**
|
|
175
|
-
* Team or individual responsible for this component. Enables per-component ownership when
|
|
176
|
-
* different teams manage different parts of a system.
|
|
177
|
-
*/
|
|
178
|
-
owner?: Identity;
|
|
179
|
-
/**
|
|
180
|
-
* Embedded CycloneDX or SPDX SBOM document representing this component's software
|
|
181
|
-
* inventory. The sbomFormat field determines which format constraints apply.
|
|
182
|
-
*/
|
|
183
|
-
sbom?: any;
|
|
184
|
-
/**
|
|
185
|
-
* Format of the SBOM (embedded or referenced). Required when sbom or sbomRef is present.
|
|
186
|
-
*/
|
|
187
|
-
sbomFormat?: SbomFormat;
|
|
188
|
-
/**
|
|
189
|
-
* URI reference to an external CycloneDX or SPDX SBOM document for this component. May be a
|
|
190
|
-
* relative path, absolute URI, or fragment identifier.
|
|
191
|
-
*/
|
|
192
|
-
sbomRef?: string;
|
|
193
|
-
/**
|
|
194
|
-
* Label selector to match targets belonging to this component during migration. Targets
|
|
195
|
-
* with matching labels are automatically included.
|
|
196
|
-
*/
|
|
197
|
-
targetSelector?: { [key: string]: string };
|
|
198
|
-
/**
|
|
199
|
-
* Component type discriminator. Same values as Target types.
|
|
200
|
-
*/
|
|
201
|
-
type: BoundaryDescription;
|
|
202
|
-
/**
|
|
203
|
-
* Fully qualified domain name.
|
|
204
|
-
*/
|
|
205
|
-
fqdn?: string;
|
|
206
|
-
/**
|
|
207
|
-
* IP address of the host.
|
|
208
|
-
*/
|
|
209
|
-
ipAddress?: string;
|
|
210
|
-
/**
|
|
211
|
-
* MAC address in colon-separated hexadecimal format.
|
|
212
|
-
*/
|
|
213
|
-
macAddress?: string;
|
|
214
|
-
/**
|
|
215
|
-
* Operating system name.
|
|
216
|
-
*/
|
|
217
|
-
osName?: string;
|
|
218
|
-
/**
|
|
219
|
-
* Operating system version.
|
|
220
|
-
*/
|
|
221
|
-
osVersion?: string;
|
|
222
|
-
/**
|
|
223
|
-
* Image digest for immutable reference.
|
|
224
|
-
*/
|
|
225
|
-
digest?: string;
|
|
226
|
-
/**
|
|
227
|
-
* Container image ID.
|
|
228
|
-
*/
|
|
229
|
-
imageId?: string;
|
|
230
|
-
/**
|
|
231
|
-
* Container registry. Example: 'docker.io'.
|
|
232
|
-
*/
|
|
233
|
-
registry?: string;
|
|
234
|
-
/**
|
|
235
|
-
* Repository name. Example: 'library/nginx'.
|
|
236
|
-
*/
|
|
237
|
-
repository?: string;
|
|
238
|
-
/**
|
|
239
|
-
* Image tag. Example: '1.25'.
|
|
240
|
-
*/
|
|
241
|
-
tag?: string;
|
|
242
|
-
/**
|
|
243
|
-
* Running container ID.
|
|
244
|
-
*/
|
|
245
|
-
containerId?: string;
|
|
246
|
-
/**
|
|
247
|
-
* Image the container was started from.
|
|
248
|
-
*/
|
|
249
|
-
image?: string;
|
|
250
|
-
/**
|
|
251
|
-
* Container runtime. Example: 'docker', 'containerd', 'cri-o'.
|
|
252
|
-
*/
|
|
253
|
-
runtime?: string;
|
|
254
|
-
/**
|
|
255
|
-
* Cluster name.
|
|
256
|
-
*/
|
|
257
|
-
clusterName?: string;
|
|
258
|
-
/**
|
|
259
|
-
* Namespace within the cluster, if applicable.
|
|
260
|
-
*/
|
|
261
|
-
namespace?: string;
|
|
262
|
-
/**
|
|
263
|
-
* Platform type. Example: 'kubernetes', 'openshift', 'ecs', 'docker-swarm'.
|
|
264
|
-
*/
|
|
265
|
-
platformType?: string;
|
|
266
|
-
/**
|
|
267
|
-
* Platform version.
|
|
268
|
-
*
|
|
269
|
-
* Application version.
|
|
270
|
-
*
|
|
271
|
-
* Package version.
|
|
272
|
-
*
|
|
273
|
-
* Database version.
|
|
274
|
-
*/
|
|
275
|
-
version?: string;
|
|
276
|
-
/**
|
|
277
|
-
* Cloud account identifier.
|
|
278
|
-
*/
|
|
279
|
-
accountId?: string;
|
|
280
|
-
/**
|
|
281
|
-
* Cloud provider.
|
|
282
|
-
*/
|
|
283
|
-
provider?: CloudProvider | null;
|
|
284
|
-
/**
|
|
285
|
-
* Cloud region, if applicable.
|
|
286
|
-
*
|
|
287
|
-
* Cloud region where the resource resides.
|
|
288
|
-
*/
|
|
289
|
-
region?: string;
|
|
290
|
-
/**
|
|
291
|
-
* Amazon Resource Name (AWS only).
|
|
292
|
-
*/
|
|
293
|
-
arn?: string;
|
|
294
|
-
/**
|
|
295
|
-
* Provider-specific resource identifier.
|
|
296
|
-
*/
|
|
297
|
-
resourceId?: string;
|
|
298
|
-
/**
|
|
299
|
-
* Type of cloud resource. Example: 'ec2:instance', 's3:bucket'.
|
|
300
|
-
*/
|
|
301
|
-
resourceType?: string;
|
|
302
|
-
/**
|
|
303
|
-
* Branch that was scanned.
|
|
304
|
-
*/
|
|
305
|
-
branch?: string;
|
|
306
|
-
/**
|
|
307
|
-
* Commit SHA that was scanned.
|
|
308
|
-
*/
|
|
309
|
-
commit?: string;
|
|
310
|
-
/**
|
|
311
|
-
* Repository URL.
|
|
312
|
-
*
|
|
313
|
-
* Application URL (for DAST tools).
|
|
314
|
-
*/
|
|
315
|
-
url?: string;
|
|
316
|
-
/**
|
|
317
|
-
* Environment. Example: 'production', 'staging', 'development'.
|
|
318
|
-
*/
|
|
319
|
-
environment?: string;
|
|
320
|
-
/**
|
|
321
|
-
* Package checksum for verification.
|
|
322
|
-
*/
|
|
323
|
-
checksum?: string;
|
|
324
|
-
/**
|
|
325
|
-
* Package manager. Example: 'npm', 'maven', 'pip', 'nuget'.
|
|
326
|
-
*/
|
|
327
|
-
packageManager?: string;
|
|
328
|
-
/**
|
|
329
|
-
* Package name.
|
|
330
|
-
*/
|
|
331
|
-
packageName?: string;
|
|
332
|
-
/**
|
|
333
|
-
* Network CIDR block.
|
|
334
|
-
*/
|
|
335
|
-
cidr?: string;
|
|
336
|
-
/**
|
|
337
|
-
* Network gateway address.
|
|
338
|
-
*/
|
|
339
|
-
gateway?: string;
|
|
340
|
-
/**
|
|
341
|
-
* Database engine. Example: 'postgresql', 'mysql', 'oracle', 'mssql'.
|
|
342
|
-
*/
|
|
343
|
-
engine?: string;
|
|
344
|
-
/**
|
|
345
|
-
* Database host.
|
|
346
|
-
*/
|
|
347
|
-
host?: string;
|
|
348
|
-
/**
|
|
349
|
-
* Database port.
|
|
350
|
-
*/
|
|
351
|
-
port?: number;
|
|
352
|
-
[property: string]: any;
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
/**
|
|
356
|
-
* An override of a baseline input value for a specific component. Enables system-specific
|
|
357
|
-
* tailoring of baseline parameters.
|
|
358
|
-
*/
|
|
359
|
-
export interface InputOverride {
|
|
360
|
-
/**
|
|
361
|
-
* Identity of the person or system that approved this override.
|
|
362
|
-
*/
|
|
363
|
-
approvedBy?: Identity;
|
|
364
|
-
/**
|
|
365
|
-
* Name of the baseline this override applies to. If omitted, applies to all baselines that
|
|
366
|
-
* define this input.
|
|
367
|
-
*/
|
|
368
|
-
baselineRef?: string;
|
|
369
|
-
/**
|
|
370
|
-
* Name of the input being overridden. Must match an Input.name in the referenced baseline.
|
|
371
|
-
*/
|
|
372
|
-
inputName: string;
|
|
373
|
-
/**
|
|
374
|
-
* Rationale for why this override is needed.
|
|
375
|
-
*/
|
|
376
|
-
justification?: string;
|
|
377
|
-
/**
|
|
378
|
-
* The overridden value. Should match the type of the original input.
|
|
379
|
-
*/
|
|
380
|
-
value: any;
|
|
381
|
-
[property: string]: any;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
/**
|
|
385
|
-
* Identity of the person or system that approved this override.
|
|
386
|
-
*
|
|
387
|
-
* Represents an identity that performed an action, such as capturing evidence or applying
|
|
388
|
-
* an override.
|
|
389
|
-
*
|
|
390
|
-
* Team or individual responsible for this component. Enables per-component ownership when
|
|
391
|
-
* different teams manage different parts of a system.
|
|
392
|
-
*
|
|
393
|
-
* Team or individual responsible for this system's authorization and compliance. Maps to
|
|
394
|
-
* OSCAL responsible-party with role 'system-owner'.
|
|
395
|
-
*/
|
|
396
|
-
export interface Identity {
|
|
397
|
-
/**
|
|
398
|
-
* Optional description of the identity or identity system, particularly useful when type is
|
|
399
|
-
* 'other'.
|
|
400
|
-
*/
|
|
401
|
-
description?: string;
|
|
402
|
-
/**
|
|
403
|
-
* The identifier value. Example: 'user@example.com', 'jdoe', 'automated-scanner-01'.
|
|
404
|
-
*/
|
|
405
|
-
identifier: string;
|
|
406
|
-
/**
|
|
407
|
-
* The type of identifier. Use 'email' for email addresses, 'username' for user accounts,
|
|
408
|
-
* 'system' for automated systems, 'simple' for basic string identifiers without additional
|
|
409
|
-
* classification, or 'other' for custom identity systems.
|
|
410
|
-
*/
|
|
411
|
-
type: Type;
|
|
412
|
-
[property: string]: any;
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
/**
|
|
416
|
-
* The type of identifier. Use 'email' for email addresses, 'username' for user accounts,
|
|
417
|
-
* 'system' for automated systems, 'simple' for basic string identifiers without additional
|
|
418
|
-
* classification, or 'other' for custom identity systems.
|
|
419
|
-
*/
|
|
420
|
-
export enum Type {
|
|
421
|
-
Email = "email",
|
|
422
|
-
Other = "other",
|
|
423
|
-
Simple = "simple",
|
|
424
|
-
System = "system",
|
|
425
|
-
Username = "username",
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
export enum CloudProvider {
|
|
429
|
-
Aws = "aws",
|
|
430
|
-
Azure = "azure",
|
|
431
|
-
Gcp = "gcp",
|
|
432
|
-
Oci = "oci",
|
|
433
|
-
Other = "other",
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
/**
|
|
437
|
-
* Format of the SBOM (embedded or referenced). Required when sbom or sbomRef is present.
|
|
438
|
-
*/
|
|
439
|
-
export enum SbomFormat {
|
|
440
|
-
Cyclonedx = "cyclonedx",
|
|
441
|
-
Spdx = "spdx",
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
/**
|
|
445
|
-
* IP address of the host.
|
|
446
|
-
*/
|
|
447
|
-
export enum BoundaryDescription {
|
|
448
|
-
Application = "application",
|
|
449
|
-
Artifact = "artifact",
|
|
450
|
-
CloudAccount = "cloudAccount",
|
|
451
|
-
CloudResource = "cloudResource",
|
|
452
|
-
ContainerImage = "containerImage",
|
|
453
|
-
ContainerInstance = "containerInstance",
|
|
454
|
-
ContainerPlatform = "containerPlatform",
|
|
455
|
-
Database = "database",
|
|
456
|
-
Host = "host",
|
|
457
|
-
Network = "network",
|
|
458
|
-
Repository = "repository",
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/**
|
|
462
|
-
* Declares a control's designation within a system — whether it is common (provided by
|
|
463
|
-
* another component or system), system-specific (implemented locally), or hybrid (shared
|
|
464
|
-
* responsibility). Maps to NIST SP 800-53 Appendix C control designations and OSCAL SSP
|
|
465
|
-
* by-component provided/inherited semantics.
|
|
466
|
-
*/
|
|
467
|
-
export interface ControlDesignation {
|
|
468
|
-
/**
|
|
469
|
-
* The control identifier (e.g., 'SC-7', 'AC-2 (1)'). Must match a NIST tag in a baseline
|
|
470
|
-
* requirement's tags.
|
|
471
|
-
*/
|
|
472
|
-
controlId: string;
|
|
473
|
-
/**
|
|
474
|
-
* Justification for this designation — who provides the control, why it's inherited, and
|
|
475
|
-
* any relevant authorization references.
|
|
476
|
-
*/
|
|
477
|
-
description: string;
|
|
478
|
-
/**
|
|
479
|
-
* NIST SP 800-53 control designation. 'common': fully provided by another component or
|
|
480
|
-
* system. 'system-specific': implemented by the inheriting component(s) only. 'hybrid':
|
|
481
|
-
* shared responsibility between provider and inheritor.
|
|
482
|
-
*/
|
|
483
|
-
designation: Designation;
|
|
484
|
-
/**
|
|
485
|
-
* componentIds that inherit this control. If omitted, all components in the system inherit
|
|
486
|
-
* it.
|
|
487
|
-
*/
|
|
488
|
-
inheritedBy?: string[];
|
|
489
|
-
/**
|
|
490
|
-
* componentId of a local component that provides this control. Omit when the provider is an
|
|
491
|
-
* external system.
|
|
492
|
-
*/
|
|
493
|
-
providedBy?: string;
|
|
494
|
-
/**
|
|
495
|
-
* Reference to another hdf-system document whose component provides this control. Use when
|
|
496
|
-
* the provider is in a different system. Omit when the provider is local.
|
|
497
|
-
*/
|
|
498
|
-
systemRef?: string;
|
|
499
|
-
[property: string]: any;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* NIST SP 800-53 control designation. 'common': fully provided by another component or
|
|
504
|
-
* system. 'system-specific': implemented by the inheriting component(s) only. 'hybrid':
|
|
505
|
-
* shared responsibility between provider and inheritor.
|
|
506
|
-
*/
|
|
507
|
-
export enum Designation {
|
|
508
|
-
Common = "common",
|
|
509
|
-
Hybrid = "hybrid",
|
|
510
|
-
SystemSpecific = "system-specific",
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
/**
|
|
514
|
-
* A data flow between two endpoints. The 'from' endpoint is always a local component; the
|
|
515
|
-
* 'to' endpoint can be local, cross-system, or external. Use 'direction' to indicate
|
|
516
|
-
* whether data flows one-way or both ways.
|
|
517
|
-
*/
|
|
518
|
-
export interface DataFlow {
|
|
519
|
-
/**
|
|
520
|
-
* Authentication mechanism used for this connection. Examples: 'mTLS', 'OAuth2', 'API key',
|
|
521
|
-
* 'SAML', 'Kerberos'.
|
|
522
|
-
*/
|
|
523
|
-
authentication?: string;
|
|
524
|
-
/**
|
|
525
|
-
* Human-readable description of this data flow's purpose and the data exchanged.
|
|
526
|
-
*/
|
|
527
|
-
description?: string;
|
|
528
|
-
/**
|
|
529
|
-
* Data flow direction. 'unidirectional' means data flows from→to only. 'bidirectional'
|
|
530
|
-
* means data flows in both directions (e.g., request/response).
|
|
531
|
-
*/
|
|
532
|
-
direction?: Direction;
|
|
533
|
-
/**
|
|
534
|
-
* UUID of the local component that is one end of this data flow. Always references a
|
|
535
|
-
* component in the current system document.
|
|
536
|
-
*/
|
|
537
|
-
from: string;
|
|
538
|
-
/**
|
|
539
|
-
* Network port number.
|
|
540
|
-
*/
|
|
541
|
-
port?: number;
|
|
542
|
-
/**
|
|
543
|
-
* Communication protocol. Examples: 'http', 'https', 'grpc', 'ssh', 'jdbc', 'k8s-api',
|
|
544
|
-
* 'socket', 'sftp'.
|
|
545
|
-
*/
|
|
546
|
-
protocol?: string;
|
|
547
|
-
/**
|
|
548
|
-
* The other end of this data flow. Can be a local component (UUID), a cross-system
|
|
549
|
-
* component reference, or an external endpoint.
|
|
550
|
-
*/
|
|
551
|
-
to: any;
|
|
552
|
-
[property: string]: any;
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
/**
|
|
556
|
-
* Data flow direction. 'unidirectional' means data flows from→to only. 'bidirectional'
|
|
557
|
-
* means data flows in both directions (e.g., request/response).
|
|
558
|
-
*/
|
|
559
|
-
export enum Direction {
|
|
560
|
-
Bidirectional = "bidirectional",
|
|
561
|
-
Unidirectional = "unidirectional",
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
/**
|
|
565
|
-
* Information about the tool that generated this system document.
|
|
566
|
-
*
|
|
567
|
-
* Information about the tool that generated this HDF file.
|
|
568
|
-
*/
|
|
569
|
-
export interface Generator {
|
|
570
|
-
/**
|
|
571
|
-
* The name of the software that produced this HDF file. Example: 'gosec-to-hdf'.
|
|
572
|
-
*/
|
|
573
|
-
name: string;
|
|
574
|
-
/**
|
|
575
|
-
* The version of the tool. Example: '5.22.3'.
|
|
576
|
-
*/
|
|
577
|
-
version: string;
|
|
578
|
-
[property: string]: any;
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* Cryptographic integrity information for verifying this system document has not been
|
|
583
|
-
* tampered with.
|
|
584
|
-
*
|
|
585
|
-
* Cryptographic integrity information for verifying the HDF file has not been tampered
|
|
586
|
-
* with. If algorithm is provided, checksum must also be provided, and vice versa.
|
|
587
|
-
*/
|
|
588
|
-
export interface Integrity {
|
|
589
|
-
/**
|
|
590
|
-
* The hash algorithm used for the checksum.
|
|
591
|
-
*/
|
|
592
|
-
algorithm?: HashAlgorithm;
|
|
593
|
-
/**
|
|
594
|
-
* The checksum value.
|
|
595
|
-
*/
|
|
596
|
-
checksum?: string;
|
|
597
|
-
/**
|
|
598
|
-
* Optional cryptographic signature.
|
|
599
|
-
*/
|
|
600
|
-
signature?: string;
|
|
601
|
-
/**
|
|
602
|
-
* Identifier of who signed this file.
|
|
603
|
-
*/
|
|
604
|
-
signedBy?: string;
|
|
605
|
-
[property: string]: any;
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
/**
|
|
609
|
-
* The hash algorithm used for the checksum.
|
|
610
|
-
*
|
|
611
|
-
* Supported cryptographic hash algorithms for checksums and integrity verification.
|
|
612
|
-
*/
|
|
613
|
-
export enum HashAlgorithm {
|
|
614
|
-
Sha256 = "sha256",
|
|
615
|
-
Sha384 = "sha384",
|
|
616
|
-
Sha512 = "sha512",
|
|
617
|
-
}
|