@jupiterone/data-model
Advanced tools
Comparing version 0.51.0 to 0.52.0
@@ -11,2 +11,8 @@ # Changelog | ||
## 0.52.0 - 2022-11-09 | ||
### Added | ||
- Added `RelationshipClass.PUBLISHES` | ||
## 0.51.0 - 2022-07-05 | ||
@@ -13,0 +19,0 @@ |
@@ -6,3 +6,3 @@ "use strict"; | ||
function getSchema(_class) { | ||
const validate = _1.IntegrationSchema.getSchema("#" + _class); | ||
const validate = _1.IntegrationSchema.getSchema('#' + _class); | ||
if (!validate) { | ||
@@ -9,0 +9,0 @@ return undefined; |
@@ -160,2 +160,3 @@ /** | ||
PUBLISHED = "PUBLISHED", | ||
PUBLISHES = "PUBLISHES", | ||
/** | ||
@@ -162,0 +163,0 @@ * A relationship indicating an Entity limits or restricts another Entity. |
@@ -164,2 +164,3 @@ "use strict"; | ||
RelationshipClass["PUBLISHED"] = "PUBLISHED"; | ||
RelationshipClass["PUBLISHES"] = "PUBLISHES"; | ||
/** | ||
@@ -236,2 +237,2 @@ * A relationship indicating an Entity limits or restricts another Entity. | ||
})(RelationshipClass = exports.RelationshipClass || (exports.RelationshipClass = {})); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVsYXRpb25zaGlwQ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVsYXRpb25zaGlwQ2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFZLGlCQXdRWDtBQXhRRCxXQUFZLGlCQUFpQjtJQUMzQjs7T0FFRztJQUNILHNDQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsMENBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQjs7Ozs7Ozs7T0FRRztJQUNILDBDQUFxQixDQUFBO0lBRXJCOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQiw0Q0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILHdDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsd0NBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxzQ0FBaUIsQ0FBQTtJQUVqQiwwQ0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILDBDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsNENBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQix3Q0FBbUIsQ0FBQTtJQUVuQjs7Ozs7O09BTUc7SUFDSCw0Q0FBdUIsQ0FBQTtJQUV2Qjs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILGdDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILG9DQUFlLENBQUE7SUFFZjs7Ozs7O09BTUc7SUFDSCw4Q0FBeUIsQ0FBQTtJQUV6Qiw4Q0FBeUIsQ0FBQTtJQUV6Qjs7Ozs7OztPQU9HO0lBQ0gsOEJBQVMsQ0FBQTtJQUVUOzs7Ozs7T0FNRztJQUNILHNDQUFpQixDQUFBO0lBQ2pCOzs7Ozs7O09BT0c7SUFDSCxrQ0FBYSxDQUFBO0lBRWIsd0NBQW1CLENBQUE7SUFDbkIsNENBQXVCLENBQUE7SUFDdkIsMENBQXFCLENBQUE7SUFFckIsMENBQXFCLENBQUE7SUFFckIsc0NBQWlCLENBQUE7SUFFakI7Ozs7Ozs7O09BUUc7SUFDSCw0Q0FBdUIsQ0FBQTtJQUV2QixrQ0FBYSxDQUFBO0lBRWIsNENBQXVCLENBQUE7SUFDdkIsMENBQXFCLENBQUE7SUFDckIsMENBQXFCLENBQUE7SUFFckI7Ozs7Ozs7T0FPRztJQUNILDRDQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsNENBQXVCLENBQUE7SUFFdkIsMENBQXFCLENBQUE7SUFDckIsMENBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCxrQ0FBYSxDQUFBO0lBRWI7Ozs7OztPQU1HO0lBQ0gsb0NBQWUsQ0FBQTtJQUVmOzs7Ozs7T0FNRztJQUNILG9DQUFlLENBQUE7SUFFZjs7Ozs7Ozs7O09BU0c7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQixzQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHdDQUFtQixDQUFBO0lBRW5COzs7Ozs7OztPQVFHO0lBQ0gsa0NBQWEsQ0FBQTtJQUViOzs7Ozs7O09BT0c7SUFDSCw0Q0FBdUIsQ0FBQTtJQUV2Qjs7Ozs7OztPQU9HO0lBQ0gsMENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQXhRVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQXdRNUIifQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVsYXRpb25zaGlwQ2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvUmVsYXRpb25zaGlwQ2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFZLGlCQXlRWDtBQXpRRCxXQUFZLGlCQUFpQjtJQUMzQjs7T0FFRztJQUNILHNDQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsMENBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQjs7Ozs7Ozs7T0FRRztJQUNILDBDQUFxQixDQUFBO0lBRXJCOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQiw0Q0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILHdDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsd0NBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxzQ0FBaUIsQ0FBQTtJQUVqQiwwQ0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILDBDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gsNENBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQix3Q0FBbUIsQ0FBQTtJQUVuQjs7Ozs7O09BTUc7SUFDSCw0Q0FBdUIsQ0FBQTtJQUV2Qjs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILGdDQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILG9DQUFlLENBQUE7SUFFZjs7Ozs7O09BTUc7SUFDSCw4Q0FBeUIsQ0FBQTtJQUV6Qiw4Q0FBeUIsQ0FBQTtJQUV6Qjs7Ozs7OztPQU9HO0lBQ0gsOEJBQVMsQ0FBQTtJQUVUOzs7Ozs7T0FNRztJQUNILHNDQUFpQixDQUFBO0lBQ2pCOzs7Ozs7O09BT0c7SUFDSCxrQ0FBYSxDQUFBO0lBRWIsd0NBQW1CLENBQUE7SUFDbkIsNENBQXVCLENBQUE7SUFDdkIsMENBQXFCLENBQUE7SUFFckIsMENBQXFCLENBQUE7SUFFckIsc0NBQWlCLENBQUE7SUFFakI7Ozs7Ozs7O09BUUc7SUFDSCw0Q0FBdUIsQ0FBQTtJQUV2QixrQ0FBYSxDQUFBO0lBRWIsNENBQXVCLENBQUE7SUFDdkIsMENBQXFCLENBQUE7SUFDckIsMENBQXFCLENBQUE7SUFFckI7Ozs7Ozs7T0FPRztJQUNILDRDQUF1QixDQUFBO0lBQ3ZCLDRDQUF1QixDQUFBO0lBRXZCOztPQUVHO0lBQ0gsNENBQXVCLENBQUE7SUFFdkIsMENBQXFCLENBQUE7SUFDckIsMENBQXFCLENBQUE7SUFFckI7O09BRUc7SUFDSCxrQ0FBYSxDQUFBO0lBRWI7Ozs7OztPQU1HO0lBQ0gsb0NBQWUsQ0FBQTtJQUVmOzs7Ozs7T0FNRztJQUNILG9DQUFlLENBQUE7SUFFZjs7Ozs7Ozs7O09BU0c7SUFDSCwwQ0FBcUIsQ0FBQTtJQUVyQixzQ0FBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHdDQUFtQixDQUFBO0lBRW5COzs7Ozs7OztPQVFHO0lBQ0gsa0NBQWEsQ0FBQTtJQUViOzs7Ozs7O09BT0c7SUFDSCw0Q0FBdUIsQ0FBQTtJQUV2Qjs7Ozs7OztPQU9HO0lBQ0gsMENBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQXpRVyxpQkFBaUIsR0FBakIseUJBQWlCLEtBQWpCLHlCQUFpQixRQXlRNUIifQ== |
@@ -29,7 +29,5 @@ { | ||
"required": [], | ||
"excludes": [ | ||
"status" | ||
] | ||
"excludes": ["status"] | ||
} | ||
] | ||
} |
@@ -67,9 +67,5 @@ { | ||
}, | ||
"required": [ | ||
"category", | ||
"summary", | ||
"internal" | ||
] | ||
"required": ["category", "summary", "internal"] | ||
} | ||
] | ||
} |
@@ -31,10 +31,5 @@ { | ||
}, | ||
"required": [ | ||
"branch", | ||
"message", | ||
"merge", | ||
"versionBump" | ||
] | ||
"required": ["branch", "message", "merge", "versionBump"] | ||
} | ||
] | ||
} |
@@ -25,7 +25,5 @@ { | ||
}, | ||
"required": [ | ||
"title" | ||
] | ||
"required": ["title"] | ||
} | ||
] | ||
} |
@@ -11,3 +11,12 @@ { | ||
{ | ||
"properties": {}, | ||
"properties": { | ||
"product": { | ||
"description": "The name of the product this document is applicable to. This reference is used when the document is product related, such as a product requirement document (PRD) or software bill-of-materials (SBOM).", | ||
"type": "string" | ||
}, | ||
"version": { | ||
"description": "The version of this document.", | ||
"type": "string" | ||
} | ||
}, | ||
"required": [], | ||
@@ -14,0 +23,0 @@ "excludes": [] |
@@ -50,9 +50,5 @@ { | ||
}, | ||
"required": [ | ||
"category", | ||
"severity", | ||
"reportable" | ||
] | ||
"required": ["category", "severity", "reportable"] | ||
} | ||
] | ||
} |
@@ -15,9 +15,3 @@ { | ||
"type": "string", | ||
"examples": [ | ||
"network", | ||
"system", | ||
"application", | ||
"access", | ||
"other" | ||
] | ||
"examples": ["network", "system", "application", "access", "other"] | ||
} | ||
@@ -24,0 +18,0 @@ }, |
@@ -100,15 +100,6 @@ { | ||
}, | ||
"required": [ | ||
"firstName", | ||
"lastName", | ||
"email" | ||
], | ||
"excludes": [ | ||
"owner", | ||
"createdOn", | ||
"updatedOn", | ||
"expiresOn" | ||
] | ||
"required": ["firstName", "lastName", "email"], | ||
"excludes": ["owner", "createdOn", "updatedOn", "expiresOn"] | ||
} | ||
] | ||
} |
@@ -37,13 +37,6 @@ { | ||
}, | ||
"required": [ | ||
"title", | ||
"summary", | ||
"content" | ||
], | ||
"excludes": [ | ||
"category", | ||
"reporter" | ||
] | ||
"required": ["title", "summary", "content"], | ||
"excludes": ["category", "reporter"] | ||
} | ||
] | ||
} |
@@ -23,8 +23,3 @@ { | ||
"type": "string", | ||
"examples": [ | ||
"open", | ||
"merged", | ||
"declined", | ||
"superseded" | ||
] | ||
"examples": ["open", "merged", "declined", "superseded"] | ||
}, | ||
@@ -52,11 +47,5 @@ "source": { | ||
}, | ||
"required": [ | ||
"title", | ||
"state", | ||
"source", | ||
"target", | ||
"repository" | ||
] | ||
"required": ["title", "state", "source", "target", "repository"] | ||
} | ||
] | ||
} |
@@ -48,13 +48,6 @@ { | ||
}, | ||
"required": [ | ||
"title", | ||
"summary", | ||
"content" | ||
], | ||
"excludes": [ | ||
"category", | ||
"reporter" | ||
] | ||
"required": ["title", "summary", "content"], | ||
"excludes": ["category", "reporter"] | ||
} | ||
] | ||
} |
@@ -31,8 +31,3 @@ { | ||
"type": "string", | ||
"examples": [ | ||
"critical", | ||
"confidential", | ||
"internal", | ||
"public" | ||
] | ||
"examples": ["critical", "confidential", "internal", "public"] | ||
}, | ||
@@ -125,8 +120,5 @@ "category": { | ||
}, | ||
"required": [ | ||
"name", | ||
"displayName" | ||
] | ||
"required": ["name", "displayName"] | ||
} | ||
] | ||
} |
@@ -25,7 +25,5 @@ { | ||
}, | ||
"required": [ | ||
"title" | ||
] | ||
"required": ["title"] | ||
} | ||
] | ||
} |
@@ -25,7 +25,5 @@ { | ||
}, | ||
"required": [ | ||
"title" | ||
] | ||
"required": ["title"] | ||
} | ||
] | ||
} |
@@ -23,8 +23,3 @@ { | ||
"type": "integer", | ||
"examples": [ | ||
0, | ||
1, | ||
2, | ||
3 | ||
] | ||
"examples": [0, 1, 2, 3] | ||
}, | ||
@@ -34,8 +29,3 @@ "impact": { | ||
"type": "integer", | ||
"examples": [ | ||
0, | ||
1, | ||
2, | ||
3 | ||
] | ||
"examples": [0, 1, 2, 3] | ||
}, | ||
@@ -69,10 +59,5 @@ "score": { | ||
}, | ||
"required": [ | ||
"probability", | ||
"impact", | ||
"score", | ||
"status" | ||
] | ||
"required": ["probability", "impact", "score", "status"] | ||
} | ||
] | ||
} |
@@ -15,8 +15,3 @@ { | ||
"type": "string", | ||
"examples": [ | ||
"compliance", | ||
"config", | ||
"password", | ||
"other" | ||
] | ||
"examples": ["compliance", "config", "password", "other"] | ||
}, | ||
@@ -23,0 +18,0 @@ "content": { |
@@ -15,8 +15,3 @@ { | ||
"type": "string", | ||
"examples": [ | ||
"compliance", | ||
"config", | ||
"password", | ||
"other" | ||
] | ||
"examples": ["compliance", "config", "password", "other"] | ||
}, | ||
@@ -23,0 +18,0 @@ "rules": { |
@@ -17,16 +17,9 @@ { | ||
"type": "string", | ||
"examples": [ | ||
"system", | ||
"network", | ||
"application", | ||
"other" | ||
] | ||
"examples": ["system", "network", "application", "other"] | ||
} | ||
} | ||
}, | ||
"required": [ | ||
"category" | ||
] | ||
"required": ["category"] | ||
} | ||
] | ||
} |
@@ -19,10 +19,5 @@ { | ||
"required": [], | ||
"excludes": [ | ||
"status", | ||
"public", | ||
"temporary", | ||
"expiresOn" | ||
] | ||
"excludes": ["status", "public", "temporary", "expiresOn"] | ||
} | ||
] | ||
} |
@@ -34,2 +34,6 @@ { | ||
}, | ||
"mfaType": { | ||
"description": "Specifies what type of multi-factor authentication (MFA) is being used by this user.", | ||
"type": "string" | ||
}, | ||
"active": { | ||
@@ -36,0 +40,0 @@ "description": "Specifies whether user account is active or disabled.", |
@@ -15,8 +15,3 @@ { | ||
"type": ["string", "null"], | ||
"examples": [ | ||
"application", | ||
"system", | ||
"infrastructure", | ||
"other" | ||
] | ||
"examples": ["application", "system", "infrastructure", "other"] | ||
}, | ||
@@ -23,0 +18,0 @@ "status": { |
@@ -15,8 +15,3 @@ { | ||
"type": "string", | ||
"examples": [ | ||
"application", | ||
"system", | ||
"infrastructure", | ||
"other" | ||
] | ||
"examples": ["application", "system", "infrastructure", "other"] | ||
}, | ||
@@ -23,0 +18,0 @@ "exploitability": { |
{ | ||
"name": "@jupiterone/data-model", | ||
"version": "0.51.0", | ||
"version": "0.52.0", | ||
"main": "dist/index.js", | ||
@@ -18,2 +18,3 @@ "files": [ | ||
"generate-schema-imports": "./tools/generate-schema-imports.sh", | ||
"generate-resolved-schemas": "node tools/generate-resolved-schemas/index.js src/schemas external/resolvedSchemas.json && prettier --write external/resolvedSchemas.json", | ||
"test": "jest", | ||
@@ -20,0 +21,0 @@ "lint": "eslint src --ext .ts,.js", |
# JupiterOne Graph Data Model | ||
- [Data Model Guide](https://support.jupiterone.io/hc/en-us/sections/360002424373-JupiterOne-Graph-Data-Model) | ||
- [Data Model Guide](https://community.askj1.com/kb/articles/846-jupiterone-data-model) | ||
@@ -31,1 +31,61 @@ The **JupiterOne Graph Data Model** describes a set of common classifications | ||
that make this easy to do. | ||
## Entities and Relationships | ||
The data model is built for a knowledge graph -- entities and relationships, or | ||
nodes and edges -- that reflects the stateful representation of the cyber | ||
infrastructure and digital operations of an organization. | ||
The schema for each entity and relationship describes a collection of common | ||
attributes for that specific abstract class, along with graph object metadata as | ||
described in [`GraphObject.json`](/src/schemas/GraphObject.json). | ||
The data model combines the benefit of having vendor/provider specific | ||
attributes together with abstract/normalized attributes. The vendor/provider | ||
specific attributes are dynamically assigned and not defined by the data model. | ||
## The Concept of `_type` and `_class` | ||
Each entity represents an actual operating element (a "thing") that is part of | ||
an organization's cyber operations or infrastructure. This "thing" can be either | ||
physical or logical. | ||
The metadata attributes `_type` and `_class` are used to define what the asset | ||
is: | ||
- `_type`: The value is a single string typically in the format of | ||
`${vendor}_${resource}` or `${vendor}_${product}_${resource}` in `snake_case`. | ||
> For example: `aws_instance`, `google_cloud_function`, `apple_tv`, | ||
> `sentinelone_agent` | ||
It is important to note that in some cases, `${vendor}_${resource}` may not be | ||
ideal or feasible. | ||
For example, we may have directory data that comes in from an HR integration | ||
such as BambooHR or Rippling. The `Person` entity being created should have | ||
`_type: 'employee'` or `_type: 'contractor'` rather than | ||
`_type: 'bamboohr_employee'` or `_type: 'bamboohr_contractor'`. | ||
Another exception is data that comes from an integration with another ITSM, | ||
asset discovery tool, device management tool, or CMDB. While a system might be | ||
a good "source of truth" or "system of record," they are not the actual vendor | ||
of those devices. | ||
- If a server or application is ingested from **ServiceNow**, the `_type` | ||
should _not_ be `servicenow_server` or `servicenow_application`. | ||
- If a Cisco switch is ingested from **Rumble** or **Netbox**, the `_type` | ||
should be `cisco_switch` instead of `rumble_asset` or `netbox_device`. | ||
- If a smartphone/mobile device is managed by Google Workspace and ingested | ||
via the integration, the `_type` for the device should _not_ be | ||
`google_mobile_device` because the device could be an Apple iPhone and it | ||
would be very confusing to call an iPhone a Google mobile device. Instead, | ||
it should be `apple_iphone` when the type of device is known or a generic | ||
value of `mobile_device`. | ||
- `_class`: The value is a string or string array in `TitleCase` using a generic | ||
IT or Security term to describe the higher level category of the asset. | ||
> These are defined in [`src/schemas`](src/schemas). |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
456887
91
12990