閱讀1020 返回首頁    go windows


Bucket權限分離__權限管理_最佳實踐_對象存儲 OSS-阿裏雲

再來考慮一種場景,已經有別的用戶在使用開發的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用戶指南

最後更新:2016-11-23 16:04:09

  上一篇:go 讀寫權限分離__權限管理_最佳實踐_對象存儲 OSS-阿裏雲
  下一篇:go STS臨時授權訪問__權限管理_最佳實踐_對象存儲 OSS-阿裏雲