tencent cloud

对象存储

动态与公告
产品动态
产品公告
产品简介
产品概述
功能概览
应用场景
产品优势
基本概念
地域和访问域名
规格与限制
产品计费
计费概述
计费方式
计费项
免费额度
计费示例
查看和下载账单
欠费说明
常见问题
快速入门
控制台快速入门
COSBrowser 快速入门
用户指南
创建请求
存储桶
对象
数据管理
批量处理
全球加速
监控与告警
运维中心
数据处理
内容审核
智能工具箱
数据工作流
应用集成
工具指南
工具概览
环境安装与配置
COSBrowser 工具
COSCLI 工具
COSCMD 工具
COS Migration 工具
FTP Server 工具
Hadoop 工具
COSDistCp 工具
HDFS TO COS 工具
GooseFS-Lite 工具
在线辅助工具
自助诊断工具
实践教程
概览
访问控制与权限管理
性能优化
使用 AWS S3 SDK 访问 COS
数据容灾备份
域名管理实践
图片处理实践
COS 音视频播放器实践
工作流实践
数据直传
内容审核实践
数据安全
数据校验
大数据实践
COS 成本优化解决方案
在第三方应用中使用 COS
迁移指南
本地数据迁移至 COS
第三方云存储数据迁移至 COS
以 URL 作为源地址的数据迁移至 COS
COS 之间数据迁移
Hadoop 文件系统与 COS 之间的数据迁移
数据湖存储
云原生数据湖
元数据加速
数据加速器 GooseFS
数据处理
数据处理概述
图片处理
媒体处理
内容审核
文件处理
文档处理
故障处理
获取 RequestId 操作指引
通过外网上传文件至 COS 缓慢
访问 COS 时返回403错误码
资源访问异常
POST Object 常见异常
API 文档
简介
公共请求头部
公共响应头部
错误码
请求签名
操作列表
Service 接口
Bucket 接口
Object 接口
批量处理接口
数据处理接口
任务与工作流
内容审核接口
云查毒接口
SDK 文档
SDK 概览
准备工作
Android SDK
C SDK
C++ SDK
.NET(C#) SDK
Flutter SDK
Go SDK
iOS SDK
Java SDK
JavaScript SDK
Node.js SDK
PHP SDK
Python SDK
React Native SDK
小程序 SDK
错误码
鸿蒙(Harmony) SDK
终端 SDK 质量优化
安全与合规
数据容灾
数据安全
访问管理
常见问题
热门问题
一般性问题
计费计量问题
域名合规问题
存储桶配置问题
域名和 CDN 问题
文件操作问题
日志监控问题
权限管理问题
数据处理问题
数据安全问题
预签名 URL 问题
SDK 类问题
工具类问题
API 类问题
服务协议
Service Level Agreement
隐私政策
数据处理和安全协议
联系我们
词汇表

使用临时密钥访问 COS

PDF
聚焦模式
字号
最后更新时间: 2024-01-06 11:09:25

临时密钥简介

临时密钥是由安全凭证服务(Security Token Service,STS)提供的临时访问凭证。临时密钥由 TmpSecretId、TmpSecretKey 和 Token 三部分组成,相比于永久密钥,临时密钥具有以下特点:
有效时间短(30min - 36h),不必暴露永久密钥,降低账号泄露风险。
在获取临时密钥时,可通过传入 policy 参数设置临时权限来进一步约束使用者的权限范围。
因此,临时密钥适用于前端直传等临时授权场景,相比永久密钥,分发临时密钥给不受信任的用户,安全性更高。

获取临时密钥

获取临时密钥,可以通过我们提供的 COS STS SDK 方式获取,也可以直接通过 STS 云 API 的方式获取。 详情可参考 临时密钥生成及使用指引

临时密钥的权限

申请临时密钥之前,您必须拥有访问管理(Cloud Access Management,CAM)用户(腾讯云主账号或子账号),可以通过设置 Policy 参数,为临时密钥增加临时策略约束使用者的权限。
若不设置 policy 参数,获取的临时密钥具有与 CAM 用户相同的权限。
若设置了 policy 参数,获取的临时密钥会在 CAM 用户权限的基础上,进一步将权限限制在 policy 设置的范围以内。
假设,“A”代表 CAM 用户的原有权限,“B”代表通过 policy 参数为临时密钥设置的权限,“A”和“B”的交集代表了临时密钥最终的有效权限。
如下图,CAM 用户权限和 policy 临时权限的交集为有效权限:


如下图,policy 在 CAM 用户权限以内,policy 为有效权限:



使用临时密钥访问 COS



临时密钥包括 SecretId、SecretKey 和 Token,每个主账号和子账号都可以生成多个临时密钥。相比永久密钥,临时密钥的有效期只有30分钟 - 36小时。临时密钥适用于前端直传等临时授权场景,相比永久密钥,分发临时密钥给不受信任的用户,安全性更高,详情参考 临时密钥生成及使用指引用于前端直传的临时密钥使用指引
发起 API 请求 类似永久密钥,您也可以通过临时密钥生成签名,填入请求头部 Authorization,形成签名请求。COS 接收到请求后,会校验签名是否有效,以及临时密钥是否过期。 签名算法的介绍请参见 请求签名,COS 同时提供了签名生成工具,也可以通过 SDK 生成签名,可参考 SDK 签名实现
使用 SDK 工具 安装 SDK 工具后,除了使用临时密钥初始化用户身份信息,您也可以使用临时密钥(SecretId、SecretKey、Token)初始化 COSClient,直接使用 SDK 进行上传、下载等操作,而无需生成签名。临时密钥生成可参考临时密钥生成及使用指引。
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://www.tencentcloud.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 客户端,用户服务器上存放有永久密钥,使用临时密钥进行前端直传需要经过以下几步: 1. App 客户端向用户服务器请求临时密钥,用于上传、下载数据。 2. 用户服务器使用永久密钥身份,向 STS 服务器申请临时密钥。 3. STS 服务返回临时密钥给用户服务器。 4. 用户服务器将临时密钥下发到 App 客户端。 5. App 客户端使用临时密钥生成签名请求,向 COS 请求上传、下载数据。
临时密钥适用于前端数据直传的使用场景,您可以参考以下最佳实践使用临时密钥:

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈