为 CONTINUOUS 审计添加开始和结束时间

https://blueprints.launchpad.net/watcher/+spec/add-start-end-time-for-continuous-audit

目前我们只能设置审计执行间隔,但无法设置审计的开始和结束时间。我们需要为 CONTINUOUS 审计添加审计开始和结束时间。

问题描述

对于 CONTINUOUS 审计,它会在启动后定期运行。目前还没有办法控制 CONTINUOUS 审计的开始和结束时间。

用例

作为 Watcher 用户,我希望能够设置 CONTINUOUS 审计的开始和结束时间。

提议的变更

  • 在审计表中添加新的 start_time 和 end_time 字段

  • 对于 CONTINUOUS 审计,如果其状态为 PENDING 或 ONGOING,仅当当前时间在 start_time 和 end_time 之间时才启动审计

用户可以指定开始和结束时间,或者任意一个。如果用户没有指定开始和结束时间,审计的行为与之前相同。如果没有开始时间,审计将在创建后开始。如果没有结束时间,审计将运行直到其状态变为 SUSPENDED 或 CANCELLED。如果提供了结束时间,审计将在结束时间后从 ONGOING 变为 SUCCEEDED,并且不再运行。日期时间格式为 ISO 8601,例如:YYYY-MM-DD hh:mm:ss

这里有一些 CLI 示例

使用开始和结束时间创建审计

$ watcher audit create -g dummy -t CONTINUOUS -i 300 \
  --start-time '2018-04-01 08:00:00' --end-time '2018-04-03 08:00:00'

更新审计开始或结束时间

$ watcher audit update 64aa6c03-b676-4904-9d6a-855d1d6f9200 \
  replace start_time='2018-04-02 20:30:00'

$ watcher audit update 64aa6c03-b676-4904-9d6a-855d1d6f9200 \
  replace end_time='2018-04-04 20:30:00'

备选方案

可以重用 ‘interval’ 字段,而不是新的 start_time 和 end_time 字段。但这会导致复杂化,并且不易理解。

数据模型影响

在审计表中添加新的 start_time 和 end_time 字段

REST API 影响

需要在 Audits APIs 中添加新的 ‘start_time’ 和 ‘end_time’ 参数。它们的值是本地时间。

安全影响

通知影响

将 ‘start_time’ 和 ‘end_time’ 添加到 AuditPayload

其他最终用户影响

  • 需要在 CLI ‘watcher audit create’ 中添加 ‘start_time’ 和 ‘end_time’

  • 还需要更新 watcher-dashboard

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

licanwei

工作项

  • 更新架构文档以添加新字段

  • 在审计表中添加新的 start_time 和 end_time 字段

  • 在运行 CONTINUOUS 审计之前检查开始和结束时间

  • 更新通知 AuditPayload

  • 更新 python-watcherclient

  • 更新 watcher-dashboard

依赖项

测试

所有更改的单元测试

文档影响

更新架构文档以添加新字段。

参考资料

历史