Tacker 资源生命周期审计支持¶
https://blueprints.launchpad.net/tacker/+spec/audit-support
本文档描述了为 Tacker 管理的资源(如 VNF、VIM、VNFFG 以及任何未来的资源)的生命周期管理操作引入通用审计/事件日志记录功能的计划。
问题描述¶
目前,Tacker 缺乏机制让管理员或操作员获取有关何时以及由谁创建、更新和终止了某些 Tacker 资源,以及资源经历了哪些生命周期状态变化的信息。在生产环境中部署时,这类信息对于审计和故障排除至关重要。此外,它还有助于跟踪生命周期操作的进度。
提议的变更¶
本文档建议引入
一种通用方法,旨在将以下信息捕获到 Tacker 数据库的新表中
由生命周期管理操作(如创建、更新(例如:VNF 配置更新和 VNF 手动扩展)和终止)引起的 Tacker 资源状态变化。
状态变化发生时的时间戳值。
关联的资源 UUID。
关联的资源类型,例如 VIM、VNF、VNFFG、VNFD 等。
与事件和/或资源相关的其他有用信息(例如:VDU1 健康监控失败 - 管理 IP 地址不可达)。
向现有的 vim、devices 和 devicetemplates 表中添加新的 created_at、updated_at 和 deleted_at 列,以捕获对应创建、更新和删除操作的时间戳值。现有的 DB API 需要更新以支持将上述值添加到数据库表中。
REST API 用于根据状态、时间窗口以及从给定索引开始的分页查询为给定资源类型创建的事件。将引入一个新的“event”扩展,该扩展定义了事件接口层并描述了事件 REST API。
Horizon 更改,以按资源的时间顺序显示事件。例如:单击 VNF 管理器中的 VNF 实例条目,将打开一个详细信息页面,其中提供两个选项卡:1. 详细信息选项卡 2. 事件选项卡。
Tacker 客户端更改,以根据 API 中支持的查询检索事件,如下所示
tacker event-list –type <resource-type> <query options and values>
tacker event-show <event id>
额外的 Tacker 客户端更改,将支持以下方式检索资源上下文中的事件
tacker vnf-event-list <vnf-name or vnf-id> –filter <query options/values>
tacker vnf-event-show <vnf-name or vnf-id> –event-id <event-id>
注意:可以多次提及“filter”,以添加多个查询。将为 VNFD、VIM 和其他 Tacker 管理的资源提供类似的上述支持。
备选方案¶
无
数据模型影响¶
将在 tacker 数据库中添加一个新的表来捕获事件/审计日志。该表将包含以下属性
属性名称 |
类型 |
描述 |
id |
Integer |
自动生成的事件 ID |
resource_id |
字符串 (UUID) |
事件源的 UUID |
timestamp |
datetime |
UTC 时间戳 |
resource_state |
string |
捕获的事件源状态 |
event_type |
string |
操作类型,例如创建、更新、scale_out 等。 |
resource_type |
string |
事件资源类型,例如 VNFD、VNF、VIM、VNFFG 等。 |
event_details |
string |
捕获事件特定信息 |
vims、devices 和 devicetemplates 表将使用以下列更新
created_at
updated_at
deleted_at
这里 deleted_at 列有助于引入软删除 - 当用户删除资源时,deleted_at 将标记为当前时间戳,并且 tacker-db-manage 将提供以下选项来清除基于年龄的软删除资源
tacker-db-manage purge –age <count> –timeline <days|hours|minutes>
REST API 影响¶
/events?resource_id=<uuid>&index=<event-id>& count=<number of events>&status=[<supported status>]&event_type=<event-type>& resource_type=<resource-type>&start-time=<time-val>&end-time=<time-val>
属性名称 |
类型 |
访问 |
默认值 |
验证/转换 |
描述 |
id |
Integer |
RO,全部 |
生成 |
N/A |
自动生成的事件 ID |
resource_id |
字符串 (UUID) |
RO,全部 |
无 (必需) |
N/A |
事件源的 UUID |
timestamp |
datetime |
RO,全部 |
无 (必需) |
N/A |
UTC 时间戳 |
resource_state |
string |
RO,全部 |
无 (必需) |
N/A |
捕获的事件源状态 |
event_type |
string |
RO,全部 |
无 (必需) |
N/A |
操作类型,例如创建、更新、scale_out 等。 |
resource_type |
string |
RO,全部 |
无 (必需) |
N/A |
事件资源类型,例如 VNFD、VNF、VIM、VNFFG 等。 |
event_details |
string |
RO,全部 |
‘’ |
N/A |
事件特定信息 |
REST 调用 |
类型 |
预期响应 |
Body 数据模式 |
描述 |
/events/<event-id> |
get |
200 OK |
无 |
返回特定事件 ID 的输出 |
/events?resource_id=<res_id> |
get |
200 OK |
无 |
返回给定资源的事件列表 |
/events?resource_id=<res_id>& index=<event-id>&count=<cnt> |
get |
200 OK |
无 |
从指定的事件 ID 返回给定资源的指定数量的事件 |
/events?resource_id=<res_id>& event_type=<etype> |
get |
200 OK |
无 |
返回给定资源的请求类型的所有事件 |
/events?resource_id=<res_id>& start-time=<tval1>&end-time=< tval2> |
get |
200 OK |
无 |
返回给定资源在指定时间间隔内的所有事件 |
REST 调用失败 |
类型 |
负面响应 |
响应消息 |
场景 |
/events/<event-id> |
get |
404 Not Found |
事件不存在 |
指定的事件 ID 在数据库中不存在 |
安全影响¶
新的 ReST API 将仅支持所有者和管理员,其他用户将被禁止执行这些操作。
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Vishwanath Jayaraman <vishwanathj@hotmail.com>
- 其他贡献者
Kanagaraj Manickam <mkr1481@gmail.com>
工作项¶
Tacker 数据库配置,用于审计/事件日志表。
Tacker 客户端支持和 tacker-db-manage 命令支持。
Tacker 服务器支持。
在 Tacker Horizon 中添加支持,以提供一个链接到 tacker 资源,单击该链接将显示资源详细信息选项卡和事件选项卡。
添加单元测试用例。
添加必要的函数测试用例。
添加用户和开发人员文档,用于此功能
依赖项¶
无
测试¶
将编写单元测试用例。
文档影响¶
将提供新的用户和开发人员指南。
参考资料¶
无