全部产品
Search
文档中心

使用STS中的AssumeRole接口访问OSS资源时常见的错误及错误原因

编辑
更新时间: 2020-05-18 编辑

概述

本文介绍使用STS(安全令牌)中的AssumeRole(角色扮演)接口访问OSS资源时常见的错误及错误原因。

详细描述

角色扮演常见错误及原因如下。

错误 原因
ErrorCode: NoPermission ErrorMessage: Roles may not be assumed by root accounts. 使用主用户的密钥调用AssumeRole,请使用子用户的密钥。
ErrorCode: MissingSecurityToken ErrorMessage: SecurityToken is mandatory for this action. 使用临时用户的密钥调用AssumeRole,请使用子用户的密钥。
Error code: InvalidAccessKeyId.NotFound Error message: Specified access key is not found AccessKeyId无效,请检查是否写错,特别注意前后不能有空格。
Error code: InvalidAccessKeyId.Inactive Error message: Specified access key is disabled. 使用的子用户的密钥已经被禁止,请启用密钥或更换密钥。 密钥是否被禁止,请通过控制台的访问控制>用户管理>管理>用户详情>用户AccessKey确认,并开启。
ErrorCode: InvalidParameter.PolicyGrammar ErrorMessage: The parameter Policy has not passed grammar check. 角色扮演时指定的授权策略无效。角色扮演时可以指定授权(Policy),也可以不指定。如果指定授权策略,则临时用户的权限是指定的授权策略和角色权限的交集;如果不指定授权策略,临时用户的权限是角色的权限。报该错误时,请检查指定的授权策略Policy。不推荐临时用户扮演角色时指定授权策略。如果的确需要使用授权策略,强烈建议使用RAM Policy Editor生成授权策略。
ErrorCode: InvalidParameter.RoleSessionNameErrorMessage: The parameter RoleSessionName is wrongly formed. 角色扮演时指定RoleSessionName无效。此参数用来区分不同的Token,以标明谁在使用此Token,便于审计。格式:^[a-zA-Z0-9.@-_]+$,2-32个字符。了解更多请参考文档扮演角色操作接口。如命名a,1,abc\*abc,忍者神龟等都是非法的。
ErrorCode: InvalidParameter.DurationSeconds Error message: The Min/Max value of DurationSeconds is 15min/1hr. 角色扮演时指定的过期时间无效,即AssumeRoleRequest.setDurationSeconds参数无效。角色扮演时可以指定过期时间,单位为秒,有效时间是900~3600秒,如assumeRoleRequest.setDurationSeconds(60 L * 20),20分钟内有效。
ErrorCode: NoPermissionErrorMessage: No permission perform sts:AssumeRole on this Role. Maybe you are not authorized to perform sts:AssumeRole or the specified role does not trust you.
  • 原因1:AssumeRole的子用户没有权限,请给子用户授予AliyunSTSAssumeRoleAccess系统授权策略。
  • 原因2:申请角色扮演的子用户的云账号ID与角色的受信云账号ID不符,请角色创建者确认并修改。子用户的云账号ID,即创建子用户的主用户的ID;角色的云账号ID,即创建角色的主用户的云账号ID。
  • 原因3:角色的类型错误,如果角色的类型分为用户角色和服务角色,服务角色不能使用AssumeRole扮演临时用户。
说明:
  • Java角色扮演的示例,请参看GitHub
  • 如果还有更多与 AssumeRole(角色扮演)相关的示例,请参考STS SDK概览

适用于

  • 对象存储OSS
  • 访问控制