全部产品
对象存储 OSS

Bucket权限分离

更新时间:2017-06-12 14:12:31   分享:   

再来考虑一种场景,已经有别的用户在使用开发的App,那么可以考虑用单独的Bucket来存储用户的App数据,假定为ram-test-app。那么考虑到权限隔离的问题,就不应该让应用服务器访问到ram-test-app,即仅授予ram_test_pub这个账号ram-test-dev的读权限。这也是可以通过RAM的权限系统来完成的。具体操作步骤如下:

  1. 由于系统中没有Bucket级别的默认策略,因此需要自定义策略,如下图示:

    这里Bucket访问的策略如下,其他更详细的可以参考 RAM策略的说明OSS授权问题FAQ

    1. {
    2. "Version": "1",
    3. "Statement": [
    4. {
    5. "Effect": "Allow",
    6. "Action": [
    7. "oss:ListObjects",
    8. "oss:GetObject"
    9. ],
    10. "Resource": [
    11. "acs:oss:*:*:ram-test-dev",
    12. "acs:oss:*:*:ram-test-dev/*"
    13. ]
    14. }
    15. ]
    16. }


    设置完成之后可以在自定义授权策略列表中看到。

  2. 在用户的授权管理中将该策略加入授权范围,并且在用户管理> 管理 >用户授权策略 中将之前授予的OSS全部可读权限解除。

  3. 测试权限设置的有效性。

    可以访问ram-test-dev的Object:

    1. $./osscmd get oss://ram-test-dev/test.txt test.txt --host=oss-cn-hangzhou.aliyuncs.com -i 9EzKokeQfGvJRQKu -k I4u6pLNhrQNKnpWQuM4szJfxhOLRGm
    2. 100% The object test.txt is downloaded to test.txt, please check.
    3. 0.047(s) elapsed

    访问ram-test-app的Object失败:

    1. $./osscmd get oss://ram-test-app/test.txt test.txt --host=oss-cn-hangzhou.aliyuncs.com -i 9EzKokeQfGvJRQKu -k I4u6pLNhrQNKnpWQuM4szJfxhOLRGm
    2. Error Headers:
    3. [('content-length', '229'), ('server', 'AliyunOSS'), ('connection', 'keep-alive'), ('x-oss-request-id', '5646ED53F9EEA2F3324191A2'), ('date', 'Sat, 14 Nov 2015 08:14:11 GMT'), ('content-type', 'application/xml')]
    4. Error Body:
    5. <?xml version="1.0" encoding="UTF-8"?>
    6. <Error>
    7. <Code>AccessDenied</Code>
    8. <Message>AccessDenied</Message>
    9. <RequestId>5646ED53F9EEA2F3324191A2</RequestId>
    10. <HostId>ram-test-app.oss-cn-hangzhou.aliyuncs.com</HostId>
    11. </Error>
    12. Error Status:
    13. 403
    14. get Failed!

    上传文件到oss-test-app也失败:

    1. $./osscmd put test.txt oss://ram-test-app/test.txt --host=oss-cn-hangzhou.aliyuncs.com -i 9EzKokeQfGvJRQKu -k I4u6pLNhrQNKnpWQuM4szJfxhOLRGm
    2. 100% Error Headers:
    3. [('content-length', '229'), ('server', 'AliyunOSS'), ('connection', 'keep-alive'), ('x-oss-request-id', '5646ED7BB8DE437A912DC7A8'), ('date', 'Sat, 14 Nov 2015 08:14:51 GMT'), ('content-type', 'application/xml')]
    4. Error Body:
    5. <?xml version="1.0" encoding="UTF-8"?>
    6. <Error>
    7. <Code>AccessDenied</Code>
    8. <Message>AccessDenied</Message>
    9. <RequestId>5646ED7BB8DE437A912DC7A8</RequestId>
    10. <HostId>ram-test-app.oss-cn-hangzhou.aliyuncs.com</HostId>
    11. </Error>
    12. Error Status:
    13. 403
    14. put Failed!

通过上文的设置,就成功的将ram-test-dev和ram-test-app的权限完全区分开了。

上面介绍的主要是如何使用子账号的权限控制功能来分割权限,将信息泄露造成的危害降到最低。

如果用户有更复杂的权限控制需求,也可以参考 RAM用户指南

本文导读目录
本文导读目录
以上内容是否对您有帮助?