获取委托的临时访问密钥和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
请求参数
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| 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。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| 是 | Object | 认证信息。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| methods | 是 | Array of strings | 认证方法,该字段内容为["assume_role"]。 |
| 是 | Object | assume_role的具体信息。 | |
| 否 | Object | 用户自定义策略的信息,用于限制获取到的临时访问密钥和securitytoken的权限(当前仅OBS服务支持该限制)。 如果填写此参数,则临时访问密钥和securitytoken的权限为:用户或委托具有的权限和policy参数限制的权限交集。policy参数的字符个数不大于2048。 关于IAM策略的格式和语法,请参考:策略。 说明: 仅OBS服务识别临时访问密钥中的policy限制。如果您获取临时访问密钥时设置了policy参数,访问非OBS服务时policy不生效,比如访问ECS服务时,临时访问密钥仅代表用户或委托的权限,不与policy限制取交集。 |
| 参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
| 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分钟。 |
| 否 | Object | 委托方对应的企业用户信息。 |
响应参数
| 参数 | 参数类型 | 描述 |
|---|---|---|
| Object | 认证结果信息。 |
请求示例
- 填写"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 | 内部服务错误。 |
错误码
无