阅读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-阿里云