将审计中间件添加到 keystonemiddleware

审计中间件

pyCADF 库包含中间件,可以启用对给定服务的 API 调用的审计。审计中间件利用由 auth_token 中间件提供的身份数据。

问题描述

审计与身份认证紧密相关,但目前审计中间件存在于 pyCADF 库中,而身份认证中间件包含在 openstack/keystonemiddleware 中。这要求部署者显式地引入多个依赖项。由于它们之间存在逻辑关联,因此应该相应地将中间件分组。

提议的变更

目前,审计中间件存在于 pyCADF 库中,建议的解决方案是将此中间件移动到 keystonemiddleware 中。此解决方案会引入对 oslo.messaging 的依赖,因为当前的审计中间件会将审计事件放置到消息队列中。它还依赖于 pyCADF 来生成审计事件。

备选方案

两种替代方案

  • 保持现状。如果用户想要进行审计,他们应该引入 pyCADF 和 notifiermiddleware 并添加审计中间件。

  • 从 pyCADF 引入审计中间件,但移除 oslo.messaging 依赖。可以将通知委托给 notifiermiddleware,但需要更改 notifiermiddleware 以正确审计请求和响应。

安全影响

通知影响

建议的解决方案将使中间件为每个 API 请求发送两个通知:一个用于请求,另一个用于响应。可以配置它以仅审计某些 API 请求(例如,仅 GET 请求)以最大程度地减少通知。

其他最终用户影响

用户需要从一个 python 包(keystonemiddleware.audit)中使用 audit 中间件。

文档将从 旧位置 移动到 keystonemiddleware 中的新位置。

性能影响

如果启用,这将给消息队列带来更大的负载。此审计过滤器是可选的。

其他部署者影响

如果启用,部署者需要在配置中间件的服务中启用通知。之后,他们可以按照文档中的描述将审计中间件添加到 WSGI 管道中。

开发人员影响

实现

负责人

主要负责人

chungg

其他贡献者

工作项

  • 将审计中间件移动到 keystonemiddleware 并进行适当的代码更改以使其正常工作,同时在 pyCADF 中提供向后兼容性。

  • 更新 keystonemiddleware 文档,以包含中间件配置文档。

依赖项

  • 需要 pyCADF 和 oslo.messaging 库

文档影响

复制启用中间件的文档:https://docs.openstack.org/developer/pycadf/middleware.html

参考资料