文档首页/ 统一身份认证服务 IAM/ API参考/ API/ 访问密钥管理/ 获取委托的临时访问密钥和securitytoken - CreateTemporaryAccessKeyByAgency
更新时间:2026-05-08 GMT+08:00

获取委托的临时访问密钥和securitytoken - CreateTemporaryAccessKeyByAgency

功能介绍

该接口可以用于通过委托来获取临时访问密钥(临时AK/SK)和securitytoken。

临时AK/SK和securitytoken是系统颁发给IAM用户的临时访问令牌,有效期可在15分钟至24小时范围内设置,过期后需要重新获取。临时AK/SK和securitytoken遵循权限最小化原则。鉴权时,临时AK/SK和securitytoken必须同时使用,请求头中需要添加“x-security-token”字段,使用方法详情请参考:使用临时AK/SK做签名

该接口可以使用全局区域的Endpoint和其他区域的Endpoint调用。IAM的Endpoint请参见:地区和终端节点。

调试

您可以在API Explorer中调试该接口。

授权信息

账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限,具体权限要求请参见权限和授权项。

URI

POST /v3.0/OS-CREDENTIAL/securitytokens

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

是

String

该字段填为“application/json;charset=utf8”。

Authorization

否

String

X-Auth-Token和Authorization二选一,推荐使用Authorization方式,AK/SK签名认证后会生成Authorization Header。更多信息请参考AK/SK签名认证算法详解。

X-Auth-Token

否

String

X-Auth-Token和Authorization二选一,拥有Agent Operator权限的token。

表2 请求Body参数

参数

是否必选

参数类型

描述

auth

是

Object

认证信息。

表3 auth

参数

是否必选

参数类型

描述

identity

是

Object

认证参数。

表4 auth.identity

参数

是否必选

参数类型

描述

methods

是

Array of strings

认证方法,该字段内容为["assume_role"]。

assume_role

是

Object

assume_role的具体信息。

policy

否

Object

用户自定义策略的信息,用于限制获取到的临时访问密钥和securitytoken的权限(当前仅OBS服务支持该限制)。

如果填写此参数,则临时访问密钥和securitytoken的权限为:用户或委托具有的权限和policy参数限制的权限交集。policy参数的字符个数不大于2048。

关于IAM策略的格式和语法,请参考:策略。

说明:

仅OBS服务识别临时访问密钥中的policy限制。如果您获取临时访问密钥时设置了policy参数,访问非OBS服务时policy不生效,比如访问ECS服务时,临时访问密钥仅代表用户或委托的权限,不与policy限制取交集。

表5 auth.identity.assume_role

参数

是否必选

参数类型

描述

agency_name

是

String

委托名称,获取方式请参见:获取账号、IAM用户、项目、用户组、区域、委托的名称和ID。

domain_id

否

String

委托方的账号ID。“domain_id”与“domain_name”至少填写一个,建议选择“domain_id”。

domain_name

否

String

委托方的账号名。“domain_id”与“domain_name”至少填写一个,建议选择“domain_id”。

duration_seconds

否

Integer

AK/SK和securitytoken的有效期,时间单位为秒。取值范围:15分钟 ~ 24小时 ,默认为15分钟。

session_user

否

Object

委托方对应的企业用户信息。

表6 auth.identity.assume_role.session_user

参数

是否必选

参数类型

描述

name

否

String

委托方对应的企业用户名。

用户名需满足如下规则:长度5~64之间,只能包含如下字符:大小写字母、空格、数字或特殊字符(-_.)且只能以字母开头。

表7 auth.identity.policy

参数

是否必选

参数类型

描述

Version

是

String

权限版本号,创建自定义策略时,该字段值填为“1.1”。

说明:

1.1:策略。IAM提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。

Statement

是

Array of objects

授权语句,描述自定义策略的具体内容,不超过8个。

说明:

仅OBS服务识别临时访问密钥中的policy限制,此处Statement的参数定义请参考OBS服务《权限配置指南》中的“策略结构&语法”。

响应参数

表8 响应Body参数

参数

参数类型

描述

credential

Object

认证结果信息。

表9 credential

参数

参数类型

描述

expires_at

String

AK/SK和securitytoken的过期时间。响应参数为UTC时间格式。

access

String

获取的AK。

secret

String

获取的SK。

securitytoken

String

securitytoken是将所获的AK、SK等信息进行加密后的字符串。

请求示例

  • 填写"session_user"参数,即委托方对应的企业用户信息,包含委托方对应的企业用户名。
    POST https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/securitytokens
    {
        "auth": {
            "identity": {
                "methods": [
                    "assume_role"
                ],
                "assume_role": {
                    "domain_name": "IAMDomainA",
                    "agency_name": "IAMAgency",
                    "duration_seconds": 3600,
                    "session_user": {
                        "name": "SessionUserName"
                    }
                }
            }
        }
    }
  • 填写"policy"参数,即用户自定义策略的信息,用于限制获取到的临时访问密钥和securitytoken的权限(当前仅适用限制OBS服务的权限)。如果填写此参数,则临时访问密钥和securitytoken的权限为:委托具有的权限和policy参数限制的权限交集。
    POST https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/securitytokens
    {
        "auth": {
            "identity": {
                "methods": [
                    "assume_role"
                ],
                "policy": {
                          "Version": "1.1",
    		       "Statement": [{
    			 "Effect": "allow",
    			 "Action": [
                             "obs:object:*"
                             ],
    			 "Resource": ["obs:*:*:object:*"],
    			 "Condition": {
    			    "StringEquals": {
    				"obs:prefix": ["public"]
    				}
    			}
    		}]
                 },
                "assume_role": {
                    "domain_name": "IAMDomainA",
                    "agency_name": "IAMAgency",
                    "duration_seconds": 3600
    
                }
            }
        }
    }
  • 不填写"session_user"和policy参数。
    POST https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/securitytokens
    {
        "auth": {
            "identity": {
                "methods": [
                    "assume_role"
                ],
                "assume_role": {
                    "domain_name": "IAMDomainA",
                    "agency_name": "IAMAgency",
                    "duration_seconds": 3600
                }
            }
        }
    }

响应示例

状态码为 201 时:

创建成功。

无论session_user填写与否,返回都是相同的。若填写了session_user,则在securitytoken中包含了所填写的session_user信息。

{
    "credential": {
        "access": "E6DX0TF2ZREQ4Z...",
        "expires_at": "2020-01-08T02:56:19.587000Z",
        "secret": "w9ePum0qdfac39ErLD0UdjofYkqort6Iw....",
        "securitytoken": "gQpjbi1ub3J0aC0..."
    }
}

返回值

返回值

描述

201

创建成功。

400

参数无效。

401

认证失败。

403

没有操作权限。

500

内部服务错误。

错误码

无