使用 Barbican 的审计中间件¶
背景¶
审计中间件是一种 Python 中间件逻辑,通过 paste 部署过滤器添加到服务请求处理管道中。审计中间件以 CADF 格式构建审计事件数据。
审计中间件支持通过 Oslo 消息通知器功能传递 CADF 审计事件。基于 notification_driver 配置,审计事件可以路由到消息传递基础设施 (notification_driver = messagingv2),也可以路由到日志文件 (notification_driver = log)。
审计中间件为每个 REST API 交互创建两个事件。第一个事件包含从请求数据中提取的信息,第二个事件包含请求结果(响应)。
启用 API 请求的审计¶
审计中间件作为 keystonemiddleware (>= 1.6) 库的一部分提供。假设 Barbican 部署已经使用 Keystone 进行令牌验证,审计支持仅需要配置更改。它具有 Oslo 消息传递库依赖性,因为它使用它来传递审计事件。pyCADF 库用于以 CADF 格式创建事件。
启用中间件:启用中间件链接。更改主要在服务 paste 部署配置中。
配置中间件:配置中间件链接。可以使用提供的审计映射文件。如果没有针对操作或路径的自定义映射,则相关的映射值将从 pyCADF 库中定义的分类法中派生。
注意
审计中间件过滤器应包含在请求管道中 Keystone 中间件的 keystone_authtoken 中间件之后。这是必要的,以便审计中间件可以利用 keystone_authtoken 中间件设置的环境变量。
步骤¶
关闭所有活动的 Barbican 实例。
将 api_audit_map.conf 复制到
/etc/barbican目录。编辑
/etc/barbican/barbican-api-paste.ini将 /v1 app 管道从
barbican_api替换为barbican-api-keystone-audit管道[pipeline:barbican-api-keystone-audit] pipeline = authtoken context audit apiapp
编辑
barbican.conf以更新 notification_driver 值。启动 Barbican
{barbican_home}/bin/barbican.sh start
示例审计事件¶
以下是关于对称密钥创建请求的审计事件示例
{
"priority":"INFO",
"event_type":"audit.http.request",
"timestamp":"2015-12-11 00:44:26.412076",
"publisher_id":"uwsgi",
"payload":{
"typeURI":"http://schemas.dmtf.org/cloud/audit/1.0/event",
"eventTime":"2015-12-11T00:44:26.410768+0000",
"target":{
"typeURI":"service/security/keymanager/secrets",
"addresses":[
{
"url":"http://{barbican_admin_host}:9311",
"name":"admin"
},
{
"url":"http://{barbican_internal_host}:9311",
"name":"private"
},
{
"url":"https://{barbican_public_host}:9311",
"name":"public"
}
],
"name":"barbican_service_user",
"id":"barbican"
},
"observer":{
"id":"target"
},
"tags":[
"correlation_id?value=openstack:7e0fe4a6-e258-477e-a1c9-0fd0921a8435"
],
"eventType":"activity",
"initiator":{
"typeURI":"service/security/account/user",
"name":"cinder_user",
"credential":{
"token":"***",
"identity_status":"Confirmed"
},
"host":{
"agent":"curl/7.38.0",
"address":"192.168.245.2"
},
"project_id":"8eabee0a4c4e40f882df8efbce695526",
"id":"513e8682f23446ceb598b6b0f5c4482b"
},
"action":"create",
"outcome":"pending",
"id":"openstack:3a6a961c-9ada-4b81-9095-90968d896c41",
"requestPath":"/v1/secrets"
},
"message_id":"afc3fd93-51e9-4c80-b330-983e66962265"
}
Ceilometer 审计 wiki 可以参考以识别审计事件中不同字段的含义,以了解审计和合规性的 7 个“W”。