You need to enable JavaScript to run this app.
导航

AssumeRole(通过角色扮演获取临时安全令牌)

最近更新时间2024.02.28 14:57:56

首次发布时间2021.12.21 14:07:34

描述

通过此角色扮演接口,可获取到角色所属账号的临时安全令牌,从而以角色所属账号的身份来访问云资源。
注意:使用临时安全凭证请求API时,需要将SessionToken作为公共参数放在Header中,参考公共参数文档。此接口的Service为sts,接入地址为sts.volcengineapi.com。
该接口仅无法使用主账号AK/SK访问,使用IAM子用户访问该接口时需要为用户添加接口的访问权限(可通过关联STSAssumeRoleAccess策略为子用户赋予该权限)。

请求参数

请求方式: HTTP GET

参数
类型必填描述
ActionStringYAssumeRole
VersionStringY2018-01-01
RoleTrnStringY需要扮演的角色Trn,格式为trn:iam::${AccountId}:role/${RoleName}。其中${AccountId}需要填入角色所属的主账号ID,${RoleName}需要填入实际的角色名称。例如账号ID为2000012345的账号内角色名为myRole的角色对应的RoleTrn为trn:iam::2000012345:role/myRole
RoleSessionNameStringY本次session的临时名称
DurationSecondsIntegerN临时密钥有效时长(单位:秒),最短支持900,最长支持43200。若未传入该值或传入的值小于900,则默认按3600执行,若传入的值大于43200,则默认按43200执行
PolicyStringNinline policy,内嵌权限策略,可用于限制产生的临时凭证的权限范围。最终权限将取内联策略与角色策略的权限交集,策略语法书写格式参考策略语法介绍

返回参数

业务的Result结构定义:

参数类型是否必须描述
CredentialsDataTypes. CredentialsY凭证结构
AssumedRoleUserDataTypes. AssumedRoleUserY临时凭证基本信息

Credentials结构定义

参数类型是否必须描述
CurrentTimeDateTimeY生成时间,RFC3999时间格式
ExpiredTimeDateTimeY过期时间,RFC3999时间格式
AccessKeyIdStringY临时凭证AK
SecretAccessKeyStringY临时凭证SK
SessionTokenStringY使用临时凭证时需要传递的Token

AssumedRoleUser结构定义

参数类型是否必须描述
TrnStringY当前身份完整的Trn表述
AssumedRoleIdStringY由Role信息和Session内部组成的当前身份ID

示例

请求示例

GET /?RoleTrn=trn:iam::200000****:role/example-role&RoleSessionName=assumeroledemo&Action=AssumeRole&Version=2018-01-01 HTTP/1.1
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Host: sts.volcengineapi.com
X-Date: 20180614T131357Z
Authorization: HMAC-SHA256 Credential=AKLT4MQ/20180614/cn-north-1/sts/request, SignedHeaders=accept;content-type;host;x-date, Signature=83671ac2**8a5581f

返回示例

成功返回结果

{
    "ResponseMetadata": {
        "RequestId": "202104124922",
        "Action": "AssumeRole",
        "Version": "2018-01-01",
        "Service": "sts"
    },
    "Result": {
        "Credentials": {
            "CurrentTime": "2021-04-12T10:57:09+08:00",
            "ExpiredTime": "2021-04-12T11:57:09+08:00",
            "AccessKeyId": "AKTPODg0MzV**2ZDcxMDg",
            "SecretAccessKey": "TVRNNVlqRmxPR1**mRoTkdWbE1ESQ==",
            "SessionToken": "STSeyJBY2NvdW50SW**klkZW50aXR5VHlwZSI6NCwiSWRlbnRpdHlJZCI6MzAyMTcsIkNoYW5uZWwiOiJyZXNvdXJjZSIsIkFjY2Vzc0tleUlkIjoiQUtUUE9EZzBNelZrWlRNMVlqQXlOR05sWkdGbU0yVTNaVEl6T0RnMlpEY3hNRGciLCJTaWduZWRTZWNyZXRBY2Nlc3NLZXkiOiJHSHRuc2Q1b3BOOThUeUNrckVuMVAxTDd1ZzBXczZFMytzTktDMDJQT01lNzFMOUloNzhYaDB5VXE4Ni9JMW8reEZxTmtkK01tVUR0cjRHR0NodXJQdz09IiwiRXhwaXJlZFRpbWUiOjE2MTgxOTk4MjksIlBvbGljeVN0cmluZyI6IiIsIlNpZ25hdHVyZSI6IjdiZTEzNTU1MDM5NzcyM2VkMDQxYmVkNTIyNzU4YmMyNjQ3YzRmNzZiNmRjYTViNzVhZDUyOTMwYTg1NjE5ZGEiLCJTZXNzaW9uTmFtZSI6ImNlc2hpYXNzdW1lIn0="
        },
        "AssumedRoleUser": {
            "Trn": "trn:sts::200000****:assumed-role/example-role/assumeroledemo",
            "AssumedRoleId": "**:assumeroledemo"
        }
    }
}

失败返回结果
HTTP状态码为非200

{
    "ResponseMetadata": {
        "RequestId": "201806041104200100100232280022D30",
        "Action": "AssumeRole",
        "Version": "2018-01-01",
        "Service": "sts",
        "Region": "cn-north-1",
        "Error": {
            "Code": "NoPermission",
            "Message": ""
        }
    }
}