百度云存储BCS文件访问控制权限相关测试



如上图所示,在BCS管理控制台中文件访问权限简单的分为私有和公开,调用Get_Acl可以查看详细的ACL:





现在另一用户A想下载Hosts.apk和AppLock.apk两个文件,结果发现AppLock.apk无需URL签名就能下载,而Hosts.apk加了URL签名仍不能下载,提示用户验证失败即没有权限:



既是权限问题,我们调用Put_Acl设置用户A的下载权限:



再测试,用户A可以下载Hosts.apk了。接下来的问题是Bucket也有访问权限,它对文件访问有什么影响?



在官方文档中有如下说明:
引用内容 引用内容
bucket policy与object policy之间的关系:
·bucket类型的请求需要进行bucket policy的权限校验;
·object类型的请求同时进行bucket policy和object policy的权限校验;
·bucket policy与object policy间相互独立:相互独立在权限校验流程中的含义为:判断的先后不影响判定结果;
·policy合并的概念:由于policy内statement的相互独立和policy间的相互独立;在判定过程中,多个policy(p_1,p_2...p_n)合并一个policy(p),p = p_1 + p_2 + ...+ p_n。

附1:快速权限设置

通过提交statement可以非常详细的设置权限,例如上边添加用户A的下载权限,此外,还可以在请求头添加x-bs-acl快速设置权限,x-bs-acl值有private/public-read/public-write/public-read-write/public-control五种,下边分别测试与其对应的statement:



①.x-bs-acl: private
{"statements":[{"action":["*"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["psp:dnawo"]}]}

②.x-bs-acl: public-read
{"statements":[{"action":["*"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["psp:dnawo"]},{"action":["get_object"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["*"]}]}

③.x-bs-acl: public-write
{"statements":[{"action":["*"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["psp:dnawo"]},{"action":["put_object"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["*"]}]}

④.x-bs-acl: public-read-write
{"statements":[{"action":["*"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["psp:dnawo"]},{"action":["get_object","put_object"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["*"]}]}

⑤.x-bs-acl: public-control
{"statements":[{"action":["*"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["psp:dnawo"]},{"action":["*"],"effect":"allow","resource":["mzwu-disk1\/Hosts.apk"],"user":["*"]}]}

资料参考

[1].REST API:http://developer.baidu.com/wiki/index.php?title=docs/cplat/stor/api#Put_Acl
[2].URL签名算法:http://developer.baidu.com/wiki/index.php?title=docs/cplat/stor/access/signed-url
[3].ACL概述:http://developer.baidu.com/wiki/index.php?title=docs/cplat/bcs/access/acl
[4].policy语法介绍:http://developer.baidu.com/wiki/index.php?title=docs/cplat/bcs/access/acl/policy
[5].常见错误:http://developer.baidu.com/wiki/index.php?title=docs/cplat/bcs/access/acl/error

评论: 0 | 引用: 0 | 查看次数: 3446
发表评论
登录后再发表评论!