开发者社区 问答 正文

STS临时授权访问OSS

使用OSS 通过阿里云 STS (Security Token Service) 进行临时授权访问后发现我上传和下载图片时总是报Access denied by authorizer's policy.,
具体表现为,我在阿里云中的oss中获取已经上传的图片,发现使用:https://bw-test.oss-cn-hangzhou.aliyuncs.com/20190212/20190212180222367d70e42f2946dda89eb355207d7ba1.jpg?Expires=1549969359&OSSAccessKeyId=TMP.AQGucyDw63ACSoNWy0dBXZbL622jEPN_NmfI24SpxcglZf9SRs9h36cIWxTwADAtAhQpiLgqC4-NzORi8JkJdNineXW5TgIVAJtMeSVDVgy9GOR0FXv23A4z5tJW&Signature=ls0Wg306IgBzdegml3DZspjVo4A%3D可以访问
但是使用https://bw-test.oss-cn-hangzhou.aliyuncs.com/20190212/20190212180222367d70e42f2946dda89eb355207d7ba1.jpg就无法访问,导致后台的图片无法展示或者图片无法上传
要想解决这个问题要如何操作?

展开
收起
224789048204962199 2019-02-12 19:47:48 1307 分享 版权
阿里云 AI 助理回答
  1. 问题描述: 您在使用阿里云OSS服务,并通过STS(Security Token Service)获取临时授权访问权限后,尝试上传和下载图片时遇到错误信息:“Access denied by authorizer's policy.”。具体场景包括直接从OSS中获取已上传图片的URL进行访问时也遇到权限拒绝。

  2. 可能原因

    • Policy限制:STS生成的Token中的Policy设置过于严格或不正确,未包含必要的OSS操作权限(如oss:PutObject用于上传,oss:GetObject用于下载)。
    • 权限覆盖问题:用户角色原有的权限与Token中的Policy权限未能有效结合,导致实际可用权限不足。
    • 凭证有效期:STS临时凭证可能已经过期,导致权限验证失败。
    • 资源路径不匹配:Policy中指定的Bucket或对象路径与实际操作的不一致,导致权限拒绝。
  3. 解决方案

    • 检查并调整Policy配置

      1. 确认您的STS生成策略中是否包含了所需的OSS操作权限,例如确保下载图片时包含oss:GetObject权限。
      2. 根据操作需求,适当放宽或细化Policy规则,确保它能够覆盖到您需要访问的所有Bucket和对象路径。
      3. 参考示例策略,确保自定义权限策略正确无误,比如允许对特定Bucket下的所有对象执行Get操作。
    • 验证STS Token有效性

      1. 确认STS Token的有效时间,确保在调用OSS API时Token未过期。
      2. 使用正确的AccessKeyId、AccessKeySecret及SecurityToken组合进行操作。
    • 审查RAM角色权限

      1. 确保扮演的RAM角色已正确附加了允许OSS操作的自定义策略,如上文提到的RamTestPolicy示例。
      2. 检查是否有其他更高级别的策略限制了角色的权限。
    • 测试与调试

      1. 使用STS临时凭证直接通过API或SDK尝试上传/下载操作,以排除URL签名方式的特定问题。
      2. 查看STS服务日志和OSS操作日志,寻找权限拒绝的具体原因。
  4. 注意事项

    • 最小权限原则:在赋予权限时遵循最小权限原则,仅授予完成任务所必需的最小权限集。
    • 定期审核权限:定期检查和更新RAM角色及STS Policy,确保权限分配符合当前的安全需求和合规标准。

如果以上步骤不能解决问题,请考虑联系阿里云技术支持获取进一步的帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答