admin管理员组

文章数量:1794759

【阿里云OSS】403错误,AccessDenied:The bucket you access does not belong to you.

【阿里云OSS】403错误,AccessDenied:The bucket you access does not belong to you.

前言

  • Browser.js 6.x
Browser.js

官方文档:help.aliyun/document_detail/64040.html GITHUB地址:gitee/mirrors/ali-OSS GITEE镜像地址:github/ali-sdk/ali-oss

示例:列出所有对象(测试bucket,对象数量较少) <html> <head> </head> <body></body> <!-- Introducing online resources --> <script src="aliyun-oss-sdk.min.js"></script> <script type="text/javascript"> const client = new OSS({ region: 'oss-cn-beijing', accessKeyId: 'STS.NTbFYrajjBxfz9zTKxxxxxxx', accessKeySecret: 'GcvcZfGkkEd4fJfQu9gVDMjxvXxxxxxxxxxxxx', stsToken: 'CAISgAJ1q6Ft5B2yfSjIr5fXDePGjLVL9bqNeB/LsEsdfxxxxxxxxxxxxxxxxxxxx...xxxxxxx=', refreshSTSToken: async () => { const info = await fetch('you sts server'); return { accessKeyId: info.accessKeyId, accessKeySecret: info.accessKeySecret, stsToken: info.stsToken } }, refreshSTSTokenInterval: 300000, bucket: 'bucket name' }); client.list().then((result) => { console.log('object list : ', result.objects); }); </script> </html> 遇到错误

执行示例后,遇到403错误:AccessDenied:The bucket you access does not belong to you.

分析 现象1
  • 使用 accessKeyId、accessKeySecret 执行示例,没有错误。
  • 使用STS生成的accessKeyId、accessKeySecret、stsToken执行示例,出现403错误。

可以判定错误与STS相关。

现象2
  • 403错误:AccessDenied:The bucket you access does not belong to you.

经过查找,找到2个相关的文档:

  • 阿里云 The bucket you access does not belong to you
  • 访问OSS时出现403状态码的排查方法

可以判定错误为:没有权限访问此bucket。

综合现象1和现象2,可以判定错误为:使用STS方式时,没有权限访问此bucket。

错误原因
  • 与STS方式相关的说明略(可参考这里)。
  • 使用STS方式时,需要创建RAM用户,再创建RAM角色。
  • 使用STS方式创建授权时,对于Policy:如果指定该权限策略,则STS Token最终的权限策略取RAM角色权限策略与该权限策略的交集;如果不指定该权限策略,则STS Token最终的权限策略取RAM角色的权限策略。

本次错误因RAM角色的权限策略引起:RAM用户具备操作bucket的权限,RAM角色不具备操作bucket的权限。

解决办法

为RAM角色添加操作bucket的权限(AliyunOSSFullAccess)。

本文标签: 阿里错误OSSbelongbucket