464
windows
權限控製__移動應用端直傳實踐_最佳實踐_對象存儲 OSS-阿裏雲
本文基於30分鍾快速搭建移動應用直傳服務 中提到的應用服務器,以上海的Bucket app-base-oss
為例子,配置不同的Policy以實現不同的權限控製。以下說明中假設您已經開通了STS,並完全閱讀了30分鍾快速搭建移動應用直傳服務。以下提到的Policy都是上文提到的config.json中指定的Policy文件的內容。以下講述的獲取STS Token 後對OSS操作
指的是應用服務器指定Policy,從STS獲取臨時憑證後,應用通過臨時憑證訪問OSS。
常見Policy
完全授權的Policy
上文為了演示方便,默認Policy如下,表示的意思是允許應用對所有OSS的操作。這對移動應用來說也是不安全的授權,不推薦。
{
"Statement": [
{
"Action": [
"oss:*"
],
"Effect": "Allow",
"Resource": ["acs:oss:*:*:*"]
}
],
"Version": "1"
}
獲取STS Token 後對OSS操作 | 結果 |
---|---|
列出所有創建的Bucket | 成功 |
上傳不帶前綴的Object,test.txt | 成功 |
下載不帶前綴的Object, test.txt | 成功 |
上傳帶前綴的Object, user1/test.txt | 成功 |
下載帶前綴的Object, user1/test.txt | 成功 |
列出Object, test.txt | 成功 |
帶前綴的Object, user1/test.txt | 成功 |
隻讀不寫的Policy
不限製前綴的隻讀不寫Policy
這個Policy表示,應用可以對Bucket app-base-oss
下所有的Object可列舉,可下載。
{
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:ListObjects"
],
"Effect": "Allow",
"Resource": ["acs:oss:*:*:app-base-oss/*", "acs:oss:*:*:app-base-oss"]
}
],
"Version": "1"
}
獲取STS Token 後對OSS操作 | 結果 |
---|---|
列出所有創建的Bucket | 失敗 |
上傳不帶前綴的Object,test.txt | 失敗 |
下載不帶前綴的Object, test.txt | 成功 |
上傳帶前綴的Object, user1/test.txt | 失敗 |
下載帶前綴的Object, user1/test.txt | 成功 |
列出Object, test.txt | 成功 |
帶前綴的Object, user1/test.txt | 成功 |
限製前綴的隻讀不寫Policy
這個Policy表示,應用可以對Bucket app-base-oss
下帶有前綴user1/
的Object可列舉,可下載。但無法下載其他前綴的Object。這樣不同的應用如果對應不同的前綴,就可以達到在同一個bucket中空間隔離的效果。
{
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:ListObjects"
],
"Effect": "Allow",
"Resource": ["acs:oss:*:*:app-base-oss/user1/*", "acs:oss:*:*:app-base-oss"]
}
],
"Version": "1"
}
獲取STS Token 後對OSS操作 | 結果 |
---|---|
列出所有創建的Bucket | 失敗 |
上傳不帶前綴的Object,test.txt | 失敗 |
下載不帶前綴的Object, test.txt | 失敗 |
上傳帶前綴的Object, user1/test.txt | 失敗 |
下載帶前綴的Object, user1/test.txt | 成功 |
列出Object, test.txt | 成功 |
帶前綴的Object, user1/test.txt | 成功 |
隻寫不讀的Policy
不限製前綴的隻寫不讀Policy
這個Policy表示,應用可以對Bucket app-base-oss
下所有的Object進行上傳。
{
"Statement": [
{
"Action": [
"oss:PutObject"
],
"Effect": "Allow",
"Resource": ["acs:oss:*:*:app-base-oss/*", "acs:oss:*:*:app-base-oss"]
}
],
"Version": "1"
}
獲取STS Token 後對OSS操作 | 結果 |
---|---|
列出所有創建的Bucket | 失敗 |
上傳不帶前綴的Object,test.txt | 成功 |
下載不帶前綴的Object, test.txt | 失敗 |
上傳帶前綴的Object, user1/test.txt | 成功 |
下載帶前綴的Object, user1/test.txt | 失敗 |
列出Object, test.txt | 失敗 |
帶前綴的Object, user1/test.txt | 失敗 |
限製前綴的隻寫不讀Policy
這個Policy表示,應用可以對Bucket app-base-oss
下帶有前綴user1/
的Object進行上傳。但無法上傳其他前綴的Object。這樣不同的應用如果對應不同的前綴,就可以達到在同一個bucket中空間隔離的效果。
{
"Statement": [
{
"Action": [
"oss:PutObject"
],
"Effect": "Allow",
"Resource": ["acs:oss:*:*:app-base-oss/user1/*", "acs:oss:*:*:app-base-oss"]
}
],
"Version": "1"
}
獲取STS Token 後對OSS操作 | 結果 |
---|---|
列出所有創建的Bucket | 失敗 |
上傳不帶前綴的Object,test.txt | 失敗 |
下載不帶前綴的Object,test.txt | 失敗 |
上傳帶前綴的Object,user1/test.txt | 成功 |
下載帶前綴的Object,user1/test.txt | 失敗 |
列出Object,test.txt | 失敗 |
帶前綴的Object,user1/test.txt | 失敗 |
讀寫的Policy
不限製前綴的讀寫Policy
這個Policy表示,應用可以對Bucket app-base-oss
下所有的Object進行列舉、下載、上傳和刪除。
{
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:PutObject",
"oss:DeleteObject",
"oss:ListParts",
"oss:AbortMultipartUpload",
"oss:ListObjects"
],
"Effect": "Allow",
"Resource": ["acs:oss:*:*:app-base-oss/*", "acs:oss:*:*:app-base-oss"]
}
],
"Version": "1"
}
獲取STS Token 後對OSS操作 | 結果 |
---|---|
列出所有創建的Bucket | 失敗 |
上傳不帶前綴的Object,test.txt | 成功 |
下載不帶前綴的Object, test.txt | 成功 |
上傳帶前綴的Object, user1/test.txt | 成功 |
下載帶前綴的Object, user1/test.txt | 成功 |
列出Object, test.txt | 成功 |
帶前綴的Object, user1/test.txt | 成功 |
限製前綴的讀寫Policy
這個Policy表示,應用可以對Bucket app-base-oss
下帶有前綴user1/
的Object進行列舉、下載、上傳和刪除。但無法對其他前綴的Object進行讀寫。這樣不同的應用如果對應不同的前綴,就可以達到在同一個bucket中空間隔離的效果。
{
"Statement": [
{
"Action": [
"oss:GetObject",
"oss:PutObject",
"oss:DeleteObject",
"oss:ListParts",
"oss:AbortMultipartUpload",
"oss:ListObjects"
],
"Effect": "Allow",
"Resource": ["acs:oss:*:*:app-base-oss/user1/*", "acs:oss:*:*:app-base-oss"]
}
],
"Version": "1"
}
獲取STS Token 後對OSS操作 | 結果 |
---|---|
列出所有創建的Bucket | 失敗 |
上傳不帶前綴的Object,test.txt | 失敗 |
下載不帶前綴的Object,test.txt | 失敗 |
上傳帶前綴的Object,user1/test.txt | 成功 |
下載帶前綴的Object,user1/test.txt | 成功 |
列出Object,test.txt | 成功 |
帶前綴的Object,user1/test.txt | 成功 |
小結
從上麵的例子可以看出:
- 可以根據不同的應用場景製定不同的Policy,然後對應用服務器稍作修改就可以實現對不用的應用用戶實現不同的權限控製。
- 也可以在應用端做優化,在STS Token過期之前不需要向應用服務器再次請求。
- 需要特別注意的是Token實際是由STS頒發的,應用服務器相當於定製了Policy,向STS請求Token,然後將Token轉發給應用。這裏的Token是一個簡略的說法。實際上包含了“AccessKeyId”、“AccessKeySecret”、“Expiration”、“SecurityToken”,這些在OSS提供給應用的SDK中會用到。詳細參見各個SDK的實現。
更多參考資料
最後更新:2016-11-23 16:04:09
上一篇:
快速搭建移動應用直傳服務__移動應用端直傳實踐_最佳實踐_對象存儲 OSS-阿裏雲
下一篇:
快速搭建移動應用上傳回調服務__移動應用端直傳實踐_最佳實踐_對象存儲 OSS-阿裏雲
目標模式__場景製定_使用手冊_性能測試-阿裏雲
震驚!阿裏雲安全指揮中心揭開廬山真麵目!
使用管理VPN__金融雲新手上路_金融雲-阿裏雲
消息加密傳輸__最佳實踐_消息服務-阿裏雲
雲服務器 ECS FTP上傳經常中斷
設備接入準備__產品管理_控製台使用手冊_阿裏雲物聯網套件-阿裏雲
修改實例管理終端口令__實例相關接口_API 參考_雲服務器 ECS-阿裏雲
不同REGION ECS無法加入負載均衡實例__常見問題_負載均衡-阿裏雲
分區設計__最佳實踐_雲數據庫 PetaData-阿裏雲
DescribeZones__LoadBalancer相關API_API 參考_負載均衡-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲