|
| 1 | +# -*- coding: utf-8 -*- |
| 2 | +"""Canonical asset taxonomy for OpenAEV (mirrors the backend enums). |
| 3 | +
|
| 4 | +These give producers (collectors, custom integrations) a single, typed vocabulary for the |
| 5 | +two-level asset categorization (category + subcategory), criticality and cloud provider, instead |
| 6 | +of free-form strings. They are plain ``str`` enums so they can be dropped straight into the dict |
| 7 | +payloads sent to the API. |
| 8 | +""" |
| 9 | + |
| 10 | +from enum import Enum |
| 11 | + |
| 12 | + |
| 13 | +class AssetCategory(str, Enum): |
| 14 | + HOST = "HOST" |
| 15 | + CONTAINER_WORKLOAD = "CONTAINER_WORKLOAD" |
| 16 | + CLOUD_RESOURCE = "CLOUD_RESOURCE" |
| 17 | + WEB_APPLICATION = "WEB_APPLICATION" |
| 18 | + NETWORK_DEVICE = "NETWORK_DEVICE" |
| 19 | + MOBILE_DEVICE = "MOBILE_DEVICE" |
| 20 | + IOT_OT_DEVICE = "IOT_OT_DEVICE" |
| 21 | + IDENTITY = "IDENTITY" |
| 22 | + SAAS_APPLICATION = "SAAS_APPLICATION" |
| 23 | + AI_TARGET = "AI_TARGET" |
| 24 | + SECURITY_PLATFORM = "SECURITY_PLATFORM" |
| 25 | + GENERIC_ASSET = "GENERIC_ASSET" |
| 26 | + |
| 27 | + |
| 28 | +class AssetSubCategory(str, Enum): |
| 29 | + # HOST |
| 30 | + SERVER = "SERVER" |
| 31 | + WORKSTATION = "WORKSTATION" |
| 32 | + LAPTOP = "LAPTOP" |
| 33 | + VIRTUAL_MACHINE = "VIRTUAL_MACHINE" |
| 34 | + HYPERVISOR = "HYPERVISOR" |
| 35 | + MAINFRAME = "MAINFRAME" |
| 36 | + THIN_CLIENT = "THIN_CLIENT" |
| 37 | + # CONTAINER_WORKLOAD |
| 38 | + CONTAINER = "CONTAINER" |
| 39 | + CONTAINER_IMAGE = "CONTAINER_IMAGE" |
| 40 | + KUBERNETES_POD = "KUBERNETES_POD" |
| 41 | + KUBERNETES_CLUSTER = "KUBERNETES_CLUSTER" |
| 42 | + KUBERNETES_NODE = "KUBERNETES_NODE" |
| 43 | + SERVERLESS_FUNCTION = "SERVERLESS_FUNCTION" |
| 44 | + # CLOUD_RESOURCE |
| 45 | + COMPUTE = "COMPUTE" |
| 46 | + STORAGE = "STORAGE" |
| 47 | + DATABASE = "DATABASE" |
| 48 | + NETWORKING = "NETWORKING" |
| 49 | + SERVERLESS = "SERVERLESS" |
| 50 | + CONTAINER_REGISTRY = "CONTAINER_REGISTRY" |
| 51 | + KUBERNETES = "KUBERNETES" |
| 52 | + IAM_PRINCIPAL = "IAM_PRINCIPAL" |
| 53 | + SECRETS_KEY_MGMT = "SECRETS_KEY_MGMT" |
| 54 | + MESSAGING_QUEUE = "MESSAGING_QUEUE" |
| 55 | + ANALYTICS_DATA = "ANALYTICS_DATA" |
| 56 | + AI_ML_SERVICE = "AI_ML_SERVICE" |
| 57 | + IAC_TEMPLATE = "IAC_TEMPLATE" |
| 58 | + CLOUD_OTHER = "CLOUD_OTHER" |
| 59 | + # WEB_APPLICATION |
| 60 | + WEBSITE = "WEBSITE" |
| 61 | + WEB_API = "WEB_API" |
| 62 | + SINGLE_PAGE_APP = "SINGLE_PAGE_APP" |
| 63 | + GRAPHQL_API = "GRAPHQL_API" |
| 64 | + WEB_SERVICE = "WEB_SERVICE" |
| 65 | + MICROSERVICE = "MICROSERVICE" |
| 66 | + # NETWORK_DEVICE |
| 67 | + ROUTER = "ROUTER" |
| 68 | + SWITCH = "SWITCH" |
| 69 | + FIREWALL = "FIREWALL" |
| 70 | + LOAD_BALANCER = "LOAD_BALANCER" |
| 71 | + VPN_GATEWAY = "VPN_GATEWAY" |
| 72 | + WIRELESS_AP = "WIRELESS_AP" |
| 73 | + PROXY = "PROXY" |
| 74 | + DNS_SERVER = "DNS_SERVER" |
| 75 | + DHCP_SERVER = "DHCP_SERVER" |
| 76 | + SAN_NAS = "SAN_NAS" |
| 77 | + NETWORK_OTHER = "NETWORK_OTHER" |
| 78 | + # MOBILE_DEVICE |
| 79 | + SMARTPHONE = "SMARTPHONE" |
| 80 | + TABLET = "TABLET" |
| 81 | + # IOT_OT_DEVICE |
| 82 | + IOT_SENSOR = "IOT_SENSOR" |
| 83 | + IP_CAMERA = "IP_CAMERA" |
| 84 | + GATEWAY = "GATEWAY" |
| 85 | + POINT_OF_SALE = "POINT_OF_SALE" |
| 86 | + MEDIA_DEVICE = "MEDIA_DEVICE" |
| 87 | + PLC = "PLC" |
| 88 | + RTU = "RTU" |
| 89 | + HMI = "HMI" |
| 90 | + SCADA_HISTORIAN = "SCADA_HISTORIAN" |
| 91 | + MEDICAL_DEVICE = "MEDICAL_DEVICE" |
| 92 | + PRINTER_PERIPHERAL = "PRINTER_PERIPHERAL" |
| 93 | + BUILDING_MGMT = "BUILDING_MGMT" |
| 94 | + # IDENTITY |
| 95 | + USER_ACCOUNT = "USER_ACCOUNT" |
| 96 | + SERVICE_ACCOUNT = "SERVICE_ACCOUNT" |
| 97 | + GROUP = "GROUP" |
| 98 | + ROLE = "ROLE" |
| 99 | + SHARED_MAILBOX = "SHARED_MAILBOX" |
| 100 | + NON_HUMAN_IDENTITY = "NON_HUMAN_IDENTITY" |
| 101 | + # SAAS_APPLICATION |
| 102 | + SAAS_APP = "SAAS_APP" |
| 103 | + SAAS_TENANT = "SAAS_TENANT" |
| 104 | + # AI_TARGET |
| 105 | + LLM_MODEL = "LLM_MODEL" |
| 106 | + AI_AGENT = "AI_AGENT" |
| 107 | + MCP_SERVER = "MCP_SERVER" |
| 108 | + RAG_PIPELINE = "RAG_PIPELINE" |
| 109 | + # SECURITY_PLATFORM |
| 110 | + EDR = "EDR" |
| 111 | + XDR = "XDR" |
| 112 | + SIEM = "SIEM" |
| 113 | + SOAR = "SOAR" |
| 114 | + NDR = "NDR" |
| 115 | + ISPM = "ISPM" |
| 116 | + LLM_FIREWALL = "LLM_FIREWALL" |
| 117 | + AI_GATEWAY = "AI_GATEWAY" |
| 118 | + |
| 119 | + |
| 120 | +class CloudProvider(str, Enum): |
| 121 | + AWS = "AWS" |
| 122 | + AZURE = "AZURE" |
| 123 | + GCP = "GCP" |
| 124 | + OCI = "OCI" |
| 125 | + ALIBABA = "ALIBABA" |
| 126 | + KUBERNETES = "KUBERNETES" |
| 127 | + OTHER = "OTHER" |
| 128 | + |
| 129 | + |
| 130 | +class AssetCriticality(str, Enum): |
| 131 | + VERY_HIGH = "VERY_HIGH" |
| 132 | + HIGH = "HIGH" |
| 133 | + MEDIUM = "MEDIUM" |
| 134 | + LOW = "LOW" |
| 135 | + UNKNOWN = "UNKNOWN" |
0 commit comments