閱讀1025 返回首頁    go 阿裏雲 go 技術社區[雲棲]


怎樣對OSS中的某個目錄進行授權___對象存儲(OSS)授權問題_授權常見問題_訪問控製-阿裏雲

OSS目錄級別的授權

目錄級別的授權屬於授權的高級功能,如果您有此類需求,請您認真閱讀並理解此部分。

背景

假設有一個用於存放照片的Bucket,叫myphotos。這個bucket下有一些目錄,代表照片的拍攝地;每個拍攝地目錄下又有年份子目錄。

目錄樹結構如下

  1. myphotos[Bucket]
  2. ├── beijing
  3. │ ├── 2014
  4. │ └── 2015
  5. ├── hangzhou
  6. │ ├── 2013
  7. │ ├── 2014
  8. │ └── 2015 //授予此目錄隻讀權限
  9. └── qingdao
  10. ├── 2014
  11. └── 2015

假設我們需要授權一個子用戶隻讀訪問myphotos/hangzhou/2015/目錄的隻讀權限。根據使用場景不同,授權策略也有很大的區別。下麵我們根據授權策略的複雜程度,由簡入繁的為大家介紹三種場景。

場景一:子用戶知道所有文件的路徑,隻需要讀取文件內容的權限,不需要列出文件的權限

這個場景的特點是子用戶知道文件的完整路徑,可以使用完整的文件路徑直接去讀取文件內容。通常我們會將這樣的權限授予一個軟件係統,係統中文件路徑符合某種規則(比如文件名是員工工號),或者文件路徑持久化在軟件係統的數據庫中。

  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": [
  7. "oss:GetObject"
  8. ],
  9. "Resource": [
  10. "acs:oss:*:*:myphotos/hangzhou/2015/*"
  11. ]
  12. }
  13. ]
  14. }

場景二:子用戶使用OSS CMD訪問目錄myphotos/hangzhou/2015/,但是不知道目錄中有哪些文件,需要列出目錄中文件的權限

通常會將這樣的權限授予軟件開發者。開發者不清楚目錄中究竟有哪些文件,然後使用OSS CMD或API直接獲取目錄信息。

場景一相比,這裏需要新增ListObjects的權限。因為我們僅允許列出myphotos/hangzhou/2015/目錄中的文件,所以在新增的ListObjects權限中,增加”oss:Prefix”的條件限定。

  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": [
  7. "oss:GetObject"
  8. ],
  9. "Resource": [
  10. "acs:oss:*:*:myphotos/hangzhou/2015/*"
  11. ]
  12. },
  13. {
  14. "Effect": "Allow",
  15. "Action": [
  16. "oss:ListObjects"
  17. ],
  18. "Resource": [
  19. "acs:oss:*:*:myphotos"
  20. ],
  21. "Condition":{
  22. "StringLike":{
  23. "oss:Prefix":"hangzhou/2015/*"
  24. }
  25. }
  26. }
  27. ]
  28. }

場景三:子用戶使用OSS控製台訪問目錄myphotos/hangzhou/2015/

最易用的場景,當子用戶使用可視化的OSS客戶端訪問目錄myphotos/hangzhou/2015/,可視化的客戶端像Windows文件管理器一樣,讓子用戶可以從根目錄開始,一層一層的進入所要訪問的目錄。

與場景二相比,使用OSS可視化客戶端時需要從從根目錄一層一層導航進入myphotos/hangzhou/2015/,所以需要新增以下權限

  1. 列出所有Bucket的權限
  2. 列出myphotos下目錄的權限,在這個例子中,即可以看到beijing/hangzhou/qingdao三個目錄
  3. 列出myphotos/hangzhou下的目錄的權限,即可以看到2013/2014/2015三個目錄
  1. {
  2. "Version": "1",
  3. "Statement": [
  4. {
  5. "Effect": "Allow",
  6. "Action": [
  7. "oss:ListBuckets",
  8. "oss:GetBucketAcl"
  9. ],
  10. "Resource": [
  11. "acs:oss:*:*:*"
  12. ]
  13. },
  14. {
  15. "Effect": "Allow",
  16. "Action": [
  17. "oss:GetObject",
  18. "oss:GetObjectAcl"
  19. ],
  20. "Resource": [
  21. "acs:oss:*:*:myphotos/hangzhou/2015/*"
  22. ]
  23. },
  24. {
  25. "Effect": "Allow",
  26. "Action": [
  27. "oss:ListObjects"
  28. ],
  29. "Resource": [
  30. "acs:oss:*:*:myphotos"
  31. ],
  32. "Condition": {
  33. "StringLike": {
  34. "oss:Delimiter": "/",
  35. "oss:Prefix": [
  36. "",
  37. "hangzhou/",
  38. "hangzhou/2015/*"
  39. ]
  40. }
  41. }
  42. }
  43. ]
  44. }

最後更新:2016-09-01 11:46:20

  上一篇:go 怎樣為一個子用戶授予隻讀訪問ECS的權限___雲服務器(ECS)授權問題_授權常見問題_訪問控製-阿裏雲
  下一篇:go 在哪裏可以查到OSS的權限定義___對象存儲(OSS)授權問題_授權常見問題_訪問控製-阿裏雲