支持消息体校验和¶
https://blueprints.launchpad.net/zaqar/+spec/support-md5-of-body
现在,Zaqar 将添加一个非 URL 编码的消息体校验和功能。这对于消息体的安全性至关重要,可以防止消息被篡改。
问题描述¶
目前,Zaqar 没有非 URL 编码的消息体校验和。这是一个提高消息体安全性的良好特性。
AWS SQS 服务已经支持此功能,这对于 Zaqar 来说是一个很好的参考[1].
提议的变更¶
当用户声明或获取消息时,校验和将与消息体一起返回,以便用户可以使用它来验证消息体是否正确。目前 zaqar 仅支持基于 MD5 摘要的非 URL 编码消息体的校验和。未来版本中可能会支持其他算法,包括 SHA1、sha256、sha512 等。因此,有必要修改以下内容
为消息添加一个新的属性,名为
checksum。此属性为字符串类型。当您将消息发送到队列时,Zaqar 将使用默认校验和算法 MD5 来计算非 URL 编码消息体的
checksum值。最后 Zaqar 将在后端存储该值。现在后端 Mongodb、Redis 和 Swift 可以支持。当用户声明或获取消息时,返回消息的
checksum属性。当用户获取或声明消息时,API 将在消息体中返回
checksum的键值对。然后用户可以使用此值来验证新检索到的消息体是否正确。此功能向后兼容。
对于没有校验和属性的旧消息,在
claim和get操作中,校验和将返回None。此功能也将随着旧消息逐渐过期而平稳过渡。为不同后端上的消息体和队列添加新的数据模型。
MESSAGE
+----------------------+---------+ | Name | Field | +======================+=========+ | checksum | cs | +----------------------+---------+ | body | b | +----------------------+---------+ | ... | ... | +----------------------+---------+
缺点¶
无
备选方案¶
无
实现¶
负责人¶
- 主要负责人
cdyangzhenyu <cdyangzhenyu@gmail.com>
里程碑¶
- 完成目标里程碑
Queens RC1
工作项¶
为 Mongodb、Redis 和 Swift 添加消息体校验和支持。
添加此功能的发布说明。
更新 API 参考。
添加此功能的开发者文档。
相应地更改单元测试、功能测试和 tempest 测试。
依赖项¶
无
参考资料¶
[1]:https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html