- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 概念类
- 规格类
- 限制类
- 网络类
- 计费类
-
其他类
- 如何从云服务器访问文件系统?
- 如何确认Linux云服务器上的文件系统处于可用状态?
- 弹性文件服务会占用用户的哪些资源?
- SFS容量型文件系统挂载后为什么容量显示为10P?
- 通用文件系统挂载后为什么会显示250TB?
- 如何在弹性文件服务SFS和对象存储服务OBS之间进行数据迁移?
- 弹性文件服务支持多可用区吗?
- 可以将SFS容量型文件系统升级为SFS Turbo文件系统吗?
- 可以将SFS Turbo标准型升级为SFS Turbo标准型-增强版吗?
- 如何在弹性文件服务SFS和云硬盘EVS之间进行数据迁移?
- 可以直接从云下访问弹性文件服务吗?
- 如何删除.nfs类型的文件?
- 将数据从SFS容量型迁移至SFS Turbo后,容量为什么变大了?
- 如何提高SFS Turbo文件系统拷贝和删除操作的效率?
- SFS Turbo二级及三级目录权限如何继承?
- 如何将SFS Turbo部署至CCE?
- 如何发挥SFS Turbo文件系统的最大性能?
- Linux内核5.4版本之后客户端的NFSv3文件系统顺序读业务场景性能不符合预期,如何处理?
- 故障排除
- 视频帮助
- 文档下载
- 通用参考
展开导读
链接复制成功!
用户签名验证
SFS通过AK/SK对请求进行签名,在向SFS发送请求时,客户端发送的每个消息头需要包含由SK、请求时间、请求类型等信息生成的签名信息。
- AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。格式例如:HCY8BGCN1YM5ZWYOK1MH
- SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。格式例如:9zYwf1uabSQY0JTnFqbUqG7vcfqYBaTdXde2GUcq
用户可以在IAM服务中获取AK和SK,获取的方法请参见获取访问密钥(AK/SK)。
SFS根据应用场景,提供了Header中携带签名的签名计算方式。
以Header中携带签名为例,用户签名验证流程如表1所示。Header中携带签名方法的具体参数说明及代码示例,请参见Header中携带签名。
步骤 |
示例 |
|
---|---|---|
签名计算 |
1. 构造HTTP消息 |
PUT /HTTP/1.1 Host: filesystem.sfs3.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 |
2. 按照签名规则计算StringToSign |
StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource |
|
3. 准备AK和SK |
AK: ****** SK: ****** |
|
4. 计算签名Signature |
Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) |
|
5. 添加签名头域发送到SFS服务 |
PUT /object HTTP/1.1 Host: filesystem.sfs3.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 Authorization: OBS AccessKeyID:Signature |
|
签名验证 |
6. 接收HTTP消息 |
PUT / HTTP/1.1 Host: filesystem.sfs3.cn-north-4.myhuaweicloud.com Date: Tue, 04 Jun 2019 06:54:59 GMT Content-Type: text/plain Content-Length: 5913 Authorization: OBS AccessKeyID:Signature |
7. 根据请求中的AK获取SK |
从头域Authorization中取出AK,去IAM取回用户的SK |
|
8. 按照签名规则计算StringToSign |
StringToSign = HTTP-Verb + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Date + "\n" + CanonicalizedHeaders + CanonicalizedResource |
|
9. 计算签名Signature |
Signature = Base64( HMAC-SHA1( SecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) |
|
10. 验证签名 |
验证头域Authorization中的Signature与服务端计算的Signature是否相等 相等:签名验证通过 不相等:签名验证失败 |