PCI-DSS 通知

蓝图:pci-dss-notifications

为审计目的,在各种 PCI-DSS 事件的通知中添加原因字段。

问题描述

目前 Keystone 在各种 PCI-DSS 合规性事件的 CADF 通知中不包含发送原因。例如,如果:keystone.conf [security_compliance] lockout_failure_attempts 设置为 5,并且用户尝试登录 6 次失败,则第 6 次尝试的通知并未说明用户因尝试登录达到最大次数而被锁定。在通知中包含此原因对于技术支持和审计目的将非常有益。

提议的变更

为以下合规性事件的通知中添加原因代码和原因类型

PCI-DSS 8.1.6

通过在不超过六次尝试后锁定用户 ID 来限制重复访问尝试。

这将把以下原因代码和原因类型附加到现有的 identity.authenticate 失败通知。

原因代码

原因类型 / 消息

401

超过最大 <number> 次登录尝试次数。

PCI-DSS 8.2.3

密码/口令必须满足以下条件:(i)至少需要七个字符的最小长度,并且 (ii) 包含数字和字母字符。或者,密码/口令必须具有至少与上述参数等效的复杂性和强度。

这将把以下原因代码和原因类型附加到现有的 identity.update.user 失败通知。

PATCH /v3/users/{user_id}

POST /v3/users/{user_id}/password

原因代码

原因类型 / 消息

400

密码不符合预期要求:<regex_description>。

PCI-DSS 8.2.4

至少每 90 天更改一次用户密码/口令。

这将创建一个新的通知,用于

POST /v3/users/{user_id}/password

原因代码

原因类型 / 消息

401

<user> 的密码已过期,必须更改

PCI-DSS 8.2.5

不允许个人提交与其之前使用的最后四个密码/口令相同的新的密码/口令。

这将把以下原因代码和原因类型附加到现有的 identity.authenticate 失败通知。

POST /v3/users/{user_id}/password

原因代码

原因类型 / 消息

400

更改的密码不能与最后 <number> 个密码相同。

其他

用户尝试在最小密码年龄期限之前更改密码。这可以防止用户擦除密码历史记录以重新使用旧密码。

这将创建一个新的通知,用于

POST /v3/users/{user_id}/password

原因代码

原因类型 / 消息

400

在满足最小年龄 <number> 天之前,无法更改密码。

备选方案

事件可以记录并通过日志文件进行解析。

安全影响

无。

通知影响

应为触发的每个 PCI-DSS 事件发出 CADF 通知。一个示例通知是

{
    "priority": "INFO",
    "_unique_id": "3c030dc463114aa0ad17d703942b1a0e",
    "event_type": "identity.authenticate",
    "timestamp": "2016-10-07 01:30:53.075097",
    "publisher_id": "identity.controller",
    "payload": {
        "typeURI": "http://schemas.dmtf.org/cloud/audit/1.0/event",
        "initiator": {
            "typeURI": "service/security/account/user",
            "host": {
                "address": "192.168.1.1"
            },
            "user_id": "6c3d3615c1fd4e868503f0f3f4366874",
            "id": "6c3d3615c1fd4e868503f0f3f4366874"
        },
        "target": {
            "typeURI": "service/security/account/user",
            "id": "a53ea0be-cb4b-529b-8648-09999df8f511"
        },
        "observer": {
            "typeURI": "service/security",
            "id": "9bdddeda6a0b451e9e0439646e532afd"
        },
        "eventType": "activity",
        "eventTime": "2016-10-07T01:30:53.072992+0000",
        "action": "authenticate",
        "outcome": "failure",
        "id": "272aad18-5fbe-580b-b39a-5f9c3ea42f79",
        "reason": {
           "reasonCode": "401",
           "reasonType": "Maximum number of X login attempts exceeded."
        }
    },
    "message_id": "e95a0285-ac25-43d6-b4d9-406997bba38c"
}

其他最终用户影响

无。不会有其他最终用户影响。

性能影响

无。不会有额外的性能影响。

其他部署者影响

无。不会有其他部署者影响。

开发人员影响

无。不会有开发人员影响。

实现

主要负责人

其他贡献者

工作项

  • 为列出的 PCI-DSS 事件添加通知原因。

  • 添加单元测试。

依赖项

此蓝图依赖于以下内容

PCI-DSS 蓝图

文档影响

https://docs.openstack.org/developer/keystone/event_notifications.html 中概述的通知结构将被更新,以包含原因代码。

参考资料

Midcycle Etherpad