全部產品
Search
文件中心

:OSS 許可權問題及排查

更新時間:Jun 01, 2023

OSS 403問題

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

錯誤

錯誤碼錯誤資訊

錯誤原因

解決辦法

SignatureDoesNotMatch

ErrorCode: SignatureDoesNotMatchErrorMessage: The request signature we calculated does not match the signature you provided. Check your key and signing method.

客戶端和服務計算的簽名不符

OSS 403錯誤及排查

PostObject

ErrorCode: AccessDeniedErrorMessage: Invalid according to Policy: Policy expired.ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: …

PostObject中Policy無效

PostObject

Cors

ErrorCode: AccessForbiddenErrorMessage: 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: AccessDeniedErrorMessage: You are denied by bucket referer policy.

請檢查Bucket的Referer配置

OSS防盜鏈

AccessDenied

見以下許可權常見錯誤

無許可權

下面詳細講述

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

許可權常見錯誤

許可權問題是目前使用者沒有指定操作的許可權。OSS返回的錯誤及原因見下表:

序號

錯誤

原因

1

ErrorCode: AccessDeniedErrorMessage: 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: AccessDeniedErrorMessage: You are forbidden to list buckets.

無listBuckets許可權

3

ErrorCode: AccessDeniedErrorMessage: You do not have write acl permission on this object

無setObjectAcl許可權

4

ErrorCode: AccessDeniedErrorMessage: You do not have read acl permission on this object.

無getObjectAcl許可權

5

ErrorCode: AccessDeniedErrorMessage: The bucket you visit is not belong to you.

子用戶沒有Bucket管理的許可權(如getBucketAcl CreateBucket、deleteBucket setBucketReferer、 getBucketReferer等)

6

ErrorCode: AccessDeniedErrorMessage: You have no right to access this object because of bucket acl.

子用戶/臨時用戶沒有訪問Object的許可權(如putObject getObject、appendObject deleteObject、postObject)等

7

ErrorCode: AccessDeniedErrorMessage: Access denied by authorizer’s policy.

臨時用戶訪問無許可權,該臨時使用者角色扮演指定授權策略,該授權策略無許可權

8

ErrorCode: AccessDeniedErrorMessage: You have no right to access this object.

子用戶/臨時用戶無當前操作許可權(如initiateMultipartUpload等)

許可權問題排查

辨別密鑰是主用戶、子用戶還是臨時用戶的。

  • 是否是主用戶的密鑰:

    需要到控制台查看AccessKeyID是否存在,如果存在說明是主用戶。

  • 查看子用戶的許可權,即該子用戶的授權策略:

    在控制台存取控制 > 用戶管理 > 管理 > 用戶詳情 > 用戶AccessKey,查看子用戶的AccessKeyID,並找到對應的子用戶;在控制台存取控制 > 用戶管理 > 管理 > 用戶授權策略 > 個人授權策略/加入組的授權策略 > 查看子賬戶的許可權

  • 查看臨時用戶的許可權,即對應角色的許可權:

    臨時用戶的密鑰的AccessKeyID,以STS開頭比較好辨認,如“STS.MpsSonrqGM8bGjR6CRKNM****”。 在控制台存取控制 > 角色管理 > 管理 > 角色授權策略 > 查看許可權

存取權限錯誤流程如下圖:

許可權檢查流程如下:

  1. 列出需要的許可權和資源。

  2. 檢查Action是否有需要的操作。

  3. Resource是否是需要的操作對象。

  4. Effect是否是Allow而不是Deny。

  5. Condition是否正確。

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

  1. 如果有Condition的話先將其去掉。

  2. Effect中去除Deny。

  3. Resource換成”Resource”: “*”。

  4. Action換成”Action”: “oss:*”。

說明