閱讀1147 返回首頁    go 阿裏雲


OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲

OSS 403問題

OSS 403指OSS返回的HTTP狀態碼是403,可以簡單的理解為沒有權限訪問,服務器收到請求但拒絕提供服務。OSS 403錯誤及原因如下表:

錯誤 錯誤碼錯誤信息 錯誤原因 解決辦法
UserDisable.UserDisable ErrorCode: UserDisable
ErrorMessage: UserDisable
用戶欠費或者因為安全原因被禁止訪問 OSS 403錯誤及排查
RequestTimeTooSkewed ErrorCode: RequestTimeTooSkewed
ErrorMessage: The difference between the request time and the current time is too large.
發起請求的時間和服務器時間超出15分鍾,一般是客戶端係統時間錯誤 OSS 403錯誤及排查
InvalidAccessKeyId ErrorCode: InvalidAccessKeyId
ErrorMessage: The OSS Access Key Id you provided does not exist in our records.
AccessKeyId無效、被禁止、或者過期。 OSS 403錯誤及排查
SignatureDoesNotMatch ErrorCode: SignatureDoesNotMatch
ErrorMessage: The request signature we calculated does not match the signature you provided. Check your key and signing method.
客戶端和服務計算的簽名不符 OSS 403錯誤及排查
PostObject ErrorCode: AccessDenied
ErrorMessage: Invalid according to Policy: Policy expired.
ErrorCode: AccessDenied
ErrorMessage: Invalid according to Policy: Policy Condition failed: …
PostObject中Policy無效 PostObject
Cors ErrorCode: AccessForbidden
ErrorMessage: CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource’s CORS spec.
CORS沒有配置或配置不對 OSS設置跨域訪問
Refers ErrorCode: AccessDenied
ErrorMessage: You are denied by bucket referer policy.
請檢查Bucket的Referer配置 OSS防盜鏈
AccessDenied 見以下權限常見錯誤 無權限 下麵詳細講述

其中,權限問題是403錯誤的一部分。權限問題的錯誤是AccessDenied。以下將詳細講述這類錯誤。

權限常見錯誤

權限問題是當前用戶沒有指定操作的權限。OSS返回的錯誤及原因見下表:

序號 錯誤 原因
1 ErrorCode: AccessDenied
ErrorMessage: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
Bucket和Endpoint不符
2 ErrorCode: AccessDenied
ErrorMessage: You are forbidden to list buckets.
無listBuckets權限
3 ErrorCode: AccessDenied
ErrorMessage: You do not have write acl permission on this object
無setObjectAcl權限
4 ErrorCode: AccessDenied
ErrorMessage: You do not have read acl permission on this object.
無getObjectAcl權限
5 ErrorCode: AccessDenied
ErrorMessage: The bucket you visit is not belong to you.
子用戶沒有Bucket管理的權限(如getBucketAcl CreateBucket、deleteBucket setBucketReferer、 getBucketReferer等)
6 ErrorCode: AccessDenied
ErrorMessage: You have no right to access this object because of bucket acl.
子用戶/臨時用戶沒有訪問Object的權限(如putObject getObject、appendObject deleteObject、postObject)等
7 ErrorCode: AccessDenied
ErrorMessage: Access denied by authorizer’s policy.
臨時用戶訪問無權限,該臨時用戶角色扮演指定授權策略,該授權策略無權限
8 ErrorCode: AccessDenied
ErrorMessage: You have no right to access this object.
子用戶/臨時用戶無當前操作權限(如initiateMultipartUpload等)

權限問題排查

先熟悉如下操作:

  • 辨別密鑰是主用戶、子用戶還是臨時用戶的。
    臨時的用戶的密鑰的AccessKeyID,以STS開頭比較好辨認,如“STS.MpsSonrqGM8bGjR6CRKNMoHXe”。是否是主用戶的密鑰,需要到 控製台 查看AccessKeyID是否存在,如果存在說明是主用戶;如果不存在,該用戶是子用戶。在 訪問控製 > 用戶管理 > 管理 > 用戶詳情 > 用戶AccessKey,查看子用戶的AccessKeyID,並找到對應的子用戶。
  • 查看子帳號的權限,即授權策略。
    在控製台的如下位置查看:訪問控製 > 用戶管理 > 管理操作下方)> 用戶授權策略 > 個人授權策略/用戶授權策略 > 查看權限

  • 查看臨時賬號的權限。
    在控製台的如下位置查看:臨時用戶 > 訪問控製 > 角色管理 > 管理操作下方)> 用戶授權策略 -> 查看權限

訪問權限錯誤流程如下圖:

pic-1

權限檢查流程如下:

  1. 列出需要的權限和資源。
  2. 檢查 Action是否有需要的操作。
  3. Resource是否是需要的操作對象。
  4. Effect是否是Allow而不是Deny。
  5. Condition是否正確。

如果檢查無法發現錯誤,需要調試步驟如下:

  1. 如果有Condition的話先將其去掉。
  2. Effect中去除Deny。
  3. Resource換成 “Resource”: “*”。
  4. Action換成 “Action”: “oss:*”。

提示:

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

  上一篇:go 圖片處理__安卓應用示例_最佳實踐_對象存儲 OSS-阿裏雲
  下一篇:go OSS跨域資源共享(CORS)錯誤及排除__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲