基本概念
当您发起访问 COS 请求,需要经过 COS 认证和鉴权后,才可以对资源进行操作。因此根据身份是否可识别,访问 COS 的请求分两种类型:匿名请求和签名请求。
匿名请求:请求未携带 Authorization 或相关参数,又或者相关字符无法识别出用户身份特征,此时请求就会被视为匿名请求而进行鉴权。
签名请求:签名的请求需要在 HTTP 头部或者请求包中包含 Authorization 字段,该字段的内容是结合腾讯云的安全凭证 SecretID、SecretKey 和请求的一些特征值,通过加密算法生成。
此外,请求路径中 COS 对于多斜线(例如,
bucket-125000000.cos.ap-beijing.myqcloud.com/test//1.jpg
)默认采取归并处理(即转换为,bucket-125000000.cos.ap-beijing.myqcloud.com/test/1.jpg
),以兼容大部分客户的使用习惯。如用户需要保持多斜线不归并处理,可 联系我们 开通白名单。获取安全凭证
腾讯云访问管理(Cloud Access Management,CAM)为对象存储 COS 提供了账号和安全凭证的相关功能和服务,主要用于帮助客户安全管理腾讯云账户下的资源的访问权限。用户可以通过 CAM 创建、管理和销毁用户(组),并使用身份管理和策略管理控制其他用户使用腾讯云资源的权限。
主账号的安全凭证
36 个字符的访问密钥 ID(SecretID):************************************
32 个字符的访问密钥 Key(SecretKey):********************************
访问密钥可用于标识唯一的账户,使用密钥签名后发送请求,腾讯云将识别请求发起者的身份,并在认证后,对身份、资源、操作、条件等进行鉴权,来判断是否允许执行此操作。
注意:
主账号密钥具备其名下所有资源的所有操作权限,密钥的泄露可能造成您的云上资产损失,强烈建议您创建子账户并分配合理的权限,使用子账户的密钥创建请求来访问和管理资源。
子账号的安全凭证
使用子账号发起 API 请求前,您需要为子账号创建安全凭证,随后子账号也将具备独特的密钥对,以便于识别身份。您可以对不同的子账号编写用户策略,来控制其对资源的访问权限。您也可以创建用户组,并对用户组添加统一的访问策略,便于对人员的分组和资源的统筹管理。
注意:
子账号被分配对应权限后,可以创建或修改资源,此时资源仍然属于主账号,主账号需要支付该资源产生的费用。
临时安全凭证
由于角色是一个虚拟身份,因此角色不具备永久密钥,腾讯云的 CAM 提供了一套 STS API 用于生成临时安全凭证。临时安全凭证通常只包括有限策略(操作、资源、条件)和有限时间(有效起止时间),因此生成的临时安全凭证可自行分发或直接使用。临时安全凭证的使用方法和示例详情请参阅 使用角色 文档,或参阅 创建角色 文档查看生成临时安全凭证的方式。
调用生成临时安全凭证的接口,您将获得一对临时密钥(tmpSecretId/tmpSecretKey)和一个安全令牌(sessionToken),其构成了可用于访问对象存储 COS 的安全凭证,示例如下:
安全令牌(sessionToken):*****************************************,长度和绑定的策略有关,最长不超过4096字节。
临时访问密钥 ID(tmpSecretId): ************************************,最长不超过1024字节。
临时访问密钥 Key(tmpSecretKey): ********************************,最长不超过1024字节。
该接口还会通过
expiration
字段返回临时安全凭证的有效时间,这意味着您只能在此时间内使用这组安全凭证来发起请求。腾讯云对象存储 COS 提供了简单的服务端 SDK 可用于生成临时密钥,可访问 COS STS SDK 获取。在得到临时安全凭证后,使用 REST API 发起请求,您需要在 HTTP 头部或 POST 请求包的 form-data 中传入
x-cos-security-token
字段标识该请求使用的安全令牌,再使用临时访问密钥对来计算请求签名。使用 COS SDK 发起访问请参考各 SDK 文档中的相关部分。访问域名
REST API
COS 推荐使用虚拟托管型域名访问存储桶,在发起 HTTP 请求时直接通过
Host
头部带入需要访问的存储桶,例如 <BucketName-APPID>.cos.<Region>.myqcloud.com
。使用虚拟托管型的域名实现了类似虚拟服务器「根目录」的功能,可用于托管类似 favicon.ico、robots.txt、crossdomain.xml 的文件,这些文件是很多应用程序在识别托管网站时,会默认从虚拟服务器「根目录」位置检索的内容。您也可以使用路径型请求来访问存储桶,例如使用
cos.<region>.myqcloud.com/<BucketName-APPID>/
的路径来访问存储桶。相应的,请求 Host 和签名需要使用cos.<region>.myqcloud.com
,我们的 SDK 默认不支持此种访问方式。静态网站域名
当您开启存储桶的静态网站功能时,我们将分配一个虚拟托管型的域名供相关功能的使用。静态网站域名的表现与 REST API 有所不同,除了特定的索引页、错误页和跳转配置外,静态网站域名只支持 GET/HEAD/OPTIONS Object 等几种操作,不支持上传或配置资源的操作。
静态网站域名例如:
<BucketName-APPID>.cos-website.<Region>.myqcloud.com
,您也可以通过控制台的存储桶「基础配置 - 静态网站配置」模块获取此域名。内网访问
腾讯云对象存储 COS 的访问域名使用了智能 DNS 解析,通过互联网在不同的运营商环境下,我们会检测并指向最优链路供您访问 COS。
如果您在腾讯云内部署 CVM 服务用于内网访问 COS,那么首先需确保 CVM 与 COS 存储桶的所属地域相同,然后通过在 CVM 上使用
nslookup
命令解析 COS 域名,若返回内网 IP,则表明 CVM 和 COS 之间是内网访问,否则为外网访问。如果您在腾讯云内部署的 CVM 服务,其地域与 COS 存储桶的所属地域不同,但属于 COS 可用地域范围,可通过 COS 内网全球加速域名访问文件,实现 CVM 与 COS 的跨地域内网访问。通过内网全球加速域名实现跨地域内网访问会产生额外的费用,详情请参见 内网全球加速。
内网访问判断方法
相同地域内腾讯云产品访问,可实现内网连接,产生的内网流量不计费。因此选购腾讯云不同产品时,建议尽量选择相同地域,减少您的费用。
注意:
公有云地域和金融云地域内网不互通。
确认是否内网访问请参考如下方法:
以腾讯 CVM 访问 COS 为例,判断是否使用内网访问 COS ,可以在 CVM 上 使用
nslookup
命令解析 COS 域名,若返回内网 IP,则表明 CVM 和 COS 之间是内网访问,否则为外网访问。说明:
内网 IP 地址一般形如
10.*.*.*
、100.*.*.*
,VPC 网络一般为169.254.*.*
等,这两种形式的 IP 都属于内网。假设
examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com
为目标存储桶地址,执行nslookup
命令后可以看到以下信息:

其中
10.148.214.13
和10.148.214.14
这两个 IP 就代表了是通过内网访问的 COS。测试连通性
基本连通测试
COS 使用了 HTTP 协议对外提供服务,您可使用最基本的
telnet
工具来对 COS 访问域名的80端口发起访问测试。通过外网访问的示例如下:
telnet examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com 80Trying 14.119.113.22...Connected to gz.file.myqcloud.com.Escape character is '^]'.
通过同地域的腾讯云 CVM (基础网络)访问示例如下:
telnet examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com 80Trying 10.148.214.14...Connected to 10.148.214.14.Escape character is '^]'.
通过同地域的腾讯云 CVM (VPC 网络)访问示例如下:
telnet examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com 80Trying 169.254.0.47....Connected to 169.254.0.47.Escape character is '^]'.
无论处于何种访问环境,命令返回
Escape character is '^]'.
字段则说明可成功连通。通过互联网测试的说明
由于通过互联网访问 COS 会经过运营商网络,运营商网络可能禁止您使用 ICMP 协议的
ping
或traceroute
等工具来测试连通性,因此建议使用 TCP 协议的工具来测试连通性。注意:
通过互联网访问可能受到多种网络环境的影响,如有访问不畅的情况,请排查本地网络链路或联系当地运营商进行反馈。
若您的运营商允许 ICMP 协议,您可以使用
ping
、traceroute
或mtr
工具来检视您的链路状况。运营商不允许使用 ICMP 协议,您可以使用psping
(Windows 环境,请前往微软官网下载)或tcping
(跨平台软件)等工具进行时延测试。通过内网测试的说明
如果您通过同地域的腾讯云 VPC 网络来访问对象存储 COS,则可能无法使用 ICMP 协议的
ping
或traceroute
等工具来测试连通性。建议您使用基本连通测试中的telnet
命令进行测试。您亦可尝试使用
psping
或tcping
等工具直接对访问域名的80端口进行时延测试,请在测试前确保已通过nslookup
命令查询并确认访问域名已正确解析至内网地址。