文档首页/ 统一身份认证服务 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

内部服务错误。

错误码