Victoria 系列发布说明¶
18.1.0-12¶
新特性¶
可以使用一个新的选项 ‘randomize_urls’ 来随机化 keystone 连接 LDAP 服务器的顺序,在 [ldap] ‘url’ 列表中。默认情况下为 false。
升级说明¶
[bug 1929066] 增加 id_mapping 表中 local_id 列的长度,以适应导致名称超过 64 个字符的 LDAP 组名。
安全问题¶
如果 max_password_length 大于所选密码哈希算法允许的长度,密码现在将自动截断。目前只有 bcrypt 定义了固定的允许长度,为 54 个字符。如果密码被截断,将在日志中生成警告。这不会影响现有密码,但是,只有现有 bcrypt 密码的前 54 个字符将被验证。
[bug 1992183] [CVE-2022-2447] 使用应用程序凭证颁发的令牌现在将对其到期时间进行验证,验证依据是应用程序凭证的到期时间。如果应用程序凭证在令牌之前到期,则令牌的到期时间将设置为与应用程序凭证相同的到期时间。否则,令牌将使用配置的值。
错误修复¶
使用 bcrypt 算法哈希的密码现在会被正确截断到算法允许的最大长度。这解决了 Keystone 升级后,超过 54 个字符的密码失效的回归问题。
18.1.0¶
安全问题¶
[bug 1901207] 应用程序凭证的策略执行已更新,以防止无效的所有权检查导致未经授权的用户能够获取和删除其他用户的应用程序凭证。
错误修复¶
[bug 1688137] 修复了向最终用户显示 AccountLocked 异常的问题,因为它提供了一些可能被恶意用户利用的信息。最终用户现在将看到 Unauthorized 而不是 AccountLocked,从而防止用户信息 oracle 漏洞利用。
[bug 1878938] 以前,当用户拥有系统角色分配并尝试删除相同的角色时,系统角色分配仍然存在于 system_assignment 表中。这导致 keystone 返回 HTTP 404 Not Found 错误,在列出具有名称的角色分配时(例如,–names 或 ?include_names)。
如果您受到此错误的影响,则必须手动删除过时的角色分配。以下是一个示例 SQL 语句,您可以使用它来修复该问题,但您应该验证它是否适用于您的部署的 SQL 实现和版本。
- SQL
delete from system_assignment where role_id not in (select id from role);
[bug 1885753] Keystone 的 SQL 身份后端现在会重试更新用户请求,以安全地处理两个客户端同时更新用户时的陈旧数据。
[bug 1896125] 引入了更强大的异步 LDAP 请求连接处理,以解决从页面大小较小的 LDAP 后端获取数据时的内存泄漏问题。
[bug 1901654] 之前,sha256.py 中的 generate_public_ID() 假定传入的参数是 str 数据类型。但是,python-ldap 3.0 或更高版本返回字节数据类型作为属性值,除了区分名、相对区分名、属性名、查询的字段。如果运行 Python3 的 keystone 与 LDAP 集成,并且 LDAP 服务器在其属性中具有 local_id 变量,由于假设和修改了 python-ldap,用户登录操作将失败。通过此修复,generate_public_ID() 正确处理参数中的字节数据类型。
18.0.0¶
新特性¶
[bug 1332058]
keystone-manage doctor现在检查 Keystone 是否可以建立到 Memcached 的连接(如果已配置)。
[bug 1827431] 添加了一个新的用户选项 ‘ignore_user_inactivity’(默认值为 False)。当设置为 True 时,它将覆盖 Keystone 配置文件中
[security_compliance]disable_user_account_days_inactive选项设置的由于用户不活动一段时间后禁用用户的功能。
- [bug 1872732] 将 ‘user_limit’ 添加到凭证的配置文件中,允许用户设置
用户允许创建的最大凭证数量。
映射现在可以将 “whitelist”(白名单)和 “blacklist”(黑名单)条件指定为正则表达式。 之前,只有 “not_any_of” 和 “any_one_of” 条件支持正则表达式匹配。
升级说明¶
[bug 1872737] 为签名的 EC2 凭证请求添加了 15 分钟的默认 TTL,此前 EC2 签名令牌请求的有效期为无限期。这种行为的改变是为了防止重放攻击。
关键问题¶
[bug 1872733] 修复了一个关键的安全问题,即经过身份验证的用户可以通过修改有效的 EC2 凭证来提升其权限。
[bug 1872735] 修复了一个安全问题,即受托人或应用程序凭证用户可以创建一个 EC2 凭证或应用程序凭证,从而允许他们获得一个提升其角色分配的令牌,超出受托或应用程序凭证中委托给他们的子集。现在,一个新的属性
app_cred_id会自动添加到 EC2 凭证的访问 blob 中,并且受托或应用程序凭证中的角色列表会得到尊重。
安全问题¶
[bug 1872733] 修复了一个关键的安全问题,即经过身份验证的用户可以通过修改有效的 EC2 凭证来提升其权限。
[bug 1872735] 修复了一个安全问题,即受托人或应用程序凭证用户可以创建一个 EC2 凭证或应用程序凭证,从而允许他们获得一个提升其角色分配的令牌,超出受托或应用程序凭证中委托给他们的子集。现在,一个新的属性
app_cred_id会自动添加到 EC2 凭证的访问 blob 中,并且受托或应用程序凭证中的角色列表会得到尊重。
[bug 1872737] 修复了不正确的 EC2 令牌验证实现,该实现忽略了签名请求的时间戳,这使得 EC2 和 S3 令牌请求容易受到重放攻击。默认 TTL 为 15 分钟,但可以配置。
[bug 1872755] 为 EC2 凭证更新 API 添加了验证,以确保用户不会更改元数据标签“trust_id”和“app_cred_id”。这些标签由 keystone 用于确定凭证允许的范围,更改这些自动标签可能会使 EC2 凭证持有者提升其访问权限,超出应用程序凭证或用于创建 EC2 凭证的受托权限。
[bug 1873290] [bug 1872735] 修复了令牌模型,以尊重授权 OAuth1 访问令牌的角色。此前,OAuth1 访问令牌授权的角色列表会被忽略,因此当使用访问令牌请求 keystone 令牌时,keystone 令牌将包含创建者对项目的每个角色分配。这也修复了 EC2 凭证以尊重这些角色。
错误修复¶
[bug 1754677] 当您为域上的角色分配设置用户,然后在“充当域”的项目上设置角色分配时,您实际上无法删除他们。 这通过在角色分配表中按“type”(即 USER_DOMAIN 或 USER_PROJECT)过滤查询来修复此问题。
[bug 1872733] 修复了一个关键的安全问题,即经过身份验证的用户可以通过修改有效的 EC2 凭证来提升其权限。
[bug 1872735] 修复了一个安全问题,即受托人或应用程序凭证用户可以创建一个 EC2 凭证或应用程序凭证,从而允许他们获得一个提升其角色分配的令牌,超出受托或应用程序凭证中委托给他们的子集。现在,一个新的属性
app_cred_id会自动添加到 EC2 凭证的访问 blob 中,并且受托或应用程序凭证中的角色列表会得到尊重。
[bug 1872737] 修复了不正确的 EC2 令牌验证实现,该实现忽略了签名请求的时间戳,这使得 EC2 和 S3 令牌请求容易受到重放攻击。默认 TTL 为 15 分钟,但可以配置。
[bug 1872753] 添加了对 EC2 凭证 API 的验证,以防止更改 blob 属性中的
access_id字段。 这可以防止在更改后的access_id不再解析为凭证的资源 ID 时,意外使 EC2 凭证资源孤立。
[bug 1872755] 为 EC2 凭证更新 API 添加了验证,以确保用户不会更改元数据标签“trust_id”和“app_cred_id”。这些标签由 keystone 用于确定凭证允许的范围,更改这些自动标签可能会使 EC2 凭证持有者提升其访问权限,超出应用程序凭证或用于创建 EC2 凭证的受托权限。
[bug 1873290] [bug 1872735] 修复了令牌模型,以尊重授权 OAuth1 访问令牌的角色。此前,OAuth1 访问令牌授权的角色列表会被忽略,因此当使用访问令牌请求 keystone 令牌时,keystone 令牌将包含创建者对项目的每个角色分配。这也修复了 EC2 凭证以尊重这些角色。
[bug 1880252] 不允许在 “whitelist”(白名单)和 “blacklist”(黑名单)条件中使用正则表达式
[bug 1886017] JWT 验证现在支持 allow_expired 查询参数。
[bug 1889936] 正确解码从 LDAP 返回的八位字节字符串或字节数组。