Tacker 资源生命周期审计支持

https://blueprints.launchpad.net/tacker/+spec/audit-support

本文档描述了为 Tacker 管理的资源(如 VNF、VIM、VNFFG 以及任何未来的资源)的生命周期管理操作引入通用审计/事件日志记录功能的计划。

问题描述

目前,Tacker 缺乏机制让管理员或操作员获取有关何时以及由谁创建、更新和终止了某些 Tacker 资源,以及资源经历了哪些生命周期状态变化的信息。在生产环境中部署时,这类信息对于审计和故障排除至关重要。此外,它还有助于跟踪生命周期操作的进度。

提议的变更

本文档建议引入

  • 一种通用方法,旨在将以下信息捕获到 Tacker 数据库的新表中

  1. 由生命周期管理操作(如创建、更新(例如:VNF 配置更新和 VNF 手动扩展)和终止)引起的 Tacker 资源状态变化。

  2. 状态变化发生时的时间戳值。

  3. 关联的资源 UUID。

  4. 关联的资源类型,例如 VIM、VNF、VNFFG、VNFD 等。

  5. 与事件和/或资源相关的其他有用信息(例如: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>

工作项

  1. Tacker 数据库配置,用于审计/事件日志表。

  2. Tacker 客户端支持和 tacker-db-manage 命令支持。

  3. Tacker 服务器支持。

  4. 在 Tacker Horizon 中添加支持,以提供一个链接到 tacker 资源,单击该链接将显示资源详细信息选项卡和事件选项卡。

  5. 添加单元测试用例。

  6. 添加必要的函数测试用例。

  7. 添加用户和开发人员文档,用于此功能

依赖项

测试

将编写单元测试用例。

文档影响

将提供新的用户和开发人员指南。

参考资料