故障现象
当 COS API、SDK 上传和下载资源时,返回403错误码。
当使用临时密钥或子账号访问 COS 资源时,返回403错误码。
当修改 COS bucket 配置时,返回403错误码。
故障分析思路
当 COS 请求出现403错误码时,可参考以下流程排查问题原因:
3. 检查请求是否是匿名请求,向非公有读的对象发起不带签名的请求,会返回 "Access Denied.",如要为存储桶或对象设置公有读,参考 设置访问权限 或 设置对象的访问权限。 4. 检查请求密钥和请求签名是否正确。
5. 检查发起请求的子账号或临时密钥是否授予了相应访问权限。
5.2 对于使用临时密钥发起的请求,申请临时密钥时填写的策略会限制临时密钥请求的资源范围,详见 临时密钥生成与使用指引。 故障定位及处理
Message 为 “Access Denied.”
当您访问 COS 出现如下信息时:
<Code>AccessDenied</Code>
<Message>Access Denied.</Message>
需要您执行以下操作:
2. 在左侧导航栏中,选择存储桶列表,进入存储桶管理页面。
3. 找到需要操作的存储桶,单击该存储桶名称,进入存储桶配置页面。
4. 在左侧导航栏中,选择权限管理 > 存储桶访问权限,进入存储桶访问权限管理页面。
5. 在“存储桶访问权限”栏中,检查访问 COS 的账号是否配置了访问权限。
是,请执行下一步。
否,请单击添加用户,为访问 COS 的账号设置所需权限。
6. 检查配置访问权限的账号是否具有所需权限。
是,请执行下一步。
否,请单击编辑,重新设置。
7. 在“Policy权限设置”栏中,检查访问 COS 的账号是否配置了 policy 授权策略。
注意
如果存储桶访问权限为私有读写,且 Policy 权限为匿名访问,那么 Policy 权限的优先级高于存储桶访问权限。
在 Policy 授权策略中,如果同一个子用户同时设置了允许和禁止策略,那么禁止策略的优先级高于允许策略。
在 Policy 授权策略中,“所有用户”策略的优先级低于“指定用户”策略。
是,请执行下一步。
否,请单击添加策略,根据实际签名访问时账号所需权限进行设置。
8. 检查配置 Policy 权限的账号是否具有所需权限。
是,请执行下一步。
否,请单击编辑,重新设置。
9. 检查访问 COS 资源时使用的 q-ak 参数是否为目标桶的所属账号(区分大小写)。
是,请执行下一步。
否,请将 q-ak 参数修改为相应的目标桶所属账号。
10. 检查访问 COS 资源时是否为跨账号访问。
是,请为该账号进行跨账号授权,详细操作请参见授权跨账号的子账号对指定文件的读写权限。
Message 为 “AccessForbidden”
当您访问 COS 出现如下信息时:
<Code>AccessDenied</Code>
<Message>AccessForbidden</Message>
需要您执行以下操作:
2. 在左侧导航栏中,选择存储桶列表,进入存储桶管理页面。
3. 找到需要操作的存储桶,单击该存储桶名称,进入存储桶配置页面。
4. 在左侧导航栏中,选择安全管理 > 跨域访问CORS设置,进入跨域访问 CORS 设置页面。
5. 在“跨域访问CORS设置”栏中,检查是否为跨域请求。
是,请执行下一步。
否,请修改规则。
6. 执行以下命令,检查跨域请求配置是否正确。
curl 'http://bucket-appid.cos.ap-guangzhou.myqcloud.com/object' -voa /dev/null -H 'Origin: 跨域访问CORS设置的来源 Origin'
Message 为 “You are denied by bucket referer rule”
当您访问 COS 出现如下信息时:
<Code>AccessDenied</Code>
<Message>You are denied by bucket referer rule</Message>
需要您执行以下操作:
2. 在左侧导航栏中,选择存储桶列表,进入存储桶管理页面。
3. 找到需要操作的存储桶,单击该存储桶名称,进入存储桶配置页面。
4. 在左侧导航栏中,选择安全管理 > 防盗链设置,进入防盗链设置页面。
5. 在“防盗链设置”中,检查是否设置了防盗链。
是,请执行下一步。
6. 执行以下命令,检查防盗链设置是否正确。
curl 'http://bucket-appid.cos.ap-guangzhou.myqcloud.com/object' -voa /dev/null -H 'referer: Referer 的值'
Message 为 “InvalidAccessKeyId”
当您访问 COS 出现如下信息时:
<Code>AccessDenied</Code>
<Message>InvalidAccessKeyId</Message>
需要您执行以下操作:
1. 检查请求签名中 Authorization 的 q-ak 参数是否填写正确。
是,请执行下一步。
否,请修改 q-ak 参数。密钥的 SecretId 需与 q-ak 参数保持一致,且区分大小写。
否,请启用该 API 密钥。
Message 为 “InvalidObjectState”
当您访问 COS 出现如下信息时:
<Code>AccessDenied</Code>
<Message>InvalidObjectState</Message>
需要您执行以下操作:
检查请求的对象是否为归档类型或深度归档类型。
Message 为 “RequestTimeTooSkewed”
当您访问 COS 出现如下信息时:
<Code>AccessDenied</Code>
<Message>RequestTimeTooSkewed</Message>
需要您执行以下操作:
1. 根据操作系统类型,查看客户端当前时间。
Windows 系统(以 Windwos Server 2012 为例): > 控制面板 > 时钟、语言和区域 > 设置日期和时间。 2. 判断客户端当前时间与服务器的时间是否存有偏差(时间偏差超过15分钟)。
是,请同步时间。
Message 为 “Request has expired”
当您访问 COS 出现如下信息时:
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
产生的可能原因如下:
发起请求的时间超过了签名的有效时间。
本地系统时间和所在时区的时间不一致。
需要您重新设置签名的有效时间,或者同步本地系统时间。若仍无法解决,请 联系我们。 Message 为 “SignatureDoesNotMatch”
当您访问 COS 出现如下信息时:
<Code>AccessDenied</Code>
<Message>SignatureDoesNotMatch</Message>
需要您执行以下操作:
检查客户端计算的签名与服务端计算的签名是否一致。
否,请参阅 请求签名 文档,并使用COS 签名工具检查自行实现的签名过程。
本页内容是否解决了您的问题?