@agent-ix/spec-objects-security 0.5.0 → 0.8.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 +2 -0
- package/manifest.yaml +270 -26
- package/package.json +8 -2
- package/schemas/Asset.json +78 -0
- package/schemas/AttackSurface.json +55 -0
- package/schemas/AuditEvent.json +57 -0
- package/schemas/AuditFinding.json +67 -0
- package/schemas/AuthFlow.json +69 -0
- package/schemas/ConfidentialityLevel.json +13 -0
- package/schemas/Control.json +83 -0
- package/schemas/ControlEffectiveness.json +12 -0
- package/schemas/ControlMapping.json +26 -0
- package/schemas/CorsPolicy.json +46 -0
- package/schemas/CsrfToken.json +46 -0
- package/schemas/DataClassification.json +61 -0
- package/schemas/DefaultedField.json +14 -0
- package/schemas/EffectivenessField.json +15 -0
- package/schemas/EncryptionKey.json +78 -0
- package/schemas/FindingStatus.json +14 -0
- package/schemas/FlowStep.json +24 -0
- package/schemas/IdentityField.json +15 -0
- package/schemas/Impact.json +14 -0
- package/schemas/ImpactField.json +15 -0
- package/schemas/JwtClaim.json +49 -0
- package/schemas/LevelField.json +15 -0
- package/schemas/Likelihood.json +14 -0
- package/schemas/LikelihoodField.json +15 -0
- package/schemas/MfaFactorKind.json +12 -0
- package/schemas/MfaMethod.json +69 -0
- package/schemas/OccurrenceField.json +14 -0
- package/schemas/OccurrenceTypeRef.json +15 -0
- package/schemas/PasswordPolicy.json +40 -0
- package/schemas/Permission.json +49 -0
- package/schemas/Policy.json +52 -0
- package/schemas/Risk.json +79 -0
- package/schemas/Role.json +55 -0
- package/schemas/Scope.json +49 -0
- package/schemas/Secret.json +78 -0
- package/schemas/SecretLifecycle.json +14 -0
- package/schemas/SessionConfig.json +43 -0
- package/schemas/Severity.json +14 -0
- package/schemas/SeverityField.json +15 -0
- package/schemas/StatusField.json +15 -0
- package/schemas/StrideCategory.json +15 -0
- package/schemas/StrideCategoryField.json +15 -0
- package/schemas/Threat.json +67 -0
- package/schemas/TrustBoundary.json +69 -0
- package/schemas/TrustLevel.json +12 -0
- package/schemas/TrustLevelField.json +15 -0
- package/schemas/Vulnerability.json +70 -0
- package/schemas/toolchain.json +97 -0
- package/skeletons/asset.md +22 -14
- package/skeletons/asset.sysml.md +27 -0
- package/skeletons/attack_surface.md +21 -18
- package/skeletons/audit_event.md +31 -18
- package/skeletons/audit_finding.md +22 -18
- package/skeletons/auth_flow.md +56 -21
- package/skeletons/control.md +45 -16
- package/skeletons/cors_policy.md +33 -17
- package/skeletons/csrf_token.md +17 -13
- package/skeletons/data_classification.md +23 -18
- package/skeletons/encryption_key.md +19 -12
- package/skeletons/jwt_claim.md +25 -14
- package/skeletons/mfa_method.md +17 -11
- package/skeletons/password_policy.md +35 -20
- package/skeletons/permission.md +18 -12
- package/skeletons/policy.md +33 -17
- package/skeletons/risk.md +20 -14
- package/skeletons/role.md +20 -13
- package/skeletons/scope.md +18 -12
- package/skeletons/secret.md +23 -16
- package/skeletons/secret.sysml.md +29 -0
- package/skeletons/session_config.md +35 -18
- package/skeletons/threat.md +22 -11
- package/skeletons/threat.sysml.md +26 -0
- package/skeletons/trust_boundary.md +51 -16
- package/skeletons/vulnerability.md +18 -15
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Secret.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"fields": {
|
|
7
|
+
"type": "array",
|
|
8
|
+
"items": {
|
|
9
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
|
|
10
|
+
},
|
|
11
|
+
"minItems": 1,
|
|
12
|
+
"contains": {
|
|
13
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"clauses": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": {
|
|
19
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"operations": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"items": {
|
|
25
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/OperationDecl.json"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"lifecycle": {
|
|
29
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/SecretLifecycle.json"
|
|
30
|
+
},
|
|
31
|
+
"material_ref": {
|
|
32
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
|
|
33
|
+
},
|
|
34
|
+
"custodian": {
|
|
35
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
|
|
36
|
+
},
|
|
37
|
+
"classification": {
|
|
38
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/ConfidentialityLevel.json"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"required": [
|
|
42
|
+
"fields"
|
|
43
|
+
],
|
|
44
|
+
"unevaluatedProperties": {
|
|
45
|
+
"not": {}
|
|
46
|
+
},
|
|
47
|
+
"description": "A confidential value kept out of code.",
|
|
48
|
+
"allOf": [
|
|
49
|
+
{
|
|
50
|
+
"properties": {
|
|
51
|
+
"fields": {
|
|
52
|
+
"items": {
|
|
53
|
+
"not": {
|
|
54
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"properties": {
|
|
62
|
+
"operations": {
|
|
63
|
+
"items": {
|
|
64
|
+
"properties": {
|
|
65
|
+
"params": {
|
|
66
|
+
"items": {
|
|
67
|
+
"not": {
|
|
68
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/SecretLifecycle.json",
|
|
4
|
+
"type": "string",
|
|
5
|
+
"enum": [
|
|
6
|
+
"proposed",
|
|
7
|
+
"active",
|
|
8
|
+
"rotating",
|
|
9
|
+
"revoked",
|
|
10
|
+
"compromised",
|
|
11
|
+
"unknown"
|
|
12
|
+
],
|
|
13
|
+
"description": "Where secret material is in its life. `unknown` states that it was not tracked."
|
|
14
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/SessionConfig.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"clauses": {
|
|
7
|
+
"type": "array",
|
|
8
|
+
"items": {
|
|
9
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
|
|
10
|
+
},
|
|
11
|
+
"minItems": 1
|
|
12
|
+
},
|
|
13
|
+
"fields": {
|
|
14
|
+
"type": "array",
|
|
15
|
+
"items": {
|
|
16
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"binds_flow": {
|
|
20
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"required": [
|
|
24
|
+
"clauses"
|
|
25
|
+
],
|
|
26
|
+
"unevaluatedProperties": {
|
|
27
|
+
"not": {}
|
|
28
|
+
},
|
|
29
|
+
"description": "The rules a session obeys. `operations` and `relations` are forbidden by the seal.",
|
|
30
|
+
"allOf": [
|
|
31
|
+
{
|
|
32
|
+
"properties": {
|
|
33
|
+
"fields": {
|
|
34
|
+
"items": {
|
|
35
|
+
"not": {
|
|
36
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Severity.json",
|
|
4
|
+
"type": "string",
|
|
5
|
+
"enum": [
|
|
6
|
+
"none",
|
|
7
|
+
"low",
|
|
8
|
+
"medium",
|
|
9
|
+
"high",
|
|
10
|
+
"critical",
|
|
11
|
+
"unknown"
|
|
12
|
+
],
|
|
13
|
+
"description": "How bad a vulnerability is. `unknown` states that it was not assessed."
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/SeverityField.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"name": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"const": "severity"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"required": [
|
|
12
|
+
"name"
|
|
13
|
+
],
|
|
14
|
+
"description": "A `FieldDecl` named `severity`."
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/StatusField.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"name": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"const": "status"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"required": [
|
|
12
|
+
"name"
|
|
13
|
+
],
|
|
14
|
+
"description": "A `FieldDecl` named `status`."
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/StrideCategory.json",
|
|
4
|
+
"type": "string",
|
|
5
|
+
"enum": [
|
|
6
|
+
"spoofing",
|
|
7
|
+
"tampering",
|
|
8
|
+
"repudiation",
|
|
9
|
+
"information_disclosure",
|
|
10
|
+
"denial_of_service",
|
|
11
|
+
"elevation_of_privilege",
|
|
12
|
+
"unknown"
|
|
13
|
+
],
|
|
14
|
+
"description": "The STRIDE class of a threat. `unknown` states that it was not classified."
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/StrideCategoryField.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"name": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"const": "stride_category"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"required": [
|
|
12
|
+
"name"
|
|
13
|
+
],
|
|
14
|
+
"description": "A `FieldDecl` named `stride_category`."
|
|
15
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Threat.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"fields": {
|
|
7
|
+
"type": "array",
|
|
8
|
+
"items": {
|
|
9
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
|
|
10
|
+
},
|
|
11
|
+
"minItems": 1,
|
|
12
|
+
"contains": {
|
|
13
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"clauses": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": {
|
|
19
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"relations": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"items": {
|
|
25
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/RelationDecl.json"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"stride_category": {
|
|
29
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/StrideCategory.json"
|
|
30
|
+
},
|
|
31
|
+
"exploits": {
|
|
32
|
+
"type": "array",
|
|
33
|
+
"items": {
|
|
34
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"required": [
|
|
39
|
+
"fields"
|
|
40
|
+
],
|
|
41
|
+
"unevaluatedProperties": {
|
|
42
|
+
"not": {}
|
|
43
|
+
},
|
|
44
|
+
"description": "An adversary capability against this system. `operations` is forbidden by the seal.",
|
|
45
|
+
"allOf": [
|
|
46
|
+
{
|
|
47
|
+
"properties": {
|
|
48
|
+
"fields": {
|
|
49
|
+
"contains": {
|
|
50
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/StrideCategoryField.json"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"properties": {
|
|
57
|
+
"fields": {
|
|
58
|
+
"items": {
|
|
59
|
+
"not": {
|
|
60
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/TrustBoundary.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"fields": {
|
|
7
|
+
"type": "array",
|
|
8
|
+
"items": {
|
|
9
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
|
|
10
|
+
},
|
|
11
|
+
"minItems": 1,
|
|
12
|
+
"contains": {
|
|
13
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"clauses": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": {
|
|
19
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
|
|
20
|
+
},
|
|
21
|
+
"minItems": 1
|
|
22
|
+
},
|
|
23
|
+
"relations": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"items": {
|
|
26
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/RelationDecl.json"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"trust_level": {
|
|
30
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/TrustLevel.json"
|
|
31
|
+
},
|
|
32
|
+
"crosses": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": {
|
|
35
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"required": [
|
|
40
|
+
"fields",
|
|
41
|
+
"clauses"
|
|
42
|
+
],
|
|
43
|
+
"unevaluatedProperties": {
|
|
44
|
+
"not": {}
|
|
45
|
+
},
|
|
46
|
+
"description": "A zone edge. `clauses` is required: a boundary that admits every crossing is\nnot a boundary. `operations` is forbidden by the seal.",
|
|
47
|
+
"allOf": [
|
|
48
|
+
{
|
|
49
|
+
"properties": {
|
|
50
|
+
"fields": {
|
|
51
|
+
"contains": {
|
|
52
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/TrustLevelField.json"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"properties": {
|
|
59
|
+
"fields": {
|
|
60
|
+
"items": {
|
|
61
|
+
"not": {
|
|
62
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/TrustLevel.json",
|
|
4
|
+
"type": "string",
|
|
5
|
+
"enum": [
|
|
6
|
+
"untrusted",
|
|
7
|
+
"semi_trusted",
|
|
8
|
+
"trusted",
|
|
9
|
+
"unknown"
|
|
10
|
+
],
|
|
11
|
+
"description": "How far a zone is trusted. `untrusted` is the unassessed member, because the\nleast-granting reading of \"we never decided\" is \"we do not trust it\"."
|
|
12
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/TrustLevelField.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"name": {
|
|
7
|
+
"type": "string",
|
|
8
|
+
"const": "trust_level"
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"required": [
|
|
12
|
+
"name"
|
|
13
|
+
],
|
|
14
|
+
"description": "A `FieldDecl` named `trust_level`."
|
|
15
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Vulnerability.json",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"properties": {
|
|
6
|
+
"fields": {
|
|
7
|
+
"type": "array",
|
|
8
|
+
"items": {
|
|
9
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/FieldDecl.json"
|
|
10
|
+
},
|
|
11
|
+
"minItems": 1,
|
|
12
|
+
"contains": {
|
|
13
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/IdentityField.json"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"clauses": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": {
|
|
19
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/ClauseRef.json"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"relations": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"items": {
|
|
25
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/RelationDecl.json"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"severity": {
|
|
29
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/Severity.json"
|
|
30
|
+
},
|
|
31
|
+
"cve_id": {
|
|
32
|
+
"type": "string"
|
|
33
|
+
},
|
|
34
|
+
"affects": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"items": {
|
|
37
|
+
"$ref": "https://schemas.agent-ix.org/semantic-core/0.3.0/SemanticId.json"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"required": [
|
|
42
|
+
"fields"
|
|
43
|
+
],
|
|
44
|
+
"unevaluatedProperties": {
|
|
45
|
+
"not": {}
|
|
46
|
+
},
|
|
47
|
+
"description": "A weakness an implementation carries. `operations` is forbidden by the seal.",
|
|
48
|
+
"allOf": [
|
|
49
|
+
{
|
|
50
|
+
"properties": {
|
|
51
|
+
"fields": {
|
|
52
|
+
"contains": {
|
|
53
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/SeverityField.json"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"properties": {
|
|
60
|
+
"fields": {
|
|
61
|
+
"items": {
|
|
62
|
+
"not": {
|
|
63
|
+
"$ref": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/DefaultedField.json"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compiler": {
|
|
3
|
+
"name": "@typespec/compiler",
|
|
4
|
+
"version": "1.15.0"
|
|
5
|
+
},
|
|
6
|
+
"emitter": {
|
|
7
|
+
"name": "@typespec/json-schema",
|
|
8
|
+
"version": "1.15.0"
|
|
9
|
+
},
|
|
10
|
+
"semanticCore": {
|
|
11
|
+
"name": "@agent-ix/semantic-core",
|
|
12
|
+
"version": "0.3.0"
|
|
13
|
+
},
|
|
14
|
+
"base": "https://schemas.agent-ix.org/agent-ix/spec-objects-security/0.2.0/",
|
|
15
|
+
"normalization": {
|
|
16
|
+
"name": "absolute-id-and-ref",
|
|
17
|
+
"version": "1.0.0",
|
|
18
|
+
"issue": "https://github.com/agent-ix/spec-objects-security/issues/13",
|
|
19
|
+
"applied": true,
|
|
20
|
+
"rewrittenFiles": [
|
|
21
|
+
"Asset.json",
|
|
22
|
+
"AttackSurface.json",
|
|
23
|
+
"AuditEvent.json",
|
|
24
|
+
"AuditFinding.json",
|
|
25
|
+
"AuthFlow.json",
|
|
26
|
+
"Control.json",
|
|
27
|
+
"CorsPolicy.json",
|
|
28
|
+
"CsrfToken.json",
|
|
29
|
+
"DataClassification.json",
|
|
30
|
+
"EncryptionKey.json",
|
|
31
|
+
"JwtClaim.json",
|
|
32
|
+
"MfaMethod.json",
|
|
33
|
+
"PasswordPolicy.json",
|
|
34
|
+
"Permission.json",
|
|
35
|
+
"Policy.json",
|
|
36
|
+
"Risk.json",
|
|
37
|
+
"Role.json",
|
|
38
|
+
"Scope.json",
|
|
39
|
+
"Secret.json",
|
|
40
|
+
"SessionConfig.json",
|
|
41
|
+
"Threat.json",
|
|
42
|
+
"TrustBoundary.json",
|
|
43
|
+
"Vulnerability.json"
|
|
44
|
+
],
|
|
45
|
+
"note": "rewrote relative $id/$ref to the module base or semantic-core 0.3.0"
|
|
46
|
+
},
|
|
47
|
+
"files": [
|
|
48
|
+
"Asset.json",
|
|
49
|
+
"AttackSurface.json",
|
|
50
|
+
"AuditEvent.json",
|
|
51
|
+
"AuditFinding.json",
|
|
52
|
+
"AuthFlow.json",
|
|
53
|
+
"ConfidentialityLevel.json",
|
|
54
|
+
"Control.json",
|
|
55
|
+
"ControlEffectiveness.json",
|
|
56
|
+
"ControlMapping.json",
|
|
57
|
+
"CorsPolicy.json",
|
|
58
|
+
"CsrfToken.json",
|
|
59
|
+
"DataClassification.json",
|
|
60
|
+
"DefaultedField.json",
|
|
61
|
+
"EffectivenessField.json",
|
|
62
|
+
"EncryptionKey.json",
|
|
63
|
+
"FindingStatus.json",
|
|
64
|
+
"FlowStep.json",
|
|
65
|
+
"IdentityField.json",
|
|
66
|
+
"Impact.json",
|
|
67
|
+
"ImpactField.json",
|
|
68
|
+
"JwtClaim.json",
|
|
69
|
+
"LevelField.json",
|
|
70
|
+
"Likelihood.json",
|
|
71
|
+
"LikelihoodField.json",
|
|
72
|
+
"MfaFactorKind.json",
|
|
73
|
+
"MfaMethod.json",
|
|
74
|
+
"OccurrenceField.json",
|
|
75
|
+
"OccurrenceTypeRef.json",
|
|
76
|
+
"PasswordPolicy.json",
|
|
77
|
+
"Permission.json",
|
|
78
|
+
"Policy.json",
|
|
79
|
+
"Risk.json",
|
|
80
|
+
"Role.json",
|
|
81
|
+
"Scope.json",
|
|
82
|
+
"Secret.json",
|
|
83
|
+
"SecretLifecycle.json",
|
|
84
|
+
"SessionConfig.json",
|
|
85
|
+
"Severity.json",
|
|
86
|
+
"SeverityField.json",
|
|
87
|
+
"StatusField.json",
|
|
88
|
+
"StrideCategory.json",
|
|
89
|
+
"StrideCategoryField.json",
|
|
90
|
+
"Threat.json",
|
|
91
|
+
"TrustBoundary.json",
|
|
92
|
+
"TrustLevel.json",
|
|
93
|
+
"TrustLevelField.json",
|
|
94
|
+
"Vulnerability.json"
|
|
95
|
+
],
|
|
96
|
+
"digest": "sha256:cf9cc6011a068155fac6918c69f5f7ea54805650a5812e9e63633d1cdff2c839"
|
|
97
|
+
}
|
package/skeletons/asset.md
CHANGED
|
@@ -1,22 +1,30 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: ASSET-001
|
|
3
|
-
title: "
|
|
3
|
+
title: "TenantDatabase"
|
|
4
4
|
type: asset
|
|
5
|
+
object: asset
|
|
5
6
|
---
|
|
6
|
-
<!-- asset authoring skeleton (spec-objects-security). Fill every
|
|
7
|
+
<!-- asset authoring skeleton (spec-objects-security). Fill every section with
|
|
7
8
|
substantive content. Contract (manifest body_extraction asserts):
|
|
8
|
-
- Frontmatter MUST carry id, title, type
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
- Frontmatter MUST carry id, title, type: asset, object: asset.
|
|
10
|
+
- "## Description" (H2, required): what the asset is and why it matters.
|
|
11
|
+
- "## Properties" (H2): one typed row per attribute, header exactly
|
|
12
|
+
`Field | Type | Multiplicity | Constraints`. At least one row carries
|
|
13
|
+
the `identity` constraint (Asset.json refuses a record without one). -->
|
|
14
|
+
# [ASSET-001] TenantDatabase
|
|
13
15
|
|
|
14
16
|
## Description
|
|
15
17
|
|
|
16
|
-
The
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
The per-tenant PostgreSQL database holding customer records, order history and
|
|
19
|
+
audit trails. It is the primary confidentiality and integrity asset of the
|
|
20
|
+
platform: its compromise discloses every tenant's data at once.
|
|
21
|
+
|
|
22
|
+
## Properties
|
|
23
|
+
|
|
24
|
+
| Field | Type | Multiplicity | Constraints |
|
|
25
|
+
|---|---|---|---|
|
|
26
|
+
| asset_id | UUID | 1..1 | identity |
|
|
27
|
+
| name | String | 1..1 | minLength: 1, maxLength: 128 |
|
|
28
|
+
| classification | DataRestricted | 1..1 | |
|
|
29
|
+
| steward | String | 1..1 | minLength: 1 |
|
|
30
|
+
| replica_count | Integer | 0..1 | min: 0 |
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ASSET-001
|
|
3
|
+
title: "TenantDatabase"
|
|
4
|
+
type: asset
|
|
5
|
+
object: asset
|
|
6
|
+
---
|
|
7
|
+
<!-- asset authoring skeleton, alternate Properties form. Declares exactly the
|
|
8
|
+
same fields as asset.md, authored as one ```sysml``` fence instead of the
|
|
9
|
+
typed table (FR-005-AC-2). One artifact carries one form; the alternate is
|
|
10
|
+
a separate file, never a second block in the same artifact. -->
|
|
11
|
+
# [ASSET-001] TenantDatabase
|
|
12
|
+
|
|
13
|
+
## Description
|
|
14
|
+
|
|
15
|
+
The per-tenant PostgreSQL database holding customer records, order history and
|
|
16
|
+
audit trails. It is the primary confidentiality and integrity asset of the
|
|
17
|
+
platform: its compromise discloses every tenant's data at once.
|
|
18
|
+
|
|
19
|
+
## Properties
|
|
20
|
+
|
|
21
|
+
```sysml
|
|
22
|
+
attribute asset_id : UUID[1..1] { identity }
|
|
23
|
+
attribute name : String[1..1] { minLength: 1, maxLength: 128 }
|
|
24
|
+
ref item classification : DataRestricted[1..1]
|
|
25
|
+
attribute steward : String[1..1] { minLength: 1 }
|
|
26
|
+
attribute replica_count : Integer[0..1] { min: 0 }
|
|
27
|
+
```
|