# SDM2.0 实体对象清单与三标准对照

> 本清单区分实体、值对象、行为切面和安全知识对象。OCSF、Google SecOps UDM、Cortex XDM 的对象命名和嵌套方式并不完全一致，表中“支持”表示存在等价语义，不表示字段路径完全相同。
>
> 本文已与 `SDM事件模型逻辑契约字段目录.md`（行为/观察模型）对齐：事件角色使用 `subject`、`object`、`carriers[]`、`observation.observer`，不再使用 `roles.*` 旧结构，下文“角色位置”即指这些新角色。行为契约中 `subject.entity_type` / `object.entity_type` 的权威枚举为 16 值：`user/account/host/endpoint/process/file/service/domain/url/device/resource/application/cloud/container/certificate/script`；不在此枚举内的候选对象（如 `workload`、`database`、`table`、`email`、`attachment`、`registry_key`、`scheduled_task`、`directory`、`api`）暂按 `resource` typed object 或对应领域 facet 表达，提升为新类型必须先修订逻辑契约字段目录。

## 一、建模边界

> SDM2.0 的实体对象出现在事件角色下面，不与角色结构并列：
>
> ```text
subject                  行为主体（发起者或执行者），可为 null
object                   主要客体（直接作用对象），单对象，可为 null
carriers[]               行为载体，例如进程、脚本、代理
observation.observer     观察者实体（记录、检测或判断方）
领域 facets / extensions.source_private   非主行为链的相关实体、IOC 或证据对象
> ```
>
> 旧 `roles.source/target/carriers/observer/related` 到上述结构的迁移结论见 `SDM事件模型迁移矩阵.md` 与 `SDM事件模型最终迁移清单.md`；禁止通用 `related` 兜底。
>
> 下文表格中「默认角色位置」使用 `subject` / `object` / `carriers` / `observer`；非主行为链写 `facets` 或 `extensions.source_private`。
>
> 实体是否建立跨事件稳定 ID，需要实体归并服务决定。单条日志中的对象通常只是事件快照，不自动等于主数据实体。类型是否进入 `subject/object` 的 `entity_type` 枚举与是否进入实体索引是两个独立决策：前者由逻辑契约字段目录治理，后者由实体归并和查询需求治理。

## 二、核心实体

| SDM 实体 | 定义 | 默认角色位置 | OCSF 对照 | Google UDM 对照 | Cortex XDM 对照 | 状态 |
|---|---|---|---|---|---|---|
| `user` | 自然人或业务身份 | subject/object/facets | User | `principal.user`、`target.user`、`about.user` | source/target/actor user | 已确定 |
| `account` | 系统、应用或服务账号 | subject/object/facets | Account/User | User 的账号属性或身份字段 | account/user 字段组 | 已确定 |
| `host` | 主机、服务器、终端的逻辑对象 | subject/object/observer/facets | Device、Host Profile | Asset、hostname | Host/Device | 已确定 |
| `device` | 传感器、安全设备或采集设备 | observer/facets | Device、Security Control | Asset、observer | Device/observer | 已确定 |
| `process` | 正在执行的程序实例 | subject/carriers/object/facets | Process、Actor | `principal.process`、`target.process` | source/target/process、causality | 已确定 |
| `file` | 文件或文件资源快照 | subject/object/carriers/facets | File | `principal.file`、`target.file` | source/target/file | 已确定 |
| `service` | 可访问的系统、网络或应用服务 | object/observer/facets | Service、Application | Application、Resource | Service/Application | 已确定 |
| `resource` | 无法归入具体类型的参与资源 | subject/object/observer/facets | Resource Details | Resource | Resource/Target | 已确定 |

`thread`、`module` 不作为当前 SDM 独立核心实体：线程、模块及父子进程关系作为 `process` 的属性或相关进程对象表达。

## 三、平台与应用资源实体

| SDM 实体 | 定义 | 默认角色位置 | OCSF 对照 | UDM 对照 | XDM 对照 | 状态 |
|---|---|---|---|---|---|---|
| `cloud` | 云账号、区域、实例、云服务或云资源上下文 | subject/object/observer/facets | Cloud Profile、Resource | Resource/Asset/Cloud 上下文 | Cloud/Resource | 已确定，需事件契约细化 |
| `container` | 容器运行实例 | subject/object/carriers/observer/facets | Container Profile | Resource/Asset、Kubernetes 上下文 | Container/Kubernetes | 候选稳定对象 |
| `workload` | Pod、Deployment、Job 等编排工作负载 | subject/object/facets | Kubernetes/Container Profile | Resource/Kubernetes 上下文 | Workload/Kubernetes | 候选稳定对象 |
| `application` | 业务应用或软件产品 | subject/object/observer/facets | Application、Software | Application | Application | 候选稳定对象 |
| `database` | 数据库服务或数据库实例 | object/observer/facets | Database Activity/Resource | Database/Resource | Database | 候选稳定对象 |
| `table` | 数据库中的逻辑表或数据集 | object/facets | Database Object | Resource/Data Object | Database Object | 候选稳定对象 |
| `email` | 邮件消息及其信封对象 | subject/object/facets | Email | Email fields | Email/Message | 候选稳定对象 |
| `attachment` | 邮件或消息附件 | carriers/object/facets | File/Email Attachment | File/Attachment | Attachment/File | 候选稳定对象 |

`cloud` 是统一的云资源对象名。具体云账号、区域、实例、服务等细分属性应通过受治理的 Cloud Schema 表达，不再使用 `cloud_resource` 作为并列实体名。

## 四、操作系统与数据对象

| SDM 实体 | 定义 | 默认角色位置 | OCSF 对照 | UDM 对照 | XDM 对照 | 状态 |
|---|---|---|---|---|---|---|
| `registry_key` | Windows 注册表键和值 | object/facets | Registry Key/Value | Registry 事件对象 | Registry Key/Value | 候选稳定对象 |
| `scheduled_task` | 计划任务定义或实例 | subject/object/facets | Scheduled Job/Task | Scheduled Task 字段 | Scheduled Task | 候选稳定对象 |
| `script` | 脚本文件或脚本执行对象 | subject/carriers/object/facets | Script/Process/File | Process/File/Command | Script/Process | 候选稳定对象 |
| `directory` | 文件系统目录 | object/facets | File/Directory | File/Resource | File/Directory | 候选稳定对象 |
| `api` | 应用接口或 API 资源 | object/facets | API/Application | Service/Resource | API/Service | 候选稳定对象 |
| `certificate` | TLS、签名或身份认证证书 | subject/object/observer/facets | Certificate | TLS/Certificate 上下文 | Certificate | 候选稳定对象 |

## 五、标识与定位值对象

以下对象有标准化结构。其中 `endpoint`、`domain`、`url` 在行为契约中已是 `subject/object/carriers` 的 `entity_type` 取值（对应 typed object），但暂不进入第一批实体索引（见第七节）；其余对象保持为属性或富化，不单独建立生命周期和实体主表：

| 值对象 | 典型内容 | 逻辑位置 |
|---|---|---|
| `endpoint` | IP、端口、MAC、协议、网络类型 | `subject/object/carriers` 的 `entity_type=endpoint` typed object |
| `domain` | 域名、主机名 | `subject/object` 的 `entity_type=domain` typed object |
| `url` | URL、路径、查询串 | `subject/object` 的 `entity_type=url` typed object |
| `geo` | 国家、省、市、经纬度 | host、endpoint、resource 等对象的属性或富化 |
| `hashes` | MD5、SHA1、SHA256 | `*.file.hashes` |
| `network_interface` | 网卡名、MAC、接口地址 | `observation.observer`、host 相关对象 |
| `session` | 会话 ID、认证会话、网络会话 | `facets.network`、`facets.authentication` |
| `location` | 地理或组织位置 | geo/enrichment |

`network`、`http`、`authentication`、`dns`、`tls`、`file_activity` 等是行为切面，不是实体对象。数据包、NAT 记录、DNS 记录也属于网络行为或协议事实，除非需要独立追踪其生命周期，否则不作为通用实体。

## 六、安全知识对象

这些对象由观察断言、威胁情报或漏洞上下文治理，不直接当作普通 subject/object 实体，也不覆盖事实层：

| 对象 | 主要用途 | OCSF | UDM | XDM |
|---|---|---|---|---|
| `vulnerability` | CVE、弱点及影响范围 | Vulnerability Finding/Object | Vulnerability/Security Result | Vulnerability |
| `indicator` | IP、域名、Hash、URL 等带判断的 IOC | Observable/Indicator | Security Result/IOC | Indicator/IOC |
| `malware` | 恶意软件家族或样本 | Malware | Malware/Threat | Malware |
| `threat_actor` | 攻击组织或活动者 | Actor/Threat | Threat/Actor | Threat Actor |
| `attack_technique` | ATT&CK 战术、技术、子技术 | Attack/Technique | Security Result/Attack | MITRE tactic/technique |
| `detection_rule` | 生成 Finding 的规则 | Rule/Finding Info | Detection rule | Detection rule |

推荐路径为：

```text
observation.assertion.vulnerabilities[]
observation.assertion.indicators[]
observation.assertion.malware[]
observation.assertion.attacks[]
observation.assertion.rule
领域 facets 或 extensions.source_private（按关系语义分流）
```

## 七、实体 ID 与索引边界

标准对象名不等于实体 ID。只有满足以下条件才进入 SDM 实体索引：

1. 有稳定标识或可治理的归并键；
2. 需要跨事件时间线或关系查询；
3. 能明确实体类型和角色；
4. 归并规则已版本化。

建议的第一批实体类型：

```text
user / account / host / device / process / file / service / resource
```

`endpoint`、`domain`、`url` 和 `hash` 虽已是 `entity_type` 取值或对象属性，但实体索引仍先作为可检索 Observable；是否提升为 Entity，由实体归并和业务查询需求决定。`cloud`、`container`、`workload`、`database`、`email` 等先通过事件类型契约治理，避免一次性把所有对象都实体化。

## 八、标准兼容原则

- OCSF：按 Event Class 选择对象和字段，导出时做 Class/Profile 投影。
- Google UDM：按 `principal`、`target`、`src`、`intermediary`、`observer`、`about` 等角色映射。
- Cortex XDM：按 `source`、`target`、`actor`、`observer` 和行为字段组映射。
- SDM2.0：统一落入 `subject`、`object`、`carriers[]`、`observation.observer` 四种事件角色（其他关联对象按语义进入领域 facets 或 `extensions.source_private`），并由 S4 实体索引负责跨事件归并。

三种标准的等价对象只作为映射依据，不能在 SDM2.0 中同时保留三套命名。
