STS中临时授权时出现“You are not authorized to do this action. You should be authorized by RAM“报错

STS中临时授权时出现“You are not authorized to do this action. You should be authorized by RAM“报错

更新时间:2020-08-24 16:35:06

问题描述

使用STS临时授权的方式可以操作OSS实现上传、下载等功能,在使用代码实现授权时出现以下报错。

Error message: You are not authorized to do this action. You should be authorized by RAM.

问题原因

出现报错存在的部分原因如下:

  • 原因一:代码中使用的AccessKey和AccessKeySecret是主账号的,并非RAM用户的。
  • 原因二:没有为RAM用户添加AliyunSTSAssumeRoleAccess系统策略。
  • 原因三:代码中使用的RoleARN参数对应的角色不是用户角色,而是服务角色。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

原因一的解决方法

在代码中使用RAM用户的AccessKey和AccessKeySecret。

原因二的解决方法

登录RAM访问控制的控制台,进入人员管理页面,单击用户,然后单击指定RAM用户名,在权限管理页面中,确认该RAM用户的已被授权AliyunSTSAssumeRoleAccess系统策略。

原因三的解决方法

需要确定代码中使用的RoleARN参数对应的角色是用户角色。可参考以下两种方法进行RAM用户的角色判定。

创建RAM用户角色时进行判定

RAM用户角色的定义在创建RAM角色时可参考下图分辨。其中,阿里云账号为用户角色,阿里云服务为服务角色。

通过策略信息进行判定

登录主账号控制台,进入人员管理页面,单击RAM角色管理,选择指定RAM用户,在基本信息页面中,单击信任策略管理,进行RAM用户的角色判定。判定方法如下图所示,在信任策略管理中,若选中区域为RAM,则为用户角色,若选中区域为Service,则为服务角色。

相关文档

适用于

  • 对象存储OSS