概述

本文介绍OSS常见403错误的描述及排查解决方法。

 

详细描述

以下介绍了OSS常见的几种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.   OSS防盗链
AccessDenied 见以下权限常见错误  无权限 下面详细讲述

 

权限常见错误描述

权限问题是当前用户没有指定操作的权限。OSS返回的错误及原因见下表。

错误 原因
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不符
ErrorCode: AccessDeniedErrorMessage: You are forbidden to list buckets. 无listBuckets权限
ErrorCode: AccessDeniedErrorMessage: You do not have write acl permission on this object 无setObjectAcl权限
ErrorCode: AccessDeniedErrorMessage: You do not have read acl permission on this object. 无getObjectAcl权限
ErrorCode: AccessDeniedErrorMessage: The bucket you access does not belong to you. 子用户没有Bucket管理的权限(如getBucketAcl CreateBucket、deleteBucket setBucketReferer、 getBucketReferer等)
ErrorCode: AccessDeniedErrorMessage: You have no right to access this object because of bucket acl. 子用户/临时用户没有访问Object的权限(如putObject getObject、appendObject deleteObject、postObject)等
ErrorCode: AccessDeniedErrorMessage: Access denied by authorizer’s policy. 临时用户访问无权限,该临时用户角色扮演指定授权策略,该授权策略无权限
ErrorCode: AccessDeniedErrorMessage: You have no right to access this object. 子用户/临时用户无当前操作权限(如initiateMultipartUpload等)

 

权限常见错误问题排查

说明:权限策略的生成推荐使用OSS授权策略生成工具RAM Policy Editor

 

如何辨别密钥是主用户或子用户还是临时用户

  • 是否是主用户的密钥:需要到控制台查看AccessKeyID是否存在,如果存在说明是主用户。
  • 查看子用户的权限,即该子用户的授权策略:在控制台选择 控制 > 用户管理 > 管理 > 用户详情 > 用户AccessKey,查看子用户的AccessKeyID,并找到对应的子用户;在控制台选择控制 > 用户管理 > 管理 > 用户授权策略 > 个人授权策略/加入组的授权策略查看子账户的权限
  • 查看临时用户的权限,即对应角色的权限:临时用户的密钥的AccessKeyID,以STS开头比较好辨认,如"STS.MpsSonrqGM8bGjR6CRKNMoHXe"。 在控制台选择 控制 > 角色管理 > 管理 > 角色授权策略查看权限

     

    权限检查流程

    1. 列出需要的权限和资源。
    2. 检查Action是否有需要的操作。
    3. 确认Resource是否为需要的操作对象。
    4. 确认Effect是Allow还是是Deny。
    5. 确认Condition是否正确。

     

    调试步骤

    如果检查无法发现错误,进行如下调试。

    1. 如果有Condition,需先将其删除。
    2. Effect中删除Deny
    3. Resource替换为"Resource": "*"
    4. Action替换为"Action": "oss:*"

     

    适用于

    • 对象存储 OSS