diff --git a/dictionary.json b/dictionary.json index d90eb9155..700a186a9 100644 --- a/dictionary.json +++ b/dictionary.json @@ -1057,6 +1057,16 @@ "description": "The additional data that is associated with the event or object. See specific usage.", "type": "json_t" }, + "database": { + "caption": "Database", + "description": "The database object is used for databases which are typically datastore services that contain an organized collection of structured and unstructured data or a types of data.", + "type": "database" + }, + "databucket": { + "caption": "Databucket", + "description": "The data bucket object is a basic container that holds data, typically organized through the use of data partitions.", + "type": "databucket" + }, "data_sources": { "caption": "Data Sources", "description": "The data sources for the finding.", @@ -2563,6 +2573,11 @@ "description": "The Domain Name System (DNS) query.", "type": "dns_query" }, + "query_info": { + "caption": "Query Info", + "description": "The query info object holds information related to data access within a datastore. To access, manipulate, delete, or retrieve data from a datastore, a database query must be written using a specific syntax.", + "type": "query_info" + }, "query_string": { "caption": "HTTP Query String", "description": "The query portion of the URL. For example: the query portion of the URL http://www.example.com/search?q=bad&sort=date is q=bad&sort=date.", @@ -3226,6 +3241,11 @@ "description": "The system call that was invoked.", "type": "string_t" }, + "table": { + "caption": "Table", + "description": "The table object represents a table within a structured relational database or datastore, which contains columns and rows of data that are able to be create, updated, deleted and queried.", + "type": "table" + }, "tactic": { "caption": "Tactic", "description": "The Tactic object describes the tactic ID and/or name that is associated to an attack, as defined by ATT&CK MatrixTM.", diff --git a/events/application/datastore_activity.json b/events/application/datastore_activity.json new file mode 100644 index 000000000..df8c02f45 --- /dev/null +++ b/events/application/datastore_activity.json @@ -0,0 +1,83 @@ +{ + "uid": 5, + "description": "Datastore events describe general activities (Read, Update, Query, Delete, etc.) which affect datastores or data within those datastores, e.g. (AWS RDS, AWS S3).", + "extends": "application", + "caption": "Datastore Activity", + "name": "datastore_activity", + "attributes": { + "activity_id": { + "enum": { + "1": { + "caption": "Read", + "description": "The datastore activity in the event pertains to a 'Read' operation." + }, + "2": { + "caption": "Update", + "description": "The datastore activity in the event pertains to a 'Update' operation." + }, + "3": { + "caption": "Connect", + "description": "The datastore activity in the event pertains to a 'Connect' operation." + }, + "4": { + "caption": "Query", + "description": "The datastore activity in the event pertains to a 'Query' operation." + }, + "5": { + "caption": "Write", + "description": "The datastore activity in the event pertains to a 'Write' operation." + }, + "6": { + "caption": "Create", + "description": "The datastore activity in the event pertains to a 'Create' operation." + }, + "7": { + "caption": "Delete", + "description": "The datastore activity in the event pertains to a 'Delete' operation." + } + } + }, + "database": { + "group": "primary", + "requirement": "recommended" + }, + "databucket": { + "group": "primary", + "requirement": "recommended" + }, + "table": { + "group": "primary", + "requirement": "optional" + }, + "query_info": { + "group": "primary", + "requirement": "optional" + }, + "dst_endpoint": { + "description": "Details about the endpoint hosting the datastore application or service.", + "group": "primary", + "requirement": "optional" + }, + "http_request": { + "description": "Details about the underlying http request.", + "group": "primary", + "requirement": "optional" + }, + "actor": { + "group": "primary", + "requirement": "required" + }, + "src_endpoint": { + "description": "Details about the source of the activity.", + "group": "primary", + "requirement": "required" + } + }, + "constraints": { + "at_least_one": [ + "database", + "databucket", + "table" + ] + } +} diff --git a/objects/database.json b/objects/database.json new file mode 100644 index 000000000..301a69530 --- /dev/null +++ b/objects/database.json @@ -0,0 +1,71 @@ +{ + "caption": "Database", + "description": "The database object is used for databases which are typically datastore services that contain an organized collection of structured and unstructured data or a types of data.", + "extends": "_entity", + "name": "database", + "attributes": { + "created_time": { + "description": "The time when the database was known to have been created.", + "requirement": "optional" + }, + "modified_time": { + "description": "The most recent time when any changes, updates, or modifications were made within the database.", + "requirement": "optional" + }, + "desc": { + "caption": "Description", + "requirement": "optional" + }, + "size": { + "description": "The size of the database in bytes.", + "requirement": "optional" + }, + "groups": { + "description": "The group names to which the database belongs.", + "requirement": "optional" + }, + "type": { + "description": "The database type.", + "requirement": "recommended" + }, + "type_id": { + "description": "The normalized identifier of the database type.", + "requirement": "required", + "enum": { + "0": { + "caption": "Unknown" + }, + "1": { + "caption": "Relational" + }, + "2": { + "caption": "Network" + }, + "3": { + "caption": "Object Oriented" + }, + "3": { + "caption": "Cloud" + }, + "4": { + "caption": "Centralized" + }, + "5": { + "caption": "Operational" + }, + "6": { + "caption": "NoSQL" + }, + "99": { + "caption": "Other" + } + } + }, + "name": { + "description": "The database name, ordinarily as assigned by a database administrator." + }, + "uid": { + "description": "The unique identifier of the database." + } + } +} diff --git a/objects/databucket.json b/objects/databucket.json new file mode 100644 index 000000000..a27f36487 --- /dev/null +++ b/objects/databucket.json @@ -0,0 +1,64 @@ +{ + "caption": "Databucket", + "description": "The databucket object is a basic container that holds data, typically organized through the use of data partitions.", + "extends": "_entity", + "name": "databucket", + "attributes": { + "created_time": { + "description": "The time when the databucket was known to have been created.", + "requirement": "optional" + }, + "modified_time": { + "description": "The most recent time when any changes, updates, or modifications were made within the databucket.", + "requirement": "optional" + }, + "desc": { + "caption": "Description", + "description": "The description of the databucket.", + "requirement": "optional" + }, + "size": { + "description": "The size of the databucket in bytes.", + "requirement": "optional" + }, + "file": { + "description": "A file within a databucket.", + "requirement": "optional" + }, + "groups": { + "description": "The group names to which the databucket belongs.", + "requirement": "optional" + }, + "type": { + "description": "The databucket type.", + "requirement": "recommended" + }, + "type_id": { + "description": "The normalized identifier of the databucket type.", + "requirement": "required", + "enum": { + "0": { + "caption": "Unknown" + }, + "1": { + "caption": "S3" + }, + "2": { + "caption": "Azure Blob" + }, + "3": { + "caption": "GCP Bucket" + }, + "99": { + "caption": "Other" + } + } + }, + "name": { + "description": "The databucket name." + }, + "uid": { + "description": "The unique identifier of the databucket." + } + } +} diff --git a/objects/query_info.json b/objects/query_info.json new file mode 100644 index 000000000..1f2918bdc --- /dev/null +++ b/objects/query_info.json @@ -0,0 +1,31 @@ +{ + "caption": "Query Information", + "description": "The query info object holds information related to data access within a datastore. To access, manipulate, delete, or retrieve data from a datastore, a query must be written using a specific syntax.", + "extends": "_entity", + "name": "query_info", + "attributes": { + "query_time": { + "description": "The time when the query was run.", + "requirement": "optional" + }, + "query_string": { + "caption": "Query String", + "description": "A string representing the query code being run. For example: SELECT * FROM my_table", + "requirement": "required" + }, + "data": { + "description": "The data returned from the query execution.", + "requirement": "optional" + }, + "bytes": { + "description": "The size of the data returned from the query.", + "requirement": "optional" + }, + "name": { + "description": "The query name for a saved or scheduled query." + }, + "uid": { + "description": "The unique identifier of the query." + } + } +} diff --git a/objects/table.json b/objects/table.json new file mode 100644 index 000000000..48eff1fee --- /dev/null +++ b/objects/table.json @@ -0,0 +1,35 @@ +{ + "caption": "Table", + "description": "The table object represents a table within a structured relational database or datastore, which contains columns and rows of data that are able to be create, updated, deleted and queried.", + "extends": "_entity", + "name": "table", + "attributes": { + "created_time": { + "description": "The time when the table was known to have been created.", + "requirement": "optional" + }, + "modified_time": { + "description": "The most recent time when any changes, updates, or modifications were made within the table.", + "requirement": "optional" + }, + "desc": { + "caption": "Description", + "description": "The description of the table.", + "requirement": "optional" + }, + "size": { + "description": "The size of the data table in bytes.", + "requirement": "optional" + }, + "groups": { + "description": "The group names to which the table belongs.", + "requirement": "optional" + }, + "name": { + "description": "The table name, ordinarily as assigned by a database administrator." + }, + "uid": { + "description": "The unique identifier of the table." + } + } +}