显式反应式强制执行

https://blueprints.launchpad.net/congress/+spec/explicit-reactive-enforcement

使策略编写者能够描述在何种条件下 Congress 应该执行特定操作,例如,当网络连接到包含病毒的虚拟机时,将其断开互联网连接。

问题描述

目前 Congress 不会采取直接行动来帮助云遵守其治理的策略。今天 Congress 可以识别策略违规,但无法纠正它们。

提议的变更

此更改使策略编写者能够包含如下策略片段,以编码 Congress 应该如何响应云中更改的指令。它使策略编写者能够在特定条件下指示 Congress 必须执行某些操作。

// 每当虚拟机感染病毒时,将其从网络断开

execute[disconnectNetwork(vm, network=net)] :-
  antivirus:infected(vm),
  nova:network(vm, net)

备选方案

相同的功能可以用传统的编程语言(如 Python)编写,而不是编码为策略。但作为策略的好处是,我们可以构建分析工具来帮助策略作者了解他们是否创建了无限循环和其他不受欢迎的功能。

策略

参见上面的示例。

策略操作

此蓝图的目的是实现一种反应式强制执行形式。

数据源

数据模型影响

REST API 影响

无。此功能通过编写策略语句来利用,而现有的 API 已经可以正确处理这些语句。

安全影响

一种潜在的安全影响是,Congress 通常以管理员身份运行,因此 Congress 执行的所有操作也将以管理员身份执行。因此,首次针对 Congress 的安全漏洞意味着针对 Congress 允许其执行操作的所有服务的安全漏洞。尽管在 OpenStack 中,针对 Congress 的安全漏洞意味着 Keystone 的漏洞,而 Keystone 的漏洞仍然会授予其他 OpenStack 服务管理员权限。

通知影响

其他最终用户影响

性能影响

此规范没有;其他依赖规范具有性能影响。

其他部署者影响

无。

开发者影响

无。

实现

负责人

主要负责人

<launchpad-id 或 None>

其他贡献者

<launchpad-id 或 None>

工作项

  • 修改触发器框架以直接对模态运算符进行操作,例如,以便我们可以在 execute[x] 更改时注册一个触发器。

  • 在 execute[x] 上设置一个触发器。当该触发器触发时,它会在适当的 ExecutionDriver 上调用该操作。

依赖项

  • modal-operators-for-policy:启用 execute[] 语法

  • policy-triggers:触发器框架的初始版本

  • action-execution-interface:将执行器驱动程序概念添加到 Congress

测试

此更改需要对增强的触发器框架进行单元测试。

它应该包括 tempest 测试,以测试端到端功能。

文档影响

这将需要一个新的文档部分来介绍反应式强制执行。

参考资料