临时密钥是由安全凭证服务(Security Token Service,STS)提供的临时访问凭证。临时密钥由 TmpSecretId、TmpSecretKey 和 Token 三部分组成,相比于永久密钥,临时密钥具有以下特点:
因此,临时密钥适用于前端直传等临时授权场景,相比永久密钥,分发临时密钥给不受信任的用户,安全性更高。
获取临时密钥,可以通过我们提供的 COS STS SDK 方式获取,也可以直接通过 STS 云 API 的方式获取。
详情可参考 临时密钥生成及使用指引。
申请临时密钥之前,您必须拥有访问管理(Cloud Access Management,CAM)用户(腾讯云主账号或子账号),可以通过设置 Policy 参数,为临时密钥增加临时策略约束使用者的权限。
假设,“A”代表 CAM 用户的原有权限,“B”代表通过 policy 参数为临时密钥设置的权限,“A”和“B”的交集代表了临时密钥最终的有效权限。
如下图,CAM 用户权限和 policy 临时权限的交集为有效权限:
如下图,policy 在 CAM 用户权限以内,policy 为有效权限:
临时密钥包括 SecretId、SecretKey 和 Token,每个主账号和子账号都可以生成多个临时密钥。相比永久密钥,临时密钥的有效期只有30分钟 - 36小时。临时密钥适用于前端直传等临时授权场景,相比永久密钥,分发临时密钥给不受信任的用户,安全性更高,详情参考 临时密钥生成及使用指引 及 用于前端直传的临时密钥使用指引。
Java SDK 参考示例如下,更多语言 demo 可参考 SDK 概览。
// 1 传入获取到的临时密钥 (tmpSecretId, tmpSecretKey, sessionToken)
String tmpSecretId = "SECRETID";
String tmpSecretKey = "SECRETKEY";
String sessionToken = "TOKEN";
BasicSessionCredentials cred = new BasicSessionCredentials(tmpSecretId, tmpSecretKey, sessionToken);
// 2 设置 bucket 的地域, COS 地域的简称请参阅 https://intl.cloud.tencent.com/document/product/436/6224?from_cn_redirect=1
// clientConfig 中包含了设置 region, https(默认 http), 超时, 代理等 set 方法, 使用可参阅源码或者常见问题 Java SDK 部分
Region region = new Region("COS_REGION");
ClientConfig clientConfig = new ClientConfig(region);
// 3 生成 cos 客户端
COSClient cosClient = new COSClient(cred, clientConfig);
临时密钥主要用于授权第三方临时访问 COS。例如,用户开发了客户端 App,将数据存储在 COS 存储桶上,此时将永久密钥直接存放在 App 客户端上是不安全的,但又需要授予客户端上传、下载的权限,针对这种场景可使用临时密钥。
如上图所示,用户开发了 App 客户端,用户服务器上存放有永久密钥,使用临时密钥进行前端直传需要经过以下几步:
临时密钥适用于前端数据直传的使用场景,您可以参考以下最佳实践使用临时密钥:
本页内容是否解决了您的问题?