@mitre/hdf-schema 3.3.2 → 3.4.1
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 +10 -0
- package/dist/go/hdf.go +585 -534
- package/dist/helpers.js +5 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +26 -25
- package/dist/schemas/hdf-amendments.schema.json +53 -46
- package/dist/schemas/hdf-baseline.schema.json +58 -51
- package/dist/schemas/hdf-comparison.schema.json +846 -243
- package/dist/schemas/hdf-evidence-package.schema.json +204 -51
- package/dist/schemas/hdf-plan.schema.json +58 -51
- package/dist/schemas/hdf-results.schema.json +785 -214
- package/dist/schemas/hdf-system.schema.json +760 -187
- package/dist/ts/hdf.d.ts +628 -468
- package/dist/ts/hdf.js +95 -139
- package/dist/ts/hdf.ts +637 -468
- package/package.json +2 -2
package/dist/ts/hdf.ts
CHANGED
|
@@ -66,9 +66,6 @@ export interface HDFResults {
|
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
68
|
* Information on a baseline that was evaluated, including any findings.
|
|
69
|
-
*
|
|
70
|
-
* Shared metadata fields for baselines. Used in both standalone baseline documents and
|
|
71
|
-
* evaluated baseline results.
|
|
72
69
|
*/
|
|
73
70
|
export interface EvaluatedBaseline {
|
|
74
71
|
/**
|
|
@@ -172,8 +169,7 @@ export interface EvaluatedBaseline {
|
|
|
172
169
|
}
|
|
173
170
|
|
|
174
171
|
/**
|
|
175
|
-
* A dependency for a baseline. Can include relative paths or URLs for where to find the
|
|
176
|
-
* dependency.
|
|
172
|
+
* A dependency for a baseline. Can include relative paths or URLs for where to find the dependency.
|
|
177
173
|
*/
|
|
178
174
|
export interface Dependency {
|
|
179
175
|
/**
|
|
@@ -237,9 +233,9 @@ export interface RequirementGroup {
|
|
|
237
233
|
}
|
|
238
234
|
|
|
239
235
|
/**
|
|
240
|
-
* A typed input parameter that bridges governance requirements and scanner automation.
|
|
241
|
-
*
|
|
242
|
-
*
|
|
236
|
+
* A typed input parameter that bridges governance requirements and scanner automation. Inputs carry
|
|
237
|
+
* expected configuration values with type information, comparison operators, and validation
|
|
238
|
+
* constraints, enabling traceability from policy through to scan results.
|
|
243
239
|
*/
|
|
244
240
|
export interface Input {
|
|
245
241
|
/**
|
|
@@ -280,8 +276,6 @@ export interface Input {
|
|
|
280
276
|
}
|
|
281
277
|
|
|
282
278
|
/**
|
|
283
|
-
* Validation constraints for the input value.
|
|
284
|
-
*
|
|
285
279
|
* Validation constraints for an input value.
|
|
286
280
|
*/
|
|
287
281
|
export interface InputConstraints {
|
|
@@ -305,8 +299,6 @@ export interface InputConstraints {
|
|
|
305
299
|
}
|
|
306
300
|
|
|
307
301
|
/**
|
|
308
|
-
* The comparison operator used when evaluating this input against observed values.
|
|
309
|
-
*
|
|
310
302
|
* Comparison operator for evaluating the input value against observed values. Numeric:
|
|
311
303
|
* eq/ne/lt/le/gt/ge. String: eq/ne/contains/matches. Collection: in/notIn.
|
|
312
304
|
*/
|
|
@@ -324,8 +316,6 @@ export enum ComparisonOperator {
|
|
|
324
316
|
}
|
|
325
317
|
|
|
326
318
|
/**
|
|
327
|
-
* The data type of this input.
|
|
328
|
-
*
|
|
329
319
|
* The data type of the input value. Aligns with InSpec input types.
|
|
330
320
|
*/
|
|
331
321
|
export enum InputType {
|
|
@@ -338,27 +328,8 @@ export enum InputType {
|
|
|
338
328
|
}
|
|
339
329
|
|
|
340
330
|
/**
|
|
341
|
-
* Cryptographic integrity information for verifying
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
* Cryptographic integrity information for verifying the HDF file has not been tampered
|
|
345
|
-
* with. If algorithm is provided, checksum must also be provided, and vice versa.
|
|
346
|
-
*
|
|
347
|
-
* Cryptographic integrity information for verifying this file.
|
|
348
|
-
*
|
|
349
|
-
* Cryptographic integrity information for verifying this comparison document.
|
|
350
|
-
*
|
|
351
|
-
* Cryptographic integrity information for verifying this system document has not been
|
|
352
|
-
* tampered with.
|
|
353
|
-
*
|
|
354
|
-
* Cryptographic integrity information for verifying this plan document has not been
|
|
355
|
-
* tampered with.
|
|
356
|
-
*
|
|
357
|
-
* Cryptographic integrity information for verifying this amendments document has not been
|
|
358
|
-
* tampered with.
|
|
359
|
-
*
|
|
360
|
-
* Cryptographic integrity information for verifying this evidence package has not been
|
|
361
|
-
* tampered with.
|
|
331
|
+
* Cryptographic integrity information for verifying the HDF file has not been tampered with. If
|
|
332
|
+
* algorithm is provided, checksum must also be provided, and vice versa.
|
|
362
333
|
*/
|
|
363
334
|
export interface Integrity {
|
|
364
335
|
/**
|
|
@@ -381,41 +352,18 @@ export interface Integrity {
|
|
|
381
352
|
}
|
|
382
353
|
|
|
383
354
|
/**
|
|
384
|
-
*
|
|
385
|
-
*
|
|
386
|
-
* Supported cryptographic hash algorithms for checksums and integrity verification.
|
|
355
|
+
* Supported cryptographic hash algorithms for checksums and integrity verification. blake3 covers
|
|
356
|
+
* container-image and other artifact digests that use it.
|
|
387
357
|
*/
|
|
388
358
|
export enum HashAlgorithm {
|
|
359
|
+
Blake3 = "blake3",
|
|
389
360
|
Sha256 = "sha256",
|
|
390
361
|
Sha384 = "sha384",
|
|
391
362
|
Sha512 = "sha512",
|
|
392
363
|
}
|
|
393
364
|
|
|
394
365
|
/**
|
|
395
|
-
* SHA-256 checksum of the original baseline definition file (before execution). This is an
|
|
396
|
-
* immutable reference to the baseline as defined, used to detect tampering with baseline
|
|
397
|
-
* requirements or metadata.
|
|
398
|
-
*
|
|
399
366
|
* Cryptographic checksum for baseline integrity verification.
|
|
400
|
-
*
|
|
401
|
-
* SHA-256 checksum of the previous amendment in chronological order. Creates a
|
|
402
|
-
* tamper-evident chain of amendments (similar to blockchain). Null for the first amendment
|
|
403
|
-
* on a requirement.
|
|
404
|
-
*
|
|
405
|
-
* SHA-256 checksum of the raw results before any amendments (statusOverrides or POAMs).
|
|
406
|
-
* Used to detect tampering with test results. Compare with currentChecksum to verify
|
|
407
|
-
* amendment integrity.
|
|
408
|
-
*
|
|
409
|
-
* Optional cryptographic checksum for verifying the integrity of remediation resources
|
|
410
|
-
* fetched from the URI. Recommended for security when referencing external automation
|
|
411
|
-
* scripts.
|
|
412
|
-
*
|
|
413
|
-
* Cryptographic checksum of the source document for integrity verification.
|
|
414
|
-
*
|
|
415
|
-
* Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null
|
|
416
|
-
* for the first amendment.
|
|
417
|
-
*
|
|
418
|
-
* Cryptographic checksum for verifying the referenced document's integrity.
|
|
419
367
|
*/
|
|
420
368
|
export interface Checksum {
|
|
421
369
|
/**
|
|
@@ -431,9 +379,6 @@ export interface Checksum {
|
|
|
431
379
|
|
|
432
380
|
/**
|
|
433
381
|
* A requirement that has been evaluated, including any findings.
|
|
434
|
-
*
|
|
435
|
-
* Core requirement fields shared between baseline requirements and evaluated requirements.
|
|
436
|
-
* Contains the fundamental requirement definition without assessment results.
|
|
437
382
|
*/
|
|
438
383
|
export interface EvaluatedRequirement {
|
|
439
384
|
/**
|
|
@@ -581,14 +526,13 @@ export interface EvaluatedRequirement {
|
|
|
581
526
|
|
|
582
527
|
/**
|
|
583
528
|
* Represents a package referenced by a vulnerability finding or by an amendment's scope. On
|
|
584
|
-
* Evaluated_Requirement.affectedPackages it says 'this CVE affects these package versions'.
|
|
585
|
-
*
|
|
586
|
-
*
|
|
587
|
-
*
|
|
588
|
-
*
|
|
589
|
-
*
|
|
590
|
-
*
|
|
591
|
-
* sources without formal identifiers.
|
|
529
|
+
* Evaluated_Requirement.affectedPackages it says 'this CVE affects these package versions'. On
|
|
530
|
+
* Standalone_Override.affectedPackages it says 'this amendment is scoped to these packages' (used
|
|
531
|
+
* by VEX, OSCAL POA&M, FedRAMP component-aware amendments). NOT a system-level component identifier
|
|
532
|
+
* — see `components[]` on hdf-system for those. Validity requires at least one of: (name + version
|
|
533
|
+
* + ecosystem), purl alone, or cpe alone. purl and cpe are self-describing identifiers that encode
|
|
534
|
+
* name/version implicitly, so either may stand on its own; the name+version+ecosystem combination
|
|
535
|
+
* is the explicit form for sources without formal identifiers.
|
|
592
536
|
*/
|
|
593
537
|
export interface AffectedPackage {
|
|
594
538
|
/**
|
|
@@ -679,16 +623,12 @@ export enum ControlType {
|
|
|
679
623
|
}
|
|
680
624
|
|
|
681
625
|
/**
|
|
682
|
-
*
|
|
683
|
-
*
|
|
684
|
-
*
|
|
685
|
-
*
|
|
686
|
-
*
|
|
687
|
-
*
|
|
688
|
-
* Environmental, and Supplemental metric groups. Supports all four CVSS major versions
|
|
689
|
-
* (2.0, 3.0, 3.1, 4.0). Vector strings are validated against a permissive umbrella grammar;
|
|
690
|
-
* semantic validation (correct metrics per version, correct values per metric) is performed
|
|
691
|
-
* by the hdf-utilities `validateCvssVector` helper rather than at the schema layer.
|
|
626
|
+
* A CVSS (Common Vulnerability Scoring System) score record for a vulnerability finding. Captures
|
|
627
|
+
* the vendor-supplied Base metric group and optional consumer-supplied Threat, Environmental, and
|
|
628
|
+
* Supplemental metric groups. Supports all four CVSS major versions (2.0, 3.0, 3.1, 4.0). Vector
|
|
629
|
+
* strings are validated against a permissive umbrella grammar; semantic validation (correct metrics
|
|
630
|
+
* per version, correct values per metric) is performed by the hdf-utilities `validateCvssVector`
|
|
631
|
+
* helper rather than at the schema layer.
|
|
692
632
|
*/
|
|
693
633
|
export interface Cvss {
|
|
694
634
|
/**
|
|
@@ -761,15 +701,9 @@ export interface Cvss {
|
|
|
761
701
|
}
|
|
762
702
|
|
|
763
703
|
/**
|
|
764
|
-
* Qualitative severity band corresponding to baseScore. CVSS 2.0 does not natively use
|
|
765
|
-
* 'none' or 'critical' bands; map accordingly when populating.
|
|
766
|
-
*
|
|
767
704
|
* Qualitative CVSS severity band. Aligns with FIRST/NVD bands: none=0.0, low=0.1-3.9,
|
|
768
|
-
* medium=4.0-6.9, high=7.0-8.9, critical=9.0-10.0. Distinct from the broader Severity enum
|
|
769
|
-
*
|
|
770
|
-
*
|
|
771
|
-
* Qualitative severity band corresponding to computedScore. Same band convention as
|
|
772
|
-
* baseSeverity.
|
|
705
|
+
* medium=4.0-6.9, high=7.0-8.9, critical=9.0-10.0. Distinct from the broader Severity enum used on
|
|
706
|
+
* Requirement_Core (which includes 'informational').
|
|
773
707
|
*/
|
|
774
708
|
export enum CVSSSeverity {
|
|
775
709
|
Critical = "critical",
|
|
@@ -804,29 +738,19 @@ export interface Description {
|
|
|
804
738
|
}
|
|
805
739
|
|
|
806
740
|
/**
|
|
807
|
-
* The type of
|
|
808
|
-
*
|
|
809
|
-
*
|
|
810
|
-
*
|
|
811
|
-
*
|
|
812
|
-
*
|
|
813
|
-
*
|
|
814
|
-
*
|
|
815
|
-
*
|
|
816
|
-
*
|
|
817
|
-
*
|
|
818
|
-
*
|
|
819
|
-
*
|
|
820
|
-
* 'riskAdjustment': impact score adjusted based on environmental context (FedRAMP Risk
|
|
821
|
-
* Adjustment); does not change pass/fail status, only impact via the impact field.
|
|
822
|
-
* 'operationalRequirement': deviation required by operational constraints (FedRAMP
|
|
823
|
-
* Operational Requirement); the finding cannot be remediated because the system requires
|
|
824
|
-
* the affected functionality. Remains an open risk. Migration note: 'exception' was removed
|
|
825
|
-
* in v3.1.0 — use 'waiver' with status 'notApplicable' instead.
|
|
826
|
-
*
|
|
827
|
-
* The type of override applied to this requirement.
|
|
828
|
-
*
|
|
829
|
-
* The type of amendment.
|
|
741
|
+
* The type of amendment, aligned with FedRAMP deviation request categories. 'waiver': risk accepted
|
|
742
|
+
* by Authorizing Official. 'attestation': manually verified by assessor. 'poam': remediation
|
|
743
|
+
* tracked (no status change). 'inherited': control provided by another component or system.
|
|
744
|
+
* 'falsePositive': scanner incorrectly identified a finding — for compliance scans (STIG, CIS), the
|
|
745
|
+
* check actually passes, so status is typically set to 'passed'; for vulnerability scans (CVE,
|
|
746
|
+
* SCA), the flagged vulnerability does not apply to this system, so status is typically set to
|
|
747
|
+
* 'notApplicable'. The disposition field on the requirement distinguishes false positives from
|
|
748
|
+
* genuinely not-applicable findings. 'riskAdjustment': impact score adjusted based on environmental
|
|
749
|
+
* context (FedRAMP Risk Adjustment); does not change pass/fail status, only impact via the impact
|
|
750
|
+
* field. 'operationalRequirement': deviation required by operational constraints (FedRAMP
|
|
751
|
+
* Operational Requirement); the finding cannot be remediated because the system requires the
|
|
752
|
+
* affected functionality. Remains an open risk. Migration note: 'exception' was removed in v3.1.0 —
|
|
753
|
+
* use 'waiver' with status 'notApplicable' instead.
|
|
830
754
|
*/
|
|
831
755
|
export enum OverrideType {
|
|
832
756
|
Attestation = "attestation",
|
|
@@ -839,20 +763,9 @@ export enum OverrideType {
|
|
|
839
763
|
}
|
|
840
764
|
|
|
841
765
|
/**
|
|
842
|
-
* The
|
|
843
|
-
*
|
|
844
|
-
*
|
|
845
|
-
*
|
|
846
|
-
* The status of an individual test result. 'notApplicable' indicates the requirement does
|
|
847
|
-
* not apply to the target. 'notReviewed' indicates the requirement was not assessed (e.g.,
|
|
848
|
-
* requires manual verification).
|
|
849
|
-
*
|
|
850
|
-
* The status of this test within the requirement. Example: 'failed'.
|
|
851
|
-
*
|
|
852
|
-
* The new status this override sets for the requirement. Optional when only impact is being
|
|
853
|
-
* overridden.
|
|
854
|
-
*
|
|
855
|
-
* The new status this amendment sets. Optional when only impact is being overridden.
|
|
766
|
+
* The status of an individual test result. 'notApplicable' indicates the requirement does not apply
|
|
767
|
+
* to the target. 'notReviewed' indicates the requirement was not assessed (e.g., requires manual
|
|
768
|
+
* verification).
|
|
856
769
|
*/
|
|
857
770
|
export enum ResultStatus {
|
|
858
771
|
Error = "error",
|
|
@@ -863,13 +776,9 @@ export enum ResultStatus {
|
|
|
863
776
|
}
|
|
864
777
|
|
|
865
778
|
/**
|
|
866
|
-
* FIRST.org
|
|
867
|
-
*
|
|
868
|
-
*
|
|
869
|
-
*
|
|
870
|
-
* FIRST.org Exploit Prediction Scoring System (EPSS) data for a single vulnerability. All
|
|
871
|
-
* three fields are required when an Epss object is present; the date disambiguates which
|
|
872
|
-
* day's score this is, since EPSS recomputes daily.
|
|
779
|
+
* FIRST.org Exploit Prediction Scoring System (EPSS) data for a single vulnerability. All three
|
|
780
|
+
* fields are required when an Epss object is present; the date disambiguates which day's score this
|
|
781
|
+
* is, since EPSS recomputes daily.
|
|
873
782
|
*/
|
|
874
783
|
export interface Epss {
|
|
875
784
|
/**
|
|
@@ -892,8 +801,8 @@ export interface Epss {
|
|
|
892
801
|
}
|
|
893
802
|
|
|
894
803
|
/**
|
|
895
|
-
* Supporting evidence for a finding or override, such as screenshots, code samples, log
|
|
896
|
-
*
|
|
804
|
+
* Supporting evidence for a finding or override, such as screenshots, code samples, log excerpts,
|
|
805
|
+
* or URLs.
|
|
897
806
|
*/
|
|
898
807
|
export interface Evidence {
|
|
899
808
|
/**
|
|
@@ -933,41 +842,8 @@ export interface Evidence {
|
|
|
933
842
|
}
|
|
934
843
|
|
|
935
844
|
/**
|
|
936
|
-
*
|
|
937
|
-
*
|
|
938
|
-
* Represents an identity that performed an action, such as capturing evidence or applying
|
|
939
|
-
* an override.
|
|
940
|
-
*
|
|
941
|
-
* Identity of who created this POA&M. For simple cases, use type 'simple' with just an
|
|
942
|
-
* identifier.
|
|
943
|
-
*
|
|
944
|
-
* Identity of who completed this milestone.
|
|
945
|
-
*
|
|
946
|
-
* The identity that created this signature.
|
|
947
|
-
*
|
|
948
|
-
* Identity of who applied this override. For simple cases, use type 'simple' with just an
|
|
949
|
-
* identifier.
|
|
950
|
-
*
|
|
951
|
-
* Identity of the person or system that approved this override.
|
|
952
|
-
*
|
|
953
|
-
* Team or individual responsible for this component. Enables per-component ownership when
|
|
954
|
-
* different teams manage different parts of a system.
|
|
955
|
-
*
|
|
956
|
-
* The identity of the person or system responsible for executing the test. This could be a
|
|
957
|
-
* human auditor manually completing a checklist, an automated CI/CD system, or a security
|
|
958
|
-
* tool. Optional field to support both automated and manual HDF generation.
|
|
959
|
-
*
|
|
960
|
-
* Team or individual responsible for this system's authorization and compliance. Maps to
|
|
961
|
-
* OSCAL responsible-party with role 'system-owner'.
|
|
962
|
-
*
|
|
963
|
-
* Default identity of who created this amendments document. Individual overrides may
|
|
964
|
-
* specify their own appliedBy.
|
|
965
|
-
*
|
|
966
|
-
* Identity of the authorizing official who approved these amendments.
|
|
967
|
-
*
|
|
968
|
-
* Identity of who applied this amendment.
|
|
969
|
-
*
|
|
970
|
-
* Identity of who prepared this evidence package.
|
|
845
|
+
* Represents an identity that performed an action, such as capturing evidence or applying an
|
|
846
|
+
* override.
|
|
971
847
|
*/
|
|
972
848
|
export interface Identity {
|
|
973
849
|
/**
|
|
@@ -981,8 +857,12 @@ export interface Identity {
|
|
|
981
857
|
identifier: string;
|
|
982
858
|
/**
|
|
983
859
|
* The type of identifier. Use 'email' for email addresses, 'username' for user accounts,
|
|
984
|
-
* 'system' for
|
|
985
|
-
*
|
|
860
|
+
* 'system' for deterministic non-interactive automation (CI jobs, cron, scanners), 'agent'
|
|
861
|
+
* for an AI/LLM agent acting with autonomy — kept distinct from 'system' so auditors can
|
|
862
|
+
* apply AI-specific scrutiny (e.g. 'an LLM proposed this' vs a deterministic job) and
|
|
863
|
+
* satisfy AI-source disclosure under frameworks like the EU AI Act and NIST AI RMF,
|
|
864
|
+
* 'simple' for basic string identifiers without additional classification, or 'other' for
|
|
865
|
+
* custom identity systems.
|
|
986
866
|
*/
|
|
987
867
|
type: IdentityType;
|
|
988
868
|
[property: string]: any;
|
|
@@ -990,10 +870,15 @@ export interface Identity {
|
|
|
990
870
|
|
|
991
871
|
/**
|
|
992
872
|
* The type of identifier. Use 'email' for email addresses, 'username' for user accounts,
|
|
993
|
-
* 'system' for
|
|
994
|
-
*
|
|
873
|
+
* 'system' for deterministic non-interactive automation (CI jobs, cron, scanners), 'agent'
|
|
874
|
+
* for an AI/LLM agent acting with autonomy — kept distinct from 'system' so auditors can
|
|
875
|
+
* apply AI-specific scrutiny (e.g. 'an LLM proposed this' vs a deterministic job) and
|
|
876
|
+
* satisfy AI-source disclosure under frameworks like the EU AI Act and NIST AI RMF,
|
|
877
|
+
* 'simple' for basic string identifiers without additional classification, or 'other' for
|
|
878
|
+
* custom identity systems.
|
|
995
879
|
*/
|
|
996
880
|
export enum IdentityType {
|
|
881
|
+
Agent = "agent",
|
|
997
882
|
Email = "email",
|
|
998
883
|
Other = "other",
|
|
999
884
|
Simple = "simple",
|
|
@@ -1042,9 +927,9 @@ export interface Kev {
|
|
|
1042
927
|
}
|
|
1043
928
|
|
|
1044
929
|
/**
|
|
1045
|
-
* Plan of Action and Milestones for tracking remediation, mitigation, or risk acceptance.
|
|
1046
|
-
*
|
|
1047
|
-
*
|
|
930
|
+
* Plan of Action and Milestones for tracking remediation, mitigation, or risk acceptance. POAMs do
|
|
931
|
+
* NOT change the effectiveStatus - the requirement remains in its current state while the POA&M
|
|
932
|
+
* tracks remediation efforts.
|
|
1048
933
|
*/
|
|
1049
934
|
export interface Poam {
|
|
1050
935
|
/**
|
|
@@ -1129,21 +1014,9 @@ export enum MilestoneStatus {
|
|
|
1129
1014
|
}
|
|
1130
1015
|
|
|
1131
1016
|
/**
|
|
1132
|
-
*
|
|
1133
|
-
*
|
|
1134
|
-
*
|
|
1135
|
-
* security tokens (PKCS#11/PKCS#12), Yubikeys, GPG keys, passkeys, and other cryptographic
|
|
1136
|
-
* signing methods via JWK, PEM, or Base58 key formats.
|
|
1137
|
-
*
|
|
1138
|
-
* Optional digital signature for enhanced trust and non-repudiation. Supports hardware
|
|
1139
|
-
* security tokens (PKCS#11/PKCS#12), Yubikeys, GPG keys, passkeys, and other signing
|
|
1140
|
-
* methods.
|
|
1141
|
-
*
|
|
1142
|
-
* Digital signature for non-repudiation.
|
|
1143
|
-
*
|
|
1144
|
-
* Document-level digital signature covering all amendments.
|
|
1145
|
-
*
|
|
1146
|
-
* Digital signature covering the entire evidence package.
|
|
1017
|
+
* A digital signature following W3C Data Integrity Proofs pattern. Supports hardware security
|
|
1018
|
+
* tokens (PKCS#11/PKCS#12), Yubikeys, GPG keys, passkeys, and other cryptographic signing methods
|
|
1019
|
+
* via JWK, PEM, or Base58 key formats.
|
|
1147
1020
|
*/
|
|
1148
1021
|
export interface Signature {
|
|
1149
1022
|
/**
|
|
@@ -1188,10 +1061,8 @@ export interface Signature {
|
|
|
1188
1061
|
}
|
|
1189
1062
|
|
|
1190
1063
|
/**
|
|
1191
|
-
*
|
|
1192
|
-
*
|
|
1193
|
-
* Verification method containing the public key needed to verify a digital signature.
|
|
1194
|
-
* Supports multiple key formats including JWK (for RSA, EC), PEM, and Base58.
|
|
1064
|
+
* Verification method containing the public key needed to verify a digital signature. Supports
|
|
1065
|
+
* multiple key formats including JWK (for RSA, EC), PEM, and Base58.
|
|
1195
1066
|
*/
|
|
1196
1067
|
export interface VerificationMethod {
|
|
1197
1068
|
/**
|
|
@@ -1233,12 +1104,6 @@ export enum POAMType {
|
|
|
1233
1104
|
|
|
1234
1105
|
/**
|
|
1235
1106
|
* A reference to an external document.
|
|
1236
|
-
*
|
|
1237
|
-
* A reference using the 'ref' field.
|
|
1238
|
-
*
|
|
1239
|
-
* A URL pointing at the reference.
|
|
1240
|
-
*
|
|
1241
|
-
* A URI pointing at the reference.
|
|
1242
1107
|
*/
|
|
1243
1108
|
export interface Reference {
|
|
1244
1109
|
ref?: { [key: string]: any }[] | string;
|
|
@@ -1293,9 +1158,6 @@ export interface RequirementResult {
|
|
|
1293
1158
|
}
|
|
1294
1159
|
|
|
1295
1160
|
/**
|
|
1296
|
-
* Explicit severity rating. Typically derived from impact score but provided explicitly for
|
|
1297
|
-
* clarity.
|
|
1298
|
-
*
|
|
1299
1161
|
* Severity rating for a requirement. Typically derived from the numeric impact score.
|
|
1300
1162
|
*/
|
|
1301
1163
|
export enum Severity {
|
|
@@ -1307,8 +1169,6 @@ export enum Severity {
|
|
|
1307
1169
|
}
|
|
1308
1170
|
|
|
1309
1171
|
/**
|
|
1310
|
-
* The explicit location of the requirement within the source code.
|
|
1311
|
-
*
|
|
1312
1172
|
* The explicit location of a requirement within source code.
|
|
1313
1173
|
*/
|
|
1314
1174
|
export interface SourceLocation {
|
|
@@ -1324,9 +1184,9 @@ export interface SourceLocation {
|
|
|
1324
1184
|
}
|
|
1325
1185
|
|
|
1326
1186
|
/**
|
|
1327
|
-
* An intentional change to a requirement's compliance status and/or impact score. At least
|
|
1328
|
-
*
|
|
1329
|
-
*
|
|
1187
|
+
* An intentional change to a requirement's compliance status and/or impact score. At least one of
|
|
1188
|
+
* status or impact must be set. Overrides change the effectiveStatus or impact of the requirement.
|
|
1189
|
+
* All overrides must have an expiration date to enforce periodic review.
|
|
1330
1190
|
*/
|
|
1331
1191
|
export interface StatusOverride {
|
|
1332
1192
|
/**
|
|
@@ -1395,11 +1255,8 @@ export interface StatusOverride {
|
|
|
1395
1255
|
}
|
|
1396
1256
|
|
|
1397
1257
|
/**
|
|
1398
|
-
*
|
|
1399
|
-
*
|
|
1400
|
-
*
|
|
1401
|
-
* An override to the requirement's impact score. The prior impact is the original result
|
|
1402
|
-
* value or the preceding override in the chain.
|
|
1258
|
+
* An override to the requirement's impact score. The prior impact is the original result value or
|
|
1259
|
+
* the preceding override in the chain.
|
|
1403
1260
|
*/
|
|
1404
1261
|
export interface ImpactOverride {
|
|
1405
1262
|
/**
|
|
@@ -1410,28 +1267,21 @@ export interface ImpactOverride {
|
|
|
1410
1267
|
}
|
|
1411
1268
|
|
|
1412
1269
|
/**
|
|
1413
|
-
* Structured controlled-vocabulary
|
|
1414
|
-
*
|
|
1415
|
-
*
|
|
1416
|
-
*
|
|
1417
|
-
*
|
|
1418
|
-
*
|
|
1419
|
-
*
|
|
1420
|
-
*
|
|
1421
|
-
*
|
|
1422
|
-
*
|
|
1423
|
-
*
|
|
1424
|
-
*
|
|
1425
|
-
*
|
|
1426
|
-
*
|
|
1427
|
-
*
|
|
1428
|
-
* requires_dependency / requires_environment / protected_by_compiler / protected_at_runtime
|
|
1429
|
-
* / protected_at_perimeter) are CycloneDX-specific and describe why the vulnerable code
|
|
1430
|
-
* path is unreachable in the deployed configuration. The enum is extended additively across
|
|
1431
|
-
* schema versions as other ecosystems' controlled vocabularies are integrated; documents
|
|
1432
|
-
* using values added in a newer schema version will fail validation against an older
|
|
1433
|
-
* schema. Consumers SHOULD validate against the schema version declared by the document
|
|
1434
|
-
* ($schema) rather than assume a fixed vocabulary.
|
|
1270
|
+
* Structured controlled-vocabulary reason for an override, complementing the free-text 'reason'
|
|
1271
|
+
* field. 'reason' carries the human-readable rationale an auditor reads; 'justification' carries
|
|
1272
|
+
* the machine-readable category enabling filtering, aggregation, and lossless round-trip with
|
|
1273
|
+
* structured ecosystems (VEX, OSCAL, FedRAMP DR). Both fields may be present simultaneously and are
|
|
1274
|
+
* NOT redundant: 'reason' explains the specific circumstance; 'justification' classifies it.
|
|
1275
|
+
* Authors SHOULD populate both when a controlled-vocabulary value applies — the enum value alone is
|
|
1276
|
+
* not self-explanatory to an auditor. The vocabulary is drawn from the VEX ecosystem: the first
|
|
1277
|
+
* five values are common across OpenVEX, CSAF VEX, and CycloneDX VEX; the remaining six
|
|
1278
|
+
* (requires_configuration / requires_dependency / requires_environment / protected_by_compiler /
|
|
1279
|
+
* protected_at_runtime / protected_at_perimeter) are CycloneDX-specific and describe why the
|
|
1280
|
+
* vulnerable code path is unreachable in the deployed configuration. The enum is extended
|
|
1281
|
+
* additively across schema versions as other ecosystems' controlled vocabularies are integrated;
|
|
1282
|
+
* documents using values added in a newer schema version will fail validation against an older
|
|
1283
|
+
* schema. Consumers SHOULD validate against the schema version declared by the document ($schema)
|
|
1284
|
+
* rather than assume a fixed vocabulary.
|
|
1435
1285
|
*/
|
|
1436
1286
|
export enum Justification {
|
|
1437
1287
|
ComponentNotPresent = "component_not_present",
|
|
@@ -1448,19 +1298,12 @@ export enum Justification {
|
|
|
1448
1298
|
}
|
|
1449
1299
|
|
|
1450
1300
|
/**
|
|
1451
|
-
* How
|
|
1452
|
-
*
|
|
1453
|
-
*
|
|
1454
|
-
*
|
|
1455
|
-
*
|
|
1456
|
-
*
|
|
1457
|
-
*
|
|
1458
|
-
* How a requirement is intended to be verified. Disambiguates the two cases that null
|
|
1459
|
-
* 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable
|
|
1460
|
-
* to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could
|
|
1461
|
-
* exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and
|
|
1462
|
-
* runs without operator action; 'hybrid' = part automated, part manual. Named '_Enum' to
|
|
1463
|
-
* disambiguate from the unrelated Verification_Method DID-context struct.
|
|
1301
|
+
* How a requirement is intended to be verified. Disambiguates the two cases that null 'code'
|
|
1302
|
+
* overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation,
|
|
1303
|
+
* e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet,
|
|
1304
|
+
* e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action;
|
|
1305
|
+
* 'hybrid' = part automated, part manual. Named '_Enum' to disambiguate from the unrelated
|
|
1306
|
+
* Verification_Method DID-context struct.
|
|
1464
1307
|
*/
|
|
1465
1308
|
export enum VerificationMethodEnum {
|
|
1466
1309
|
Automated = "automated",
|
|
@@ -1493,39 +1336,21 @@ export interface SupportedPlatform {
|
|
|
1493
1336
|
}
|
|
1494
1337
|
|
|
1495
1338
|
/**
|
|
1496
|
-
* A system component. Uses discriminated union pattern with 'type' field as discriminator.
|
|
1497
|
-
*
|
|
1498
|
-
*
|
|
1499
|
-
* A physical or virtual server, workstation, or network device.
|
|
1500
|
-
*
|
|
1501
|
-
* Base properties shared by all component types. Extends the Target concept with stable
|
|
1502
|
-
* identity, external references, and SBOM embedding.
|
|
1503
|
-
*
|
|
1504
|
-
* A static container image (not running).
|
|
1505
|
-
*
|
|
1506
|
-
* A running container instance.
|
|
1507
|
-
*
|
|
1508
|
-
* A container orchestration platform (Kubernetes, OpenShift, ECS, etc.).
|
|
1509
|
-
*
|
|
1510
|
-
* A cloud provider account (AWS account, Azure subscription, GCP project).
|
|
1511
|
-
*
|
|
1512
|
-
* A specific cloud resource (EC2 instance, S3 bucket, Azure VM, etc.).
|
|
1513
|
-
*
|
|
1514
|
-
* A code repository (for SAST tools).
|
|
1515
|
-
*
|
|
1516
|
-
* A running application or API (for DAST tools).
|
|
1517
|
-
*
|
|
1518
|
-
* A software artifact or dependency (for SCA tools).
|
|
1519
|
-
*
|
|
1520
|
-
* A network segment or network device.
|
|
1521
|
-
*
|
|
1522
|
-
* A database instance.
|
|
1339
|
+
* A system component. Uses discriminated union pattern with 'type' field as discriminator. Superset
|
|
1340
|
+
* of Target with identity, external IDs, and SBOM support.
|
|
1523
1341
|
*/
|
|
1524
1342
|
export interface Component {
|
|
1525
1343
|
/**
|
|
1526
1344
|
* Names of baselines that apply to this component.
|
|
1527
1345
|
*/
|
|
1528
1346
|
baselineRefs?: string[];
|
|
1347
|
+
/**
|
|
1348
|
+
* Component-scoped Bills of Materials (SBOM, ai-model, dataset, or any reserved bomType),
|
|
1349
|
+
* each carried by passthrough (ref/document) or normalized. Replaces the former
|
|
1350
|
+
* sbom/sbomRef/sbomFormat trio; a component may carry several BOMs (e.g. an SBOM plus an
|
|
1351
|
+
* ai-model BOM). See primitives/bom.schema.json.
|
|
1352
|
+
*/
|
|
1353
|
+
boms?: BillOfMaterials[];
|
|
1529
1354
|
/**
|
|
1530
1355
|
* Stable UUID (RFC 4122) for this component. Required in hdf-system documents, optional in
|
|
1531
1356
|
* hdf-results. Enables cross-document correlation, diffing, and data flow references.
|
|
@@ -1545,6 +1370,15 @@ export interface Component {
|
|
|
1545
1370
|
* System-specific overrides for baseline input values.
|
|
1546
1371
|
*/
|
|
1547
1372
|
inputOverrides?: InputOverride[];
|
|
1373
|
+
/**
|
|
1374
|
+
* Cryptographic integrity of this component's underlying artifact — model weights or
|
|
1375
|
+
* shards, dataset archive, container image, or package bytes. An array supports
|
|
1376
|
+
* multi-file/sharded artifacts. This is the single, generic home for artifact/subject
|
|
1377
|
+
* integrity across all component types (it replaced the former per-type Container_Image
|
|
1378
|
+
* digest and Artifact checksum fields). Distinct from BOM-document integrity (Bom.hashes[])
|
|
1379
|
+
* and from the document tamper-evidence Integrity type.
|
|
1380
|
+
*/
|
|
1381
|
+
integrity?: Checksum[];
|
|
1548
1382
|
/**
|
|
1549
1383
|
* Optional key-value labels for flexible grouping. Well-known keys: system, component,
|
|
1550
1384
|
* environment, region, team. Values must be strings.
|
|
@@ -1559,33 +1393,37 @@ export interface Component {
|
|
|
1559
1393
|
* different teams manage different parts of a system.
|
|
1560
1394
|
*/
|
|
1561
1395
|
owner?: Identity;
|
|
1562
|
-
/**
|
|
1563
|
-
* Embedded CycloneDX or SPDX SBOM document representing this component's software
|
|
1564
|
-
* inventory. The sbomFormat field determines which format constraints apply.
|
|
1565
|
-
*/
|
|
1566
|
-
sbom?: any;
|
|
1567
|
-
/**
|
|
1568
|
-
* Format of the SBOM (embedded or referenced). Required when sbom or sbomRef is present.
|
|
1569
|
-
*/
|
|
1570
|
-
sbomFormat?: SBOMFormat;
|
|
1571
|
-
/**
|
|
1572
|
-
* URI reference to an external CycloneDX or SPDX SBOM document for this component. May be a
|
|
1573
|
-
* relative path, absolute URI, or fragment identifier.
|
|
1574
|
-
*/
|
|
1575
|
-
sbomRef?: string;
|
|
1576
1396
|
/**
|
|
1577
1397
|
* Label selector to match targets belonging to this component during migration. Targets
|
|
1578
1398
|
* with matching labels are automatically included.
|
|
1579
1399
|
*/
|
|
1580
1400
|
targetSelector?: { [key: string]: string };
|
|
1581
1401
|
/**
|
|
1582
|
-
* Component type discriminator. Same values as Target types
|
|
1402
|
+
* Component type discriminator. Same values as Target types, plus aiModel and dataset (thin
|
|
1403
|
+
* AI subject components whose detail lives in an attached ai-model / dataset BOM).
|
|
1583
1404
|
*/
|
|
1584
1405
|
type: TargetType;
|
|
1585
1406
|
/**
|
|
1586
|
-
*
|
|
1407
|
+
* Directory domain the host is a member of — Active Directory / NetBIOS / LDAP domain (ECS
|
|
1408
|
+
* host.domain semantics), NOT necessarily the DNS suffix of the FQDN. A standalone or
|
|
1409
|
+
* workgroup host has a hostname but no domain. Not derivable from the FQDN; populate only
|
|
1410
|
+
* from a source that carries directory membership.
|
|
1411
|
+
*/
|
|
1412
|
+
domain?: string;
|
|
1413
|
+
/**
|
|
1414
|
+
* Fully qualified domain name (e.g. 'web01.prod.example.com'). Distinct from 'hostname'
|
|
1415
|
+
* (short) and 'domain' (directory domain). ECS recommends storing this lowercase; the
|
|
1416
|
+
* schema does not enforce case so source fidelity is preserved on round-trip.
|
|
1587
1417
|
*/
|
|
1588
1418
|
fqdn?: string;
|
|
1419
|
+
/**
|
|
1420
|
+
* Short, OS-reported host name (the unqualified machine name, e.g. 'web01'). Kept distinct
|
|
1421
|
+
* from 'fqdn' because an FQDN is not reliably decomposable into hostname + domain
|
|
1422
|
+
* (standalone/workgroup hosts have no domain; a directory domain is not the FQDN's DNS
|
|
1423
|
+
* suffix). Aligns with ECS host.hostname and DISA STIG CKL HOST_NAME. Store the short name
|
|
1424
|
+
* the source reports; do not derive it from the FQDN.
|
|
1425
|
+
*/
|
|
1426
|
+
hostname?: string;
|
|
1589
1427
|
/**
|
|
1590
1428
|
* IP address of the host.
|
|
1591
1429
|
*/
|
|
@@ -1602,10 +1440,6 @@ export interface Component {
|
|
|
1602
1440
|
* Operating system version.
|
|
1603
1441
|
*/
|
|
1604
1442
|
osVersion?: string;
|
|
1605
|
-
/**
|
|
1606
|
-
* Image digest for immutable reference.
|
|
1607
|
-
*/
|
|
1608
|
-
digest?: string;
|
|
1609
1443
|
/**
|
|
1610
1444
|
* Container image ID.
|
|
1611
1445
|
*/
|
|
@@ -1654,6 +1488,11 @@ export interface Component {
|
|
|
1654
1488
|
* Package version.
|
|
1655
1489
|
*
|
|
1656
1490
|
* Database version.
|
|
1491
|
+
*
|
|
1492
|
+
* Model version, revision, or checkpoint tag.
|
|
1493
|
+
*
|
|
1494
|
+
* Dataset version, release identifier, or — for highly dynamic datasets — a timestamped
|
|
1495
|
+
* release marker.
|
|
1657
1496
|
*/
|
|
1658
1497
|
version?: string;
|
|
1659
1498
|
/**
|
|
@@ -1700,10 +1539,6 @@ export interface Component {
|
|
|
1700
1539
|
* Environment. Example: 'production', 'staging', 'development'.
|
|
1701
1540
|
*/
|
|
1702
1541
|
environment?: string;
|
|
1703
|
-
/**
|
|
1704
|
-
* Package checksum for verification.
|
|
1705
|
-
*/
|
|
1706
|
-
checksum?: string;
|
|
1707
1542
|
/**
|
|
1708
1543
|
* Package manager. Example: 'npm', 'maven', 'pip', 'nuget'.
|
|
1709
1544
|
*/
|
|
@@ -1732,12 +1567,319 @@ export interface Component {
|
|
|
1732
1567
|
* Database port.
|
|
1733
1568
|
*/
|
|
1734
1569
|
port?: number;
|
|
1570
|
+
/**
|
|
1571
|
+
* Provider/registry identifier for the model. Examples: a Hugging Face repo id
|
|
1572
|
+
* ('meta-llama/Llama-2-7b-hf') or a model purl. Correlates the component to its ai-model
|
|
1573
|
+
* BOM(s) and to lineage references from other models.
|
|
1574
|
+
*/
|
|
1575
|
+
modelId?: string;
|
|
1576
|
+
/**
|
|
1577
|
+
* Provider/registry identifier for the dataset. Examples: a Hugging Face dataset repo id
|
|
1578
|
+
* ('HuggingFaceH4/ultrachat_200k'), a DOI, or a dataset purl. Correlates the component to
|
|
1579
|
+
* its dataset BOM(s) and to datasetRefs from ai-model components.
|
|
1580
|
+
*/
|
|
1581
|
+
datasetId?: string;
|
|
1735
1582
|
[property: string]: any;
|
|
1736
1583
|
}
|
|
1737
1584
|
|
|
1585
|
+
export interface BillOfMaterials {
|
|
1586
|
+
/**
|
|
1587
|
+
* The manifest kind. Determines which normalized type-extension (model/dataset/packages)
|
|
1588
|
+
* may appear.
|
|
1589
|
+
*/
|
|
1590
|
+
bomType: string;
|
|
1591
|
+
/**
|
|
1592
|
+
* Normalized dataset extension. Permitted only when bomType is dataset.
|
|
1593
|
+
*/
|
|
1594
|
+
dataset?: DatasetBOMExtension;
|
|
1595
|
+
/**
|
|
1596
|
+
* Passthrough by embedding: the native manifest carried opaquely (e.g. a raw CycloneDX or
|
|
1597
|
+
* SPDX object). HDF does not constrain its internal shape — full manifest validation is a
|
|
1598
|
+
* tool-level concern.
|
|
1599
|
+
*/
|
|
1600
|
+
document?: { [key: string]: any };
|
|
1601
|
+
/**
|
|
1602
|
+
* Source manifest format the BOM was produced from or references. Examples: cyclonedx,
|
|
1603
|
+
* cyclonedx-ml, spdx, spdx-ai, huggingface, croissant. Free-form so new formats need no
|
|
1604
|
+
* schema change; the converter that emits the BOM owns the value.
|
|
1605
|
+
*/
|
|
1606
|
+
format: string;
|
|
1607
|
+
/**
|
|
1608
|
+
* Integrity of the carried BOM *document* itself (the referenced/embedded manifest file),
|
|
1609
|
+
* NOT the integrity of the BOM's subject artifact. Subject/artifact integrity (model
|
|
1610
|
+
* weights, dataset archive) is a component-level concern, not carried here. Subject
|
|
1611
|
+
* identity is inherited from the host component/system; per-node identity lives in the
|
|
1612
|
+
* type-extension.
|
|
1613
|
+
*/
|
|
1614
|
+
hashes?: Checksum[];
|
|
1615
|
+
/**
|
|
1616
|
+
* Optional license of the BOM document as a whole (SPDX license expression). Nullable and
|
|
1617
|
+
* often meaningless (CBOM algorithms, many HBOM parts have no license); per-node licenses
|
|
1618
|
+
* live in the type-extension, not here.
|
|
1619
|
+
*/
|
|
1620
|
+
license?: null | string;
|
|
1621
|
+
/**
|
|
1622
|
+
* Normalized ai-model extension. Permitted only when bomType is ai-model.
|
|
1623
|
+
*/
|
|
1624
|
+
model?: AIModelBOMExtension;
|
|
1625
|
+
/**
|
|
1626
|
+
* Normalized sbom extension: the flattened software package inventory. Permitted only when
|
|
1627
|
+
* bomType is sbom.
|
|
1628
|
+
*/
|
|
1629
|
+
packages?: SBOMPackage[];
|
|
1630
|
+
/**
|
|
1631
|
+
* Passthrough by reference: URI (relative path, absolute URI, or fragment) to the native
|
|
1632
|
+
* manifest document. Present for externally-hosted BOMs.
|
|
1633
|
+
*/
|
|
1634
|
+
ref?: string;
|
|
1635
|
+
/**
|
|
1636
|
+
* Optional stable identifier for this BOM document (e.g. CycloneDX serialNumber, SPDX
|
|
1637
|
+
* documentNamespace). Correlates the same BOM across evidence packages.
|
|
1638
|
+
*/
|
|
1639
|
+
uniqueId?: string;
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1738
1642
|
/**
|
|
1739
|
-
*
|
|
1740
|
-
*
|
|
1643
|
+
* Normalized dataset fields (SPDX 3.0 Dataset profile / MLCommons Croissant aligned). All optional;
|
|
1644
|
+
* open for partial-fidelity passthrough of unmapped native fields. Symmetric with
|
|
1645
|
+
* AI_Model_Extension: carries the dataset's own lineage (baseDatasetRefs/derivation) just as the
|
|
1646
|
+
* model extension carries baseModelRef/adaptationType.
|
|
1647
|
+
*/
|
|
1648
|
+
export interface DatasetBOMExtension {
|
|
1649
|
+
/**
|
|
1650
|
+
* References to the source dataset(s) this one was derived from — a dataset componentId, or
|
|
1651
|
+
* a dataset BOM uniqueId/URI when no component exists. The lineage edge parallel to
|
|
1652
|
+
* ai-model's baseModelRef; the base dataset may carry its own dataset BOM.
|
|
1653
|
+
*/
|
|
1654
|
+
baseDatasetRefs?: string[];
|
|
1655
|
+
/**
|
|
1656
|
+
* Sensitivity/classification of the data. Examples: public, internal, confidential, pii,
|
|
1657
|
+
* phi.
|
|
1658
|
+
*/
|
|
1659
|
+
dataClassification?: string;
|
|
1660
|
+
/**
|
|
1661
|
+
* Physical format of the dataset. Examples: parquet, csv, jsonl, tfrecord, webdataset.
|
|
1662
|
+
*/
|
|
1663
|
+
datasetFormat?: string;
|
|
1664
|
+
/**
|
|
1665
|
+
* Relationship of this dataset to baseDatasetRefs, parallel to the model extension's
|
|
1666
|
+
* adaptationType. Minimal + extensible: filtered (subset by rule), augmented
|
|
1667
|
+
* (added/synthesized records), merged (union of sources), sampled (statistical draw).
|
|
1668
|
+
*/
|
|
1669
|
+
derivation?: DatasetDerivationType;
|
|
1670
|
+
/**
|
|
1671
|
+
* Free-text statement of the dataset's intended use (CISA/G7 minimum element).
|
|
1672
|
+
*/
|
|
1673
|
+
intendedUse?: string;
|
|
1674
|
+
/**
|
|
1675
|
+
* Content modality/kind of the data (CISA/G7 'Dataset content: modality'). Examples: text,
|
|
1676
|
+
* image, tabular, timeseries, audio. DISTINCT from datasetFormat, which is the physical
|
|
1677
|
+
* encoding (parquet/csv). Resolves SPDX 3.0 dataset_datasetType, which is content-kind, not
|
|
1678
|
+
* physical format. String or array of strings.
|
|
1679
|
+
*/
|
|
1680
|
+
modality?: string[] | string;
|
|
1681
|
+
/**
|
|
1682
|
+
* Free-text description of the dataset's origin and collection process (CISA/G7 'Dataset
|
|
1683
|
+
* provenance'; SPDX 3.0 dataset_dataCollectionProcess).
|
|
1684
|
+
*/
|
|
1685
|
+
provenance?: string;
|
|
1686
|
+
/**
|
|
1687
|
+
* Number of records/examples in the dataset.
|
|
1688
|
+
*/
|
|
1689
|
+
recordCount?: number;
|
|
1690
|
+
/**
|
|
1691
|
+
* Free-text summary of the dataset's statistical properties (CISA/G7 minimum element;
|
|
1692
|
+
* open-ended by design). Intentionally free-text and will remain so permanently:
|
|
1693
|
+
* recordCount is the one structured statistic, and restructuring this into an object later
|
|
1694
|
+
* would break existing consumers, so it stays a string (additive-only).
|
|
1695
|
+
*/
|
|
1696
|
+
statisticalProperties?: string;
|
|
1697
|
+
[property: string]: any;
|
|
1698
|
+
}
|
|
1699
|
+
|
|
1700
|
+
/**
|
|
1701
|
+
* Relationship of this dataset to baseDatasetRefs, parallel to the model extension's
|
|
1702
|
+
* adaptationType. Minimal + extensible: filtered (subset by rule), augmented
|
|
1703
|
+
* (added/synthesized records), merged (union of sources), sampled (statistical draw).
|
|
1704
|
+
*/
|
|
1705
|
+
export enum DatasetDerivationType {
|
|
1706
|
+
Augmented = "augmented",
|
|
1707
|
+
Filtered = "filtered",
|
|
1708
|
+
Merged = "merged",
|
|
1709
|
+
Sampled = "sampled",
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
/**
|
|
1713
|
+
* Normalized AI-model fields, aligned to the CISA/G7 'SBOM for AI' minimum elements. All fields
|
|
1714
|
+
* optional (standards-correct; only the EU AI Act makes a subset binding for high-risk/GPAI). Left
|
|
1715
|
+
* open (additionalProperties: true) so a converter can carry unmapped native fields opaquely
|
|
1716
|
+
* (partial-fidelity pattern). Subject name/version are inherited from the host aiModel component,
|
|
1717
|
+
* not repeated here.
|
|
1718
|
+
*/
|
|
1719
|
+
export interface AIModelBOMExtension {
|
|
1720
|
+
/**
|
|
1721
|
+
* Lineage relationship to baseModelRef, adopting Hugging Face's base_model_relation
|
|
1722
|
+
* vocabulary (the only typed lineage enum in the ecosystem).
|
|
1723
|
+
*/
|
|
1724
|
+
adaptationType?: ModelAdaptationType;
|
|
1725
|
+
/**
|
|
1726
|
+
* Reference to the base model this one was adapted from (e.g. a Hugging Face repo id or
|
|
1727
|
+
* purl). Correlates the lineage edge; the base model itself may carry its own ai-model BOM.
|
|
1728
|
+
*/
|
|
1729
|
+
baseModelRef?: string;
|
|
1730
|
+
/**
|
|
1731
|
+
* References to the training/evaluation datasets this model was produced from — preferably
|
|
1732
|
+
* a dataset component's componentId (correlating to a first-class dataset subject rather
|
|
1733
|
+
* than duplicating dataset detail, per ADR §10), or a dataset BOM uniqueId/URI when no
|
|
1734
|
+
* component exists.
|
|
1735
|
+
*/
|
|
1736
|
+
datasetRefs?: string[];
|
|
1737
|
+
/**
|
|
1738
|
+
* Training hyper-parameters as name/value pairs (epochs, learning-rate, batch-size). This
|
|
1739
|
+
* is the set of training knobs, NOT the model's trainable parameterCount — the two are
|
|
1740
|
+
* routinely conflated. CISA/G7 'Model properties: hyper-parameters'; SPDX 3.0
|
|
1741
|
+
* ai_hyperparameter.
|
|
1742
|
+
*/
|
|
1743
|
+
hyperparameters?: Hyperparameter[];
|
|
1744
|
+
/**
|
|
1745
|
+
* Model input/output properties (CISA/G7 minimum element): I/O data types, modality,
|
|
1746
|
+
* context/sequence length, and tokenizer. Sourced from CycloneDX
|
|
1747
|
+
* modelParameters.inputs[].format / outputs[].format. All sub-fields optional.
|
|
1748
|
+
*/
|
|
1749
|
+
inputOutput?: InputOutput;
|
|
1750
|
+
/**
|
|
1751
|
+
* Free-text statement of intended use and out-of-scope uses (CISA/G7 minimum element).
|
|
1752
|
+
*/
|
|
1753
|
+
intendedUse?: string;
|
|
1754
|
+
/**
|
|
1755
|
+
* Model's learning/training paradigm. Free-text because the value set varies across
|
|
1756
|
+
* standards. Examples: supervised, self-supervised, semi-supervised, reinforcement.
|
|
1757
|
+
* Cross-standard intersection: SPDX 3.0 ai_typeOfModel ∩ CycloneDX
|
|
1758
|
+
* modelParameters.approach.type ∩ CISA/G7 learning type.
|
|
1759
|
+
*/
|
|
1760
|
+
learningApproach?: string;
|
|
1761
|
+
/**
|
|
1762
|
+
* Model architecture family. Examples: transformer, cnn, diffusion, mixture-of-experts.
|
|
1763
|
+
*/
|
|
1764
|
+
modelArchitecture?: string;
|
|
1765
|
+
/**
|
|
1766
|
+
* Total trainable parameter count. No native CycloneDX/SPDX field exists; first-class here
|
|
1767
|
+
* because the EU AI Act keys GPAI obligations off model scale.
|
|
1768
|
+
*/
|
|
1769
|
+
parameterCount?: number;
|
|
1770
|
+
/**
|
|
1771
|
+
* Reported evaluation metrics as name/value pairs. Values are free-text because metrics are
|
|
1772
|
+
* heterogeneous (accuracy, f1, BLEU, latency). The item stays open (additionalProperties:
|
|
1773
|
+
* true) to carry native CycloneDX slice/confidenceInterval detail opaquely. Cross-standard
|
|
1774
|
+
* intersection: SPDX 3.0 ai_metric ∩ CycloneDX quantitativeAnalysis.performanceMetrics ∩
|
|
1775
|
+
* CISA/G7 KPI cluster.
|
|
1776
|
+
*/
|
|
1777
|
+
performanceMetrics?: PerformanceMetric[];
|
|
1778
|
+
/**
|
|
1779
|
+
* On-disk weight serialization format. Security-critical yet under-modeled by BOM specs:
|
|
1780
|
+
* pickle/pytorch permits arbitrary code execution on load; safetensors does not. Examples:
|
|
1781
|
+
* safetensors, pytorch, gguf, onnx, tensorflow.
|
|
1782
|
+
*/
|
|
1783
|
+
serializationFormat?: string;
|
|
1784
|
+
/**
|
|
1785
|
+
* The ML task the model performs. Free-text. Examples: text-classification,
|
|
1786
|
+
* sentiment-analysis, object-detection, translation. Sourced from CycloneDX
|
|
1787
|
+
* modelParameters.task (SPDX 3.0 ai_domain is domain-level/adjacent, not the task); CISA/G7
|
|
1788
|
+
* intended-application.
|
|
1789
|
+
*/
|
|
1790
|
+
task?: string;
|
|
1791
|
+
[property: string]: any;
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
/**
|
|
1795
|
+
* Lineage relationship to baseModelRef, adopting Hugging Face's base_model_relation
|
|
1796
|
+
* vocabulary (the only typed lineage enum in the ecosystem).
|
|
1797
|
+
*/
|
|
1798
|
+
export enum ModelAdaptationType {
|
|
1799
|
+
Adapter = "adapter",
|
|
1800
|
+
Finetune = "finetune",
|
|
1801
|
+
Merge = "merge",
|
|
1802
|
+
Quantized = "quantized",
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
export interface Hyperparameter {
|
|
1806
|
+
/**
|
|
1807
|
+
* Hyper-parameter name. Examples: epochs, learning-rate, batch-size.
|
|
1808
|
+
*/
|
|
1809
|
+
name?: string;
|
|
1810
|
+
/**
|
|
1811
|
+
* Hyper-parameter value (free-text).
|
|
1812
|
+
*/
|
|
1813
|
+
value?: string;
|
|
1814
|
+
[property: string]: any;
|
|
1815
|
+
}
|
|
1816
|
+
|
|
1817
|
+
/**
|
|
1818
|
+
* Model input/output properties (CISA/G7 minimum element): I/O data types, modality,
|
|
1819
|
+
* context/sequence length, and tokenizer. Sourced from CycloneDX
|
|
1820
|
+
* modelParameters.inputs[].format / outputs[].format. All sub-fields optional.
|
|
1821
|
+
*/
|
|
1822
|
+
export interface InputOutput {
|
|
1823
|
+
/**
|
|
1824
|
+
* Maximum context/sequence length the model accepts, in tokens.
|
|
1825
|
+
*/
|
|
1826
|
+
contextLength?: number;
|
|
1827
|
+
/**
|
|
1828
|
+
* Input/output data types. Examples: string, byte[], float32, image.
|
|
1829
|
+
*/
|
|
1830
|
+
dataTypes?: string[];
|
|
1831
|
+
/**
|
|
1832
|
+
* Input/output modalities. String or array of strings. Examples: text, image, audio.
|
|
1833
|
+
* Symmetric with Dataset_Extension.modality.
|
|
1834
|
+
*/
|
|
1835
|
+
modality?: string[] | string;
|
|
1836
|
+
/**
|
|
1837
|
+
* Tokenizer used for the model's input encoding. Examples: BPE, SentencePiece, tiktoken.
|
|
1838
|
+
*/
|
|
1839
|
+
tokenizer?: string;
|
|
1840
|
+
[property: string]: any;
|
|
1841
|
+
}
|
|
1842
|
+
|
|
1843
|
+
export interface PerformanceMetric {
|
|
1844
|
+
/**
|
|
1845
|
+
* Metric name. Examples: accuracy, f1, BLEU, latency.
|
|
1846
|
+
*/
|
|
1847
|
+
name?: string;
|
|
1848
|
+
/**
|
|
1849
|
+
* Reported metric value, free-text because metrics are heterogeneous (percentages, scores,
|
|
1850
|
+
* milliseconds).
|
|
1851
|
+
*/
|
|
1852
|
+
value?: string;
|
|
1853
|
+
[property: string]: any;
|
|
1854
|
+
}
|
|
1855
|
+
|
|
1856
|
+
/**
|
|
1857
|
+
* A single normalized software package entry within an sbom BOM. Minimal identity + version for
|
|
1858
|
+
* querying/diffing; the full native record remains available via passthrough (document/ref).
|
|
1859
|
+
*/
|
|
1860
|
+
export interface SBOMPackage {
|
|
1861
|
+
/**
|
|
1862
|
+
* SPDX license identifiers/expressions for this package.
|
|
1863
|
+
*/
|
|
1864
|
+
licenses?: string[];
|
|
1865
|
+
/**
|
|
1866
|
+
* Package name.
|
|
1867
|
+
*/
|
|
1868
|
+
name: string;
|
|
1869
|
+
/**
|
|
1870
|
+
* Package URL (purl) — the preferred cross-BOM identity key when present.
|
|
1871
|
+
*/
|
|
1872
|
+
purl?: string;
|
|
1873
|
+
/**
|
|
1874
|
+
* Package version.
|
|
1875
|
+
*/
|
|
1876
|
+
version?: string;
|
|
1877
|
+
[property: string]: any;
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
/**
|
|
1881
|
+
* An override of a baseline input value for a specific component. Enables system-specific tailoring
|
|
1882
|
+
* of baseline parameters.
|
|
1741
1883
|
*/
|
|
1742
1884
|
export interface InputOverride {
|
|
1743
1885
|
/**
|
|
@@ -1773,17 +1915,11 @@ export enum CloudProvider {
|
|
|
1773
1915
|
}
|
|
1774
1916
|
|
|
1775
1917
|
/**
|
|
1776
|
-
*
|
|
1777
|
-
|
|
1778
|
-
export enum SBOMFormat {
|
|
1779
|
-
Cyclonedx = "cyclonedx",
|
|
1780
|
-
Spdx = "spdx",
|
|
1781
|
-
}
|
|
1782
|
-
|
|
1783
|
-
/**
|
|
1784
|
-
* Component type discriminator. Same values as Target types.
|
|
1918
|
+
* Component type discriminator. Same values as Target types, plus aiModel and dataset (thin
|
|
1919
|
+
* AI subject components whose detail lives in an attached ai-model / dataset BOM).
|
|
1785
1920
|
*/
|
|
1786
1921
|
export enum TargetType {
|
|
1922
|
+
AIModel = "aiModel",
|
|
1787
1923
|
Application = "application",
|
|
1788
1924
|
Artifact = "artifact",
|
|
1789
1925
|
CloudAccount = "cloudAccount",
|
|
@@ -1792,25 +1928,14 @@ export enum TargetType {
|
|
|
1792
1928
|
ContainerInstance = "containerInstance",
|
|
1793
1929
|
ContainerPlatform = "containerPlatform",
|
|
1794
1930
|
Database = "database",
|
|
1931
|
+
Dataset = "dataset",
|
|
1795
1932
|
Host = "host",
|
|
1796
1933
|
Network = "network",
|
|
1797
1934
|
Repository = "repository",
|
|
1798
1935
|
}
|
|
1799
1936
|
|
|
1800
1937
|
/**
|
|
1801
|
-
* Information about the tool that generated this file.
|
|
1802
|
-
*
|
|
1803
1938
|
* Information about the tool that generated this HDF file.
|
|
1804
|
-
*
|
|
1805
|
-
* The tool that generated this file.
|
|
1806
|
-
*
|
|
1807
|
-
* Information about the tool that generated this comparison.
|
|
1808
|
-
*
|
|
1809
|
-
* Information about the tool that generated this system document.
|
|
1810
|
-
*
|
|
1811
|
-
* Information about the tool that generated this plan.
|
|
1812
|
-
*
|
|
1813
|
-
* Information about the tool that generated this document.
|
|
1814
1939
|
*/
|
|
1815
1940
|
export interface Generator {
|
|
1816
1941
|
/**
|
|
@@ -1825,15 +1950,9 @@ export interface Generator {
|
|
|
1825
1950
|
}
|
|
1826
1951
|
|
|
1827
1952
|
/**
|
|
1828
|
-
*
|
|
1829
|
-
*
|
|
1830
|
-
*
|
|
1831
|
-
* Reference to automated remediation resources for implementing security controls. Points
|
|
1832
|
-
* to external automation content like Ansible playbooks, Terraform scripts, or
|
|
1833
|
-
* vendor-provided remediation tools.
|
|
1834
|
-
*
|
|
1835
|
-
* Optional reference to automated remediation resources (Ansible playbooks, Terraform
|
|
1836
|
-
* scripts, etc.) for implementing the security controls defined in this baseline.
|
|
1953
|
+
* Reference to automated remediation resources for implementing security controls. Points to
|
|
1954
|
+
* external automation content like Ansible playbooks, Terraform scripts, or vendor-provided
|
|
1955
|
+
* remediation tools.
|
|
1837
1956
|
*/
|
|
1838
1957
|
export interface Remediation {
|
|
1839
1958
|
/**
|
|
@@ -1852,12 +1971,8 @@ export interface Remediation {
|
|
|
1852
1971
|
}
|
|
1853
1972
|
|
|
1854
1973
|
/**
|
|
1855
|
-
* Information about the test execution environment
|
|
1856
|
-
*
|
|
1857
|
-
*
|
|
1858
|
-
* Information about the test execution environment. This is distinct from the target being
|
|
1859
|
-
* scanned - the runner is where the security tool executes, while targets are what is being
|
|
1860
|
-
* assessed.
|
|
1974
|
+
* Information about the test execution environment. This is distinct from the target being scanned
|
|
1975
|
+
* - the runner is where the security tool executes, while targets are what is being assessed.
|
|
1861
1976
|
*/
|
|
1862
1977
|
export interface Runner {
|
|
1863
1978
|
/**
|
|
@@ -1875,7 +1990,18 @@ export interface Runner {
|
|
|
1875
1990
|
*/
|
|
1876
1991
|
containerImage?: string;
|
|
1877
1992
|
/**
|
|
1878
|
-
* The
|
|
1993
|
+
* The directory domain the runner system belongs to (Active Directory / NetBIOS / LDAP),
|
|
1994
|
+
* NOT the DNS suffix of the FQDN. Example: 'CORP'.
|
|
1995
|
+
*/
|
|
1996
|
+
domain?: string;
|
|
1997
|
+
/**
|
|
1998
|
+
* The fully qualified domain name of the runner system, when known. Distinct from the short
|
|
1999
|
+
* 'hostname'; kept separate for the same reason as on host components (an FQDN is not
|
|
2000
|
+
* reliably decomposable). Example: 'ci-runner-01.build.example.com'.
|
|
2001
|
+
*/
|
|
2002
|
+
fqdn?: string;
|
|
2003
|
+
/**
|
|
2004
|
+
* The short hostname of the runner system. Example: 'ci-runner-01', 'jenkins-agent-03',
|
|
1879
2005
|
* 'k8s-node-worker-03'.
|
|
1880
2006
|
*/
|
|
1881
2007
|
hostname?: string;
|
|
@@ -1898,8 +2024,6 @@ export interface Runner {
|
|
|
1898
2024
|
}
|
|
1899
2025
|
|
|
1900
2026
|
/**
|
|
1901
|
-
* Statistics for the assessment run, including duration and result counts.
|
|
1902
|
-
*
|
|
1903
2027
|
* Statistics for the assessment run(s) such as duration and result counts.
|
|
1904
2028
|
*/
|
|
1905
2029
|
export interface Statistics {
|
|
@@ -1915,8 +2039,6 @@ export interface Statistics {
|
|
|
1915
2039
|
}
|
|
1916
2040
|
|
|
1917
2041
|
/**
|
|
1918
|
-
* Breakdowns of requirement statistics by result status.
|
|
1919
|
-
*
|
|
1920
2042
|
* Statistics for requirement results, grouped by status.
|
|
1921
2043
|
*/
|
|
1922
2044
|
export interface StatisticHash {
|
|
@@ -1944,17 +2066,7 @@ export interface StatisticHash {
|
|
|
1944
2066
|
}
|
|
1945
2067
|
|
|
1946
2068
|
/**
|
|
1947
|
-
* Statistics for requirements that encountered an error during assessment.
|
|
1948
|
-
*
|
|
1949
2069
|
* Statistics for a given item, such as the total count.
|
|
1950
|
-
*
|
|
1951
|
-
* Statistics for requirements that failed.
|
|
1952
|
-
*
|
|
1953
|
-
* Statistics for requirements that are not applicable to the target.
|
|
1954
|
-
*
|
|
1955
|
-
* Statistics for requirements that were not reviewed (manual check required).
|
|
1956
|
-
*
|
|
1957
|
-
* Statistics for requirements that passed.
|
|
1958
2070
|
*/
|
|
1959
2071
|
export interface StatisticBlock {
|
|
1960
2072
|
/**
|
|
@@ -1965,12 +2077,8 @@ export interface StatisticBlock {
|
|
|
1965
2077
|
}
|
|
1966
2078
|
|
|
1967
2079
|
/**
|
|
1968
|
-
* The security tool that produced the assessment data in this file.
|
|
1969
|
-
*
|
|
1970
|
-
* The security tool that produced the assessment data represented in this HDF file. Aligns
|
|
1971
|
-
* with SARIF, OSCAL, and CycloneDX terminology.
|
|
1972
|
-
*
|
|
1973
|
-
* The security tool that produced the assessment data in this source.
|
|
2080
|
+
* The security tool that produced the assessment data represented in this HDF file. Aligns with
|
|
2081
|
+
* SARIF, OSCAL, and CycloneDX terminology.
|
|
1974
2082
|
*/
|
|
1975
2083
|
export interface Tool {
|
|
1976
2084
|
/**
|
|
@@ -1992,11 +2100,8 @@ export interface Tool {
|
|
|
1992
2100
|
}
|
|
1993
2101
|
|
|
1994
2102
|
/**
|
|
1995
|
-
* Information on the set of requirements that can be assessed, including baseline metadata
|
|
1996
|
-
*
|
|
1997
|
-
*
|
|
1998
|
-
* Shared metadata fields for baselines. Used in both standalone baseline documents and
|
|
1999
|
-
* evaluated baseline results.
|
|
2103
|
+
* Information on the set of requirements that can be assessed, including baseline metadata and
|
|
2104
|
+
* requirement definitions.
|
|
2000
2105
|
*/
|
|
2001
2106
|
export interface HDFBaseline {
|
|
2002
2107
|
/**
|
|
@@ -2079,9 +2184,6 @@ export interface HDFBaseline {
|
|
|
2079
2184
|
|
|
2080
2185
|
/**
|
|
2081
2186
|
* A requirement definition without assessment results.
|
|
2082
|
-
*
|
|
2083
|
-
* Core requirement fields shared between baseline requirements and evaluated requirements.
|
|
2084
|
-
* Contains the fundamental requirement definition without assessment results.
|
|
2085
2187
|
*/
|
|
2086
2188
|
export interface BaselineRequirement {
|
|
2087
2189
|
/**
|
|
@@ -2157,8 +2259,8 @@ export interface BaselineRequirement {
|
|
|
2157
2259
|
}
|
|
2158
2260
|
|
|
2159
2261
|
/**
|
|
2160
|
-
* Structured comparison between two or more HDF security assessment documents. Supports
|
|
2161
|
-
*
|
|
2262
|
+
* Structured comparison between two or more HDF security assessment documents. Supports temporal,
|
|
2263
|
+
* baseline, fleet, and multi-source comparison modes.
|
|
2162
2264
|
*/
|
|
2163
2265
|
export interface HDFComparison {
|
|
2164
2266
|
/**
|
|
@@ -2175,7 +2277,8 @@ export interface HDFComparison {
|
|
|
2175
2277
|
*/
|
|
2176
2278
|
comparisonMode: ComparisonMode;
|
|
2177
2279
|
/**
|
|
2178
|
-
* Comparison of components between two system documents. Used in systemDrift mode.
|
|
2280
|
+
* Comparison of components between two system documents. Used in systemDrift mode. A
|
|
2281
|
+
* component's BOM changes surface as a field change on its boms[] here.
|
|
2179
2282
|
*/
|
|
2180
2283
|
componentDiffs?: ComponentDiff[];
|
|
2181
2284
|
/**
|
|
@@ -2203,7 +2306,11 @@ export interface HDFComparison {
|
|
|
2203
2306
|
*/
|
|
2204
2307
|
matching?: MatchingConfig;
|
|
2205
2308
|
/**
|
|
2206
|
-
*
|
|
2309
|
+
* RESERVED — not emitted by the current systemDrift comparison. systemDrift now reports a
|
|
2310
|
+
* component's BOM changes as a field change on its boms[] (see componentDiffs), and
|
|
2311
|
+
* standalone SBOM package diffing is a separate `hdf diff <sbom> <sbom>` output shape. This
|
|
2312
|
+
* field is retained for a future normalized package-level diff; consumers must not expect
|
|
2313
|
+
* it from today's systemDrift output.
|
|
2207
2314
|
*/
|
|
2208
2315
|
packageDiffs?: PackageDiff[];
|
|
2209
2316
|
/**
|
|
@@ -2253,8 +2360,6 @@ export interface Annotation {
|
|
|
2253
2360
|
}
|
|
2254
2361
|
|
|
2255
2362
|
/**
|
|
2256
|
-
* The category of this annotation.
|
|
2257
|
-
*
|
|
2258
2363
|
* The category of an annotation attached to a comparison.
|
|
2259
2364
|
*/
|
|
2260
2365
|
export enum AnnotationCategory {
|
|
@@ -2305,13 +2410,11 @@ export enum BaselineDiffState {
|
|
|
2305
2410
|
}
|
|
2306
2411
|
|
|
2307
2412
|
/**
|
|
2308
|
-
* The mode of comparison
|
|
2309
|
-
*
|
|
2310
|
-
*
|
|
2311
|
-
*
|
|
2312
|
-
*
|
|
2313
|
-
* baseline documents to detect requirement changes between versions. 'systemDrift' compares
|
|
2314
|
-
* two system documents to detect component-level changes.
|
|
2413
|
+
* The mode of comparison. 'temporal' compares the same target over time. 'baseline' compares
|
|
2414
|
+
* against a golden reference. 'fleet' compares across multiple systems. 'multiSource' compares
|
|
2415
|
+
* outputs from different scanners. 'baselineEvolution' compares two baseline documents to detect
|
|
2416
|
+
* requirement changes between versions. 'systemDrift' compares two system documents to detect
|
|
2417
|
+
* component-level changes.
|
|
2315
2418
|
*/
|
|
2316
2419
|
export enum ComparisonMode {
|
|
2317
2420
|
Baseline = "baseline",
|
|
@@ -2516,8 +2619,6 @@ export interface ScannerConflict {
|
|
|
2516
2619
|
}
|
|
2517
2620
|
|
|
2518
2621
|
/**
|
|
2519
|
-
* How the conflict was resolved.
|
|
2520
|
-
*
|
|
2521
2622
|
* How a conflict between multiple scanner results was resolved.
|
|
2522
2623
|
*/
|
|
2523
2624
|
export enum ConflictResolution {
|
|
@@ -2544,13 +2645,9 @@ export interface Value {
|
|
|
2544
2645
|
}
|
|
2545
2646
|
|
|
2546
2647
|
/**
|
|
2547
|
-
* The strategy
|
|
2548
|
-
*
|
|
2549
|
-
*
|
|
2550
|
-
* IDs. 'mappedId' uses an ID mapping table. 'cciMatch'/'nistMatch' match by framework
|
|
2551
|
-
* identifiers. 'fuzzyTitle'/'fuzzyContent' use text similarity.
|
|
2552
|
-
*
|
|
2553
|
-
* The primary strategy used to match requirements across sources.
|
|
2648
|
+
* The strategy used to match requirements across sources. 'exactId' matches by identical IDs.
|
|
2649
|
+
* 'mappedId' uses an ID mapping table. 'cciMatch'/'nistMatch' match by framework identifiers.
|
|
2650
|
+
* 'fuzzyTitle'/'fuzzyContent' use text similarity.
|
|
2554
2651
|
*/
|
|
2555
2652
|
export enum MatchStrategy {
|
|
2556
2653
|
CciMatch = "cciMatch",
|
|
@@ -2562,12 +2659,10 @@ export enum MatchStrategy {
|
|
|
2562
2659
|
}
|
|
2563
2660
|
|
|
2564
2661
|
/**
|
|
2565
|
-
*
|
|
2566
|
-
*
|
|
2567
|
-
*
|
|
2568
|
-
*
|
|
2569
|
-
* changed (generic), 'fixed' = was failing now passing, 'regressed' = was passing now
|
|
2570
|
-
* failing, 'moved' = reorganized same content, 'split'/'merged' = reserved for v1.1.
|
|
2662
|
+
* SARIF-compatible vocabulary extended for security. 'new' = present only in new source, 'absent' =
|
|
2663
|
+
* present only in old, 'unchanged' = same effective status, 'updated' = status changed (generic),
|
|
2664
|
+
* 'fixed' = was failing now passing, 'regressed' = was passing now failing, 'moved' = reorganized
|
|
2665
|
+
* same content, 'split'/'merged' = reserved for v1.1.
|
|
2571
2666
|
*/
|
|
2572
2667
|
export enum RequirementState {
|
|
2573
2668
|
Absent = "absent",
|
|
@@ -2586,8 +2681,6 @@ export enum FormatVersion {
|
|
|
2586
2681
|
}
|
|
2587
2682
|
|
|
2588
2683
|
/**
|
|
2589
|
-
* Configuration for how requirements were matched across sources.
|
|
2590
|
-
*
|
|
2591
2684
|
* Configuration for how requirements are matched across sources.
|
|
2592
2685
|
*/
|
|
2593
2686
|
export interface MatchingConfig {
|
|
@@ -2615,15 +2708,22 @@ export interface MatchingConfig {
|
|
|
2615
2708
|
}
|
|
2616
2709
|
|
|
2617
2710
|
/**
|
|
2618
|
-
* Comparison of a single
|
|
2711
|
+
* Comparison of a single BOM node between two BOM versions, matched by purl (software) or
|
|
2712
|
+
* identifier (models, datasets, hardware, crypto).
|
|
2619
2713
|
*/
|
|
2620
2714
|
export interface PackageDiff {
|
|
2715
|
+
/**
|
|
2716
|
+
* Generic identity key for matching a BOM node across versions when no purl applies — e.g.
|
|
2717
|
+
* a Hugging Face model ref, dataset uniqueId, crypto algorithm OID, or hardware part
|
|
2718
|
+
* number. At least one of purl or identifier is required.
|
|
2719
|
+
*/
|
|
2720
|
+
identifier?: string;
|
|
2621
2721
|
/**
|
|
2622
2722
|
* License identifiers for this package.
|
|
2623
2723
|
*/
|
|
2624
2724
|
licenses?: string[];
|
|
2625
2725
|
/**
|
|
2626
|
-
* Human-readable
|
|
2726
|
+
* Human-readable node name.
|
|
2627
2727
|
*/
|
|
2628
2728
|
name?: string;
|
|
2629
2729
|
/**
|
|
@@ -2635,9 +2735,11 @@ export interface PackageDiff {
|
|
|
2635
2735
|
*/
|
|
2636
2736
|
oldVersion?: string;
|
|
2637
2737
|
/**
|
|
2638
|
-
* Package URL (purl)
|
|
2738
|
+
* Package URL (purl) — the preferred identity key for matching software packages across
|
|
2739
|
+
* BOMs. Optional: BOM nodes without a purl (AI models, datasets, hardware parts, crypto
|
|
2740
|
+
* algorithms) key on identifier instead.
|
|
2639
2741
|
*/
|
|
2640
|
-
purl
|
|
2742
|
+
purl?: string;
|
|
2641
2743
|
/**
|
|
2642
2744
|
* The state of this package: added (new in new SBOM), removed (absent from new SBOM),
|
|
2643
2745
|
* updated (version changed), unchanged.
|
|
@@ -2727,8 +2829,6 @@ export enum OriginalFormat {
|
|
|
2727
2829
|
}
|
|
2728
2830
|
|
|
2729
2831
|
/**
|
|
2730
|
-
* The role of this source in the comparison.
|
|
2731
|
-
*
|
|
2732
2832
|
* The role of a source document in the comparison.
|
|
2733
2833
|
*/
|
|
2734
2834
|
export enum SourceRole {
|
|
@@ -2815,8 +2915,6 @@ export interface ComparisonSummary {
|
|
|
2815
2915
|
}
|
|
2816
2916
|
|
|
2817
2917
|
/**
|
|
2818
|
-
* State counts broken down by severity level.
|
|
2819
|
-
*
|
|
2820
2918
|
* Breakdown of state counts by severity level.
|
|
2821
2919
|
*/
|
|
2822
2920
|
export interface SeverityBreakdown {
|
|
@@ -2840,15 +2938,7 @@ export interface SeverityBreakdown {
|
|
|
2840
2938
|
}
|
|
2841
2939
|
|
|
2842
2940
|
/**
|
|
2843
|
-
* State counts for critical severity requirements.
|
|
2844
|
-
*
|
|
2845
2941
|
* Counts of requirements in each state.
|
|
2846
|
-
*
|
|
2847
|
-
* State counts for high severity requirements.
|
|
2848
|
-
*
|
|
2849
|
-
* State counts for low severity requirements.
|
|
2850
|
-
*
|
|
2851
|
-
* State counts for medium severity requirements.
|
|
2852
2942
|
*/
|
|
2853
2943
|
export interface StateCounts {
|
|
2854
2944
|
/**
|
|
@@ -2926,8 +3016,8 @@ export interface PerSourceSummary {
|
|
|
2926
3016
|
}
|
|
2927
3017
|
|
|
2928
3018
|
/**
|
|
2929
|
-
* Describes a system's authorization boundary, components, and interconnections. Maps to
|
|
2930
|
-
*
|
|
3019
|
+
* Describes a system's authorization boundary, components, and interconnections. Maps to OSCAL SSP
|
|
3020
|
+
* system-characteristics and FedRAMP system inventory.
|
|
2931
3021
|
*/
|
|
2932
3022
|
export interface HDFSystem {
|
|
2933
3023
|
/**
|
|
@@ -2938,6 +3028,13 @@ export interface HDFSystem {
|
|
|
2938
3028
|
* Current Authorization to Operate (ATO) status.
|
|
2939
3029
|
*/
|
|
2940
3030
|
authorizationStatus?: AuthorizationStatus;
|
|
3031
|
+
/**
|
|
3032
|
+
* System-scoped Bills of Materials whose subject is the authorization boundary rather than
|
|
3033
|
+
* a single component (e.g. a SaaSBOM of services, a KBOM of cluster inventory, an OBOM).
|
|
3034
|
+
* Component-scoped BOMs (SBOM, ai-model) attach on the component instead. See
|
|
3035
|
+
* primitives/bom.schema.json.
|
|
3036
|
+
*/
|
|
3037
|
+
boms?: BillOfMaterials[];
|
|
2941
3038
|
/**
|
|
2942
3039
|
* Description of the system's authorization boundary. Example: network CIDR blocks, cloud
|
|
2943
3040
|
* VPC IDs, physical locations.
|
|
@@ -2949,7 +3046,8 @@ export interface HDFSystem {
|
|
|
2949
3046
|
categorizationLevel?: CategorizationLevel;
|
|
2950
3047
|
/**
|
|
2951
3048
|
* System components within the authorization boundary. Uses the full polymorphic Component
|
|
2952
|
-
* type with stable identity (componentId), external references, and
|
|
3049
|
+
* type with stable identity (componentId), external references, and generalized BOM
|
|
3050
|
+
* attachment (boms[]).
|
|
2953
3051
|
*/
|
|
2954
3052
|
components: Component[];
|
|
2955
3053
|
/**
|
|
@@ -3012,8 +3110,6 @@ export interface HDFSystem {
|
|
|
3012
3110
|
}
|
|
3013
3111
|
|
|
3014
3112
|
/**
|
|
3015
|
-
* Current Authorization to Operate (ATO) status.
|
|
3016
|
-
*
|
|
3017
3113
|
* Authorization to Operate (ATO) status for the system.
|
|
3018
3114
|
*/
|
|
3019
3115
|
export enum AuthorizationStatus {
|
|
@@ -3026,8 +3122,6 @@ export enum AuthorizationStatus {
|
|
|
3026
3122
|
}
|
|
3027
3123
|
|
|
3028
3124
|
/**
|
|
3029
|
-
* FIPS 199 security categorization (impact level).
|
|
3030
|
-
*
|
|
3031
3125
|
* FIPS 199 security categorization level (impact level).
|
|
3032
3126
|
*/
|
|
3033
3127
|
export enum CategorizationLevel {
|
|
@@ -3037,10 +3131,10 @@ export enum CategorizationLevel {
|
|
|
3037
3131
|
}
|
|
3038
3132
|
|
|
3039
3133
|
/**
|
|
3040
|
-
* Declares a control's designation within a system — whether it is common (provided by
|
|
3041
|
-
*
|
|
3042
|
-
*
|
|
3043
|
-
*
|
|
3134
|
+
* Declares a control's designation within a system — whether it is common (provided by another
|
|
3135
|
+
* component or system), system-specific (implemented locally), or hybrid (shared responsibility).
|
|
3136
|
+
* Maps to NIST SP 800-53 Appendix C control designations and OSCAL SSP by-component
|
|
3137
|
+
* provided/inherited semantics.
|
|
3044
3138
|
*/
|
|
3045
3139
|
export interface ControlDesignation {
|
|
3046
3140
|
/**
|
|
@@ -3089,9 +3183,9 @@ export enum Designation {
|
|
|
3089
3183
|
}
|
|
3090
3184
|
|
|
3091
3185
|
/**
|
|
3092
|
-
* A data flow between two endpoints. The 'from' endpoint is always a local component; the
|
|
3093
|
-
*
|
|
3094
|
-
*
|
|
3186
|
+
* A data flow between two endpoints. The 'from' endpoint is always a local component; the 'to'
|
|
3187
|
+
* endpoint can be local, cross-system, or external. Use 'direction' to indicate whether data flows
|
|
3188
|
+
* one-way or both ways.
|
|
3095
3189
|
*/
|
|
3096
3190
|
export interface DataFlow {
|
|
3097
3191
|
/**
|
|
@@ -3140,8 +3234,8 @@ export enum Direction {
|
|
|
3140
3234
|
}
|
|
3141
3235
|
|
|
3142
3236
|
/**
|
|
3143
|
-
* Defines an assessment plan — what baselines to run against which targets, with resolved
|
|
3144
|
-
*
|
|
3237
|
+
* Defines an assessment plan — what baselines to run against which targets, with resolved inputs
|
|
3238
|
+
* and scheduling. Maps to OSCAL Assessment Plan.
|
|
3145
3239
|
*/
|
|
3146
3240
|
export interface HDFPlan {
|
|
3147
3241
|
/**
|
|
@@ -3195,8 +3289,8 @@ export interface HDFPlan {
|
|
|
3195
3289
|
}
|
|
3196
3290
|
|
|
3197
3291
|
/**
|
|
3198
|
-
* A single assessment within a plan — defines which baseline to run against which targets
|
|
3199
|
-
*
|
|
3292
|
+
* A single assessment within a plan — defines which baseline to run against which targets with what
|
|
3293
|
+
* configuration.
|
|
3200
3294
|
*/
|
|
3201
3295
|
export interface Assessment {
|
|
3202
3296
|
/**
|
|
@@ -3232,8 +3326,6 @@ export interface Assessment {
|
|
|
3232
3326
|
}
|
|
3233
3327
|
|
|
3234
3328
|
/**
|
|
3235
|
-
* Runner/scanner configuration for this assessment.
|
|
3236
|
-
*
|
|
3237
3329
|
* Configuration for the assessment runner/scanner.
|
|
3238
3330
|
*/
|
|
3239
3331
|
export interface RunnerConfig {
|
|
@@ -3249,8 +3341,6 @@ export interface RunnerConfig {
|
|
|
3249
3341
|
}
|
|
3250
3342
|
|
|
3251
3343
|
/**
|
|
3252
|
-
* Optional scheduling configuration for recurring assessments.
|
|
3253
|
-
*
|
|
3254
3344
|
* Scheduling configuration for recurring assessments.
|
|
3255
3345
|
*/
|
|
3256
3346
|
export interface Schedule {
|
|
@@ -3279,10 +3369,8 @@ export interface Schedule {
|
|
|
3279
3369
|
}
|
|
3280
3370
|
|
|
3281
3371
|
/**
|
|
3282
|
-
* The type of assessment
|
|
3283
|
-
*
|
|
3284
|
-
* The type of assessment. 'automated' for scanner-driven, 'manual' for human-performed,
|
|
3285
|
-
* 'hybrid' for both.
|
|
3372
|
+
* The type of assessment. 'automated' for scanner-driven, 'manual' for human-performed, 'hybrid'
|
|
3373
|
+
* for both.
|
|
3286
3374
|
*/
|
|
3287
3375
|
export enum PlanType {
|
|
3288
3376
|
Automated = "automated",
|
|
@@ -3291,8 +3379,8 @@ export enum PlanType {
|
|
|
3291
3379
|
}
|
|
3292
3380
|
|
|
3293
3381
|
/**
|
|
3294
|
-
* Waivers, attestations, and POA&Ms that modify requirement compliance status or impact.
|
|
3295
|
-
*
|
|
3382
|
+
* Waivers, attestations, and POA&Ms that modify requirement compliance status or impact. Amendments
|
|
3383
|
+
* are standalone documents that can be applied to results via merge operations.
|
|
3296
3384
|
*/
|
|
3297
3385
|
export interface HDFAmendments {
|
|
3298
3386
|
/**
|
|
@@ -3350,18 +3438,18 @@ export interface HDFAmendments {
|
|
|
3350
3438
|
}
|
|
3351
3439
|
|
|
3352
3440
|
/**
|
|
3353
|
-
* A standalone override to a requirement's compliance status or risk impact. Validation has
|
|
3354
|
-
*
|
|
3355
|
-
*
|
|
3356
|
-
* (documentation-only). For all other types, at least one of 'status' or 'impact' must be
|
|
3357
|
-
*
|
|
3441
|
+
* A standalone override to a requirement's compliance status or risk impact. Validation has two
|
|
3442
|
+
* branches gated on 'type': when type is 'operationalRequirement', neither 'status' nor 'impact'
|
|
3443
|
+
* may be set — the override records accepted risk without changing the finding
|
|
3444
|
+
* (documentation-only). For all other types, at least one of 'status' or 'impact' must be set. This
|
|
3445
|
+
* rule aligns with: (1) OSCAL Assessment Results — finding.target.status and
|
|
3358
3446
|
* finding.associated-risk[].facet[] are separate axes
|
|
3359
|
-
* (https://pages.nist.gov/OSCAL/learn/concepts/layer/assessment/assessment-results/); (2)
|
|
3360
|
-
*
|
|
3361
|
-
*
|
|
3362
|
-
* (https://www.ignyteplatform.com/blog/fedramp/fedramp-deviation-requests-submit/); (3)
|
|
3363
|
-
*
|
|
3364
|
-
*
|
|
3447
|
+
* (https://pages.nist.gov/OSCAL/learn/concepts/layer/assessment/assessment-results/); (2) FedRAMP
|
|
3448
|
+
* deviation request types — Risk Adjustment changes impact only, Operational Requirement documents
|
|
3449
|
+
* acceptance only, False Positive changes status
|
|
3450
|
+
* (https://www.ignyteplatform.com/blog/fedramp/fedramp-deviation-requests-submit/); (3) NIST SP
|
|
3451
|
+
* 800-37 RMF — risk response (accept/mitigate/transfer) is a separate step from control assessment
|
|
3452
|
+
* status (https://csrc.nist.gov/pubs/sp/800/37/r2/final).
|
|
3365
3453
|
*/
|
|
3366
3454
|
export interface StandaloneOverride {
|
|
3367
3455
|
/**
|
|
@@ -3459,9 +3547,8 @@ export interface StandaloneOverride {
|
|
|
3459
3547
|
}
|
|
3460
3548
|
|
|
3461
3549
|
/**
|
|
3462
|
-
* Bundles references to all HDF documents for audit, authorization, and compliance review.
|
|
3463
|
-
*
|
|
3464
|
-
* verification.
|
|
3550
|
+
* Bundles references to all HDF documents for audit, authorization, and compliance review. Each
|
|
3551
|
+
* content entry references a document by type, URI, and checksum for integrity verification.
|
|
3465
3552
|
*/
|
|
3466
3553
|
export interface HDFEvidencePackage {
|
|
3467
3554
|
/**
|
|
@@ -3476,6 +3563,13 @@ export interface HDFEvidencePackage {
|
|
|
3476
3563
|
* Description of the evidence package's purpose and scope.
|
|
3477
3564
|
*/
|
|
3478
3565
|
description?: string;
|
|
3566
|
+
/**
|
|
3567
|
+
* References to external native-format evidence (log/telemetry corpora and other artifacts)
|
|
3568
|
+
* carried by URI + integrity hash + format discriminator, without recreating the data
|
|
3569
|
+
* inside HDF. Logs in ECS/OCSF/etc. are legitimate accreditation evidence; HDF indexes them
|
|
3570
|
+
* here rather than transcoding them.
|
|
3571
|
+
*/
|
|
3572
|
+
externalEvidence?: ExternalEvidenceReference[];
|
|
3479
3573
|
/**
|
|
3480
3574
|
* Information about the tool that generated this document.
|
|
3481
3575
|
*/
|
|
@@ -3529,10 +3623,8 @@ export interface HDFEvidencePackage {
|
|
|
3529
3623
|
}
|
|
3530
3624
|
|
|
3531
3625
|
/**
|
|
3532
|
-
*
|
|
3533
|
-
*
|
|
3534
|
-
* Informational summary of assessment completeness. Not authoritative — tools should
|
|
3535
|
-
* compute these from the referenced documents.
|
|
3626
|
+
* Informational summary of assessment completeness. Not authoritative — tools should compute these
|
|
3627
|
+
* from the referenced documents.
|
|
3536
3628
|
*/
|
|
3537
3629
|
export interface CompletenessCheck {
|
|
3538
3630
|
/**
|
|
@@ -3563,8 +3655,6 @@ export interface CompletenessCheck {
|
|
|
3563
3655
|
}
|
|
3564
3656
|
|
|
3565
3657
|
/**
|
|
3566
|
-
* SBOM coverage across system components.
|
|
3567
|
-
*
|
|
3568
3658
|
* SBOM coverage statistics for the system.
|
|
3569
3659
|
*/
|
|
3570
3660
|
export interface SBOMCoverage {
|
|
@@ -3580,7 +3670,7 @@ export interface SBOMCoverage {
|
|
|
3580
3670
|
}
|
|
3581
3671
|
|
|
3582
3672
|
/**
|
|
3583
|
-
* A reference to an HDF document or
|
|
3673
|
+
* A reference to an HDF document or BOM/manifest included in the evidence package.
|
|
3584
3674
|
*/
|
|
3585
3675
|
export interface ContentReference {
|
|
3586
3676
|
/**
|
|
@@ -3608,16 +3698,95 @@ export interface ContentReference {
|
|
|
3608
3698
|
}
|
|
3609
3699
|
|
|
3610
3700
|
/**
|
|
3611
|
-
* The type of
|
|
3612
|
-
*
|
|
3613
|
-
*
|
|
3701
|
+
* The type of document referenced in the evidence package. 'bom' covers any
|
|
3702
|
+
* Bill-of-Materials/manifest document (SBOM, AI model/dataset, and reserved future kinds) — its
|
|
3703
|
+
* specific kind is carried by the referenced document's bomType, not by a per-kind Content_Type
|
|
3704
|
+
* value.
|
|
3614
3705
|
*/
|
|
3615
3706
|
export enum ContentType {
|
|
3707
|
+
BOM = "bom",
|
|
3616
3708
|
HdfAmendments = "hdf-amendments",
|
|
3617
3709
|
HdfBaseline = "hdf-baseline",
|
|
3618
3710
|
HdfComparison = "hdf-comparison",
|
|
3619
3711
|
HdfPlan = "hdf-plan",
|
|
3620
3712
|
HdfResults = "hdf-results",
|
|
3621
3713
|
HdfSystem = "hdf-system",
|
|
3622
|
-
|
|
3714
|
+
}
|
|
3715
|
+
|
|
3716
|
+
/**
|
|
3717
|
+
* A reference to external native-format evidence (log/telemetry corpus or other artifact) carried
|
|
3718
|
+
* by URI + integrity hash + format discriminator. Reference-only: the artifact is never embedded
|
|
3719
|
+
* (corpora can be huge) or transcoded (that would be lossy) — it stays canonical in its native
|
|
3720
|
+
* format and HDF acts as the structured index.
|
|
3721
|
+
*/
|
|
3722
|
+
export interface ExternalEvidenceReference {
|
|
3723
|
+
/**
|
|
3724
|
+
* Cryptographic checksum of the referenced artifact for integrity verification.
|
|
3725
|
+
*/
|
|
3726
|
+
checksum?: Checksum;
|
|
3727
|
+
/**
|
|
3728
|
+
* Optional human-readable description of this evidence entry.
|
|
3729
|
+
*/
|
|
3730
|
+
description?: string;
|
|
3731
|
+
/**
|
|
3732
|
+
* The native format discriminator of the referenced artifact.
|
|
3733
|
+
*/
|
|
3734
|
+
format: string;
|
|
3735
|
+
/**
|
|
3736
|
+
* Optional producer-declared version of the format (e.g. ECS '9.4.0', OCSF '1.8.0').
|
|
3737
|
+
* Free-text and untrusted — HDF does not validate it against a registry.
|
|
3738
|
+
*/
|
|
3739
|
+
formatVersion?: string;
|
|
3740
|
+
/**
|
|
3741
|
+
* Optional IANA media type describing the on-disk serialization, orthogonal to 'format'
|
|
3742
|
+
* (the semantic standard). Examples: application/x-ndjson, application/json,
|
|
3743
|
+
* application/vnd.apache.parquet, text/csv.
|
|
3744
|
+
*/
|
|
3745
|
+
mediaType?: string;
|
|
3746
|
+
/**
|
|
3747
|
+
* Optional descriptive metadata about the referenced corpus. Does not affect integrity.
|
|
3748
|
+
*/
|
|
3749
|
+
metadata?: ExternalEvidenceMetadata;
|
|
3750
|
+
/**
|
|
3751
|
+
* URI to the external native-format evidence artifact (log/telemetry corpus, etc.). Can be
|
|
3752
|
+
* a relative path or absolute URL. The data stays canonical in its native format — HDF
|
|
3753
|
+
* references it, never parses or transcodes it.
|
|
3754
|
+
*/
|
|
3755
|
+
uri: string;
|
|
3756
|
+
[property: string]: any;
|
|
3757
|
+
}
|
|
3758
|
+
|
|
3759
|
+
/**
|
|
3760
|
+
* Descriptive metadata about a referenced external evidence corpus. Does not affect integrity.
|
|
3761
|
+
*/
|
|
3762
|
+
export interface ExternalEvidenceMetadata {
|
|
3763
|
+
/**
|
|
3764
|
+
* The tool/pipeline that collected or produced the corpus. Example: 'aws-security-lake',
|
|
3765
|
+
* 'elastic-agent'.
|
|
3766
|
+
*/
|
|
3767
|
+
collector?: string;
|
|
3768
|
+
/**
|
|
3769
|
+
* Approximate number of records/events in the referenced corpus.
|
|
3770
|
+
*/
|
|
3771
|
+
recordCount?: number;
|
|
3772
|
+
/**
|
|
3773
|
+
* The time window the referenced evidence covers.
|
|
3774
|
+
*/
|
|
3775
|
+
timeRange?: ExternalEvidenceTimeRange;
|
|
3776
|
+
[property: string]: any;
|
|
3777
|
+
}
|
|
3778
|
+
|
|
3779
|
+
/**
|
|
3780
|
+
* The time window a referenced external evidence corpus covers.
|
|
3781
|
+
*/
|
|
3782
|
+
export interface ExternalEvidenceTimeRange {
|
|
3783
|
+
/**
|
|
3784
|
+
* End of the time window the corpus covers (ISO 8601).
|
|
3785
|
+
*/
|
|
3786
|
+
end?: Date;
|
|
3787
|
+
/**
|
|
3788
|
+
* Start of the time window the corpus covers (ISO 8601).
|
|
3789
|
+
*/
|
|
3790
|
+
start?: Date;
|
|
3791
|
+
[property: string]: any;
|
|
3623
3792
|
}
|