功能描述
作为 GetFederationToken 的备份接口:通过该接口获取联合身份访问凭证,即使用永久密钥获得临时密钥。
作为 AssumeRole 的备份接口:通过该接口申请扮演角色临时访问凭证,即扮演角色并获取临时密钥。
授权说明
作为 GetFederationToken 的备份接口,不需要额外申请权限,只需要保证永久密钥具有您需要使用的权限。
作为 AssumeRole 的备份接口,需要额外保证永久密钥具有 sts:AssumeRole 的权限。也就是,将 授权策略 中 action 设置为 sts:GetFederationToken。查看 STS 服务的 action。
请求
请求示例
POST /?sts HTTP 1.1Host:<BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth String
说明:
Host: <BucketName-APPID>.cos.<Region>.myqcloud.com,其中 <BucketName-APPID> 为带 APPID 后缀的存储桶名字,例如 examplebucket-1250000000,请参见 存储桶概览 > 基本信息 和 存储桶概述 > 存储桶命名规范 文档;<Region> 为 COS 的可用地域,请参见 地域和访问域名 文档。
Authorization: Auth String(详情请参见 请求签名 文档)。
请求参数
此接口无请求参数。
请求头
请求体
用户在请求体中使用 JSON 获取临时访问凭证:
{"Type": "FederationToken" | "AssumeRole","Name": "String","RoleArn": "String","RoleSessionName": "String","Policy": {"statement": [{"effect": "allow","action": ["name/cos:GetObject"],"resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]}],"version": "2.0"},"DurationSeconds": 3600}
具体元素如下:
元素名称 | 描述 | 类型 | 是否必选 |
Type | 请求类型,支持填入 "FederationToken" 或 "AssumeRole"。 | String | 是 |
Name | 请求类型为 FederationToken 时,可选填该参数,用于自定义调用方英文名称,由字母组成。 示例值:test | String | 否 |
RoleArn | 普通角色: qcs::cam::uin/12345678:role/4611686018427397919、qcs::cam::uin/12345678:roleName/testRoleName 服务角色: qcs::cam::uin/12345678:role/tencentcloudServiceRole/4611686018427397920、qcs::cam::uin/12345678:role/tencentcloudServiceRoleName/testServiceRoleName | String | 是 |
RoleSessionName | 请求类型为 AssumeRole 时,必填该参数。表示临时会话名称,由用户自定义名称。长度在2到128之间,可包含大小写字符,数字以及特殊字符: =,.@-。
示例值:cts | String | 是 |
Policy | Json | 是 | |
DurationSeconds | 指定临时证书的有效期,单位:秒,默认1800秒,主账号最长可设定有效期为7200秒,子账号最长可设定有效期为129600秒。 示例值:1800 | Integer | 是 |
响应
响应头
响应体
在 XML 响应体中返回临时密钥信息。
<PostBucketSTSResult><Credentials><TmpSecretId>String</TmpSecretId><TmpSecretKey>String</TmpSecretKey><Token>String</Token></Credentials><Expiration>Integer</Expiration><ExpiredTime>String</ExpiredTime></PostBucketSTSResult>
具体的节点描述如下:
节点名称(关键字) | 父节点 | 描述 | 类型 |
PostBucketSTSResult | 无 | 获取临时密钥的结果。 | Container |
Credentials | PostBucketSTSResult | 临时访问凭证。 | Container |
ExpiredTime | PostBucketSTSResult | 临时访问凭证的过期时间,返回 Unix 时间戳,精确到秒。
示例值:1543914376 | Integer |
Expiration | PostBucketSTSResult | 临时访问凭证的过期时间,以 iso8601 格式的 UTC 时间表示。
示例值:2018-12-04T09:06:16Z | String |
Token | Credentials | Token。Token 长度和绑定的策略有关,最长不超过4096字节。 | String |
TmpSecretId | Credentials | 临时证书密钥 ID。最长不超过1024字节。 | String |
TmpSecretKey | Credentials | 临时证书密钥 Key。最长不超过1024字节。 | String |
错误码
实际案例
案例一:获取联合身份访问凭证
请求
POST /?stsHost: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth StringContent-MD5: MD5{"Type": "FederationToken","Name": "test","Policy": {"statement": [{"effect": "allow","action": ["name/cos:GetBucket"],"resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]}],"version": "2.0"},"DurationSeconds": 3600}
响应
HTTP/1.1 200 OKContent-Type: application/xmlContent-Length: 0Date: Mon, 23 Sep 2024 07:49:14 GMTServer: tencent-cosx-cos-request-id: NWQwNzUxNTBfMzdiMDJhMDlfOWM0Nl85NDFk****<PostBucketSTSResult><Credentials><TmpSecretId>************************************</TmpSecretId><TmpSecretKey>************************************</TmpSecretKey><Token>************************************</Token></Credentials><Expiration>2024-09-23T09:34:46Z</Expiration><ExpiredTime>1727084086</ExpiredTime></PostBucketSTSResult>
案例二:申请扮演角色临时访问凭证
请求
POST /?stsHost: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth StringContent-MD5: MD5{"Type": "AssumeRole","RoleArn": "qcs::cam::uin/12345678:roleName/testRoleName","RoleSessionName": "test","Policy": {"statement": [{"effect": "allow","action": ["name/cos:GetBucket"],"resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"]}],"version": "2.0"},"DurationSeconds": 3600}
响应
HTTP/1.1 200 OKContent-Type: application/xmlContent-Length: 0Date: Mon, 23 Sep 2024 08:24:01 GMTServer: tencent-cosx-cos-request-id: NWQwNzUxNTBfMzdiMDJhMDlfOWM0Nl85NDFk****<PostBucketSTSResult><Credentials><TmpSecretId>************************************</TmpSecretId><TmpSecretKey>************************************</TmpSecretKey><Token>************************************</Token></Credentials><Expiration>2024-09-23T09:36:14Z</Expiration><ExpiredTime>1727084174</ExpiredTime></PostBucketSTSResult>