PCI-DSS 查询密码过期用户

蓝图 pci-dss-query-password-expired-users

问题描述

目前,在使用:keystone.conf [security_compliance] password_expires_days 值时,当用户的密码过期并需要管理员重置时,没有办法查询处于密码过期状态的用户列表。我们希望能够检索密码已过期的用户列表,用于技术支持和审计目的。

提议的变更

将向现有的:GET /v3/users API 调用添加一个新的查询,允许管理员查询因密码过期而当前被锁定的用户列表。这将允许操作员设置作业以生成必要的审计列表和通知。

根据密码的过期时间查询用户列表

根据密码的过期时间获取用户列表。

GET /v3/users?password_expires_at={operator}:{timestamp}

其中 {timestamp} 是格式为 YYYY-MM-DDTHH:mm:ssZ 的日期时间,{operator} 可以是 ltgt。请注意,用户也可以通过 /v3/users?password_expires_at={timestamp} 进行相等匹配;但是,由于此查询的性质,它可能不太有用。

https://specs.openstack.org/openstack/api-wg/guidelines/pagination_filter_sort.html#filtering

示例

查询密码在给定时间戳之前过期的用户列表。

GET /v3/users?password_expires_at=lt:2016-10-10T15:30:22Z

响应

{
   "links": {
      "next": null,
      "previous": null,
      "self": "http://example.com/identity/v3/users"
   },
   "users": [
      {
         "domain_id": "default",
         "enabled": false,
         "id": "514a66612f53412796952414898a6b99",
         "name": "someuser1",
         "links": {
            "self": "http://example.com/identity/v3/users/514a66612f53412796952414898a6b99"
         },
         "password_expires_at": "2016-07-07T15:32:17.000000"
      },
      {
         "domain_id": "default",
         "enabled": true,
         "id": "ce8a21d43bc64ce6840346f0a14a7fa9",
         "name": "someuser4",
         "links": {
            "self": "http://example.com/identity/v3/users/ce8a21d43bc64ce6840346f0a14a7fa9"
         },
         "password_expires_at": "2016-10-09T00:21:04.000000"
      }
   ]
}

查询密码在给定时间戳之后过期的用户列表

GET /v3/users?password_expires_at=gt:2016-10-14T15:30:22Z

响应

{
   "links": {
      "next": null,
      "previous": null,
      "self": "http://example.com/identity/v3/users"
   },
   "users": [
      {
         "domain_id": "default",
         "enabled": false,
         "id": "514a66612f53412796952414898a6b99",
         "name": "someuser1",
         "links": {
            "self": "http://example.com/identity/v3/users/514a66612f53412796952414898a6b99"
         },
         "password_expires_at": "2016-10-17T15:32:17.000000"
      }
   ]
}

备选方案

操作员可以直接查询 SQL 后端,通过检查 password_expires_at 字段来查询密码已过期的用户。

安全影响

无。添加的 API 变更没有额外的安全影响。

通知影响

不会为此查询添加额外的通知。

其他最终用户影响

无。添加的 API 变更没有额外的最终用户影响。

性能影响

如果用户数量非常大,此调用可能会失败,因为当前不支持分页。

其他部署者影响

无。添加的 API 变更没有额外的部署者影响。

开发人员影响

无。添加的 API 变更没有额外的开发者影响。

实现

负责人

主要负责人

gagehugo <gagehugo@gmail.com>

其他贡献者

lamt <tinlam@gmail.com>

工作项

  • 实现新的用户查询。

  • python-keystoneclient 中实现绑定。

  • 实现单元测试。

  • 记录新的用户查询用法。

依赖项

此蓝图依赖于以下内容

文档影响

api-ref 中的文档将被更新,以包含添加的查询参数及其用法。

参考资料