默认情况下,对象存储(Cloud Object Storage,COS)的资源(存储桶、对象)都是私有读写,即使获取了对象 URL,匿名用户由于未携带签名也无法通过 url 访问您的资源内容。
主要步骤
从注册腾讯云账号开始,COS 的授权与身份认证流程需要经过这五步:注册腾讯云账号、开通 COS 服务、创建授权身份、为身份设置权限、开始访问与身份认证。
第一步:注册腾讯云账号
注册腾讯云账号后,您的账号将作为主账号存在;主账号拥有最高权限。
第二步:开通 COS 服务
开通 COS 服务后,您创建的所有存储桶,都为主账号所拥有。主账号拥有所有资源的最高使用权限,并有权建立子账号并为子账号授权。
第三步:创建授权身份
注意
除非将存储桶或对象开放为公有读,否则访问 COS 必须经过身份认证。
通过主账号,您可以创建多种身份,并授予不同资源的不同使用权限。
当您需要为匿名用户授权时,例如允许其他人不经过任何身份认证直接通过 url 下载对象,您需要将资源权限由默认的私有读修改为公有读。
当您需要腾讯云其他服务(例如 CDN 等)使用 COS 存储桶时,也需要遵循同样的授权流程,在您的允许下,这些服务将通过服务角色合法访问 COS,您可以在 CAM 控制台查看已创建的服务角色。
针对跨腾讯云账号授权的情况,若您只需要为一个 COS 存储桶授权,可以直接通过存储桶策略或存储桶 ACL 为另一个主账号授权;若您需要为多个 COS 存储桶或多个腾讯云资源授权,可以通过 CAM 控制台 创建协作者身份,进行更大范围的授权。 第四步:为身份设置权限
第五步:开始访问与身份认证
您可以通过控制台、API 请求、SDK 等多种途径访问 COS。出于安全的考虑,存储桶默认为私有读,无论通过哪种途径都需要经过身份认证。对于控制台,使用账号密码即可登录。对于 API 请求和 SDK,用户都需要使用密钥(SecretId/SecretKey)进行身份认证。
COS 身份认证方式
默认情况下,COS 存储桶为私有的,无论是通过密钥(永久密钥、临时密钥)访问 COS,还是使用预签名 URL 访问,都要经过身份认证的环节。出于特殊需要,您也可以将存储桶开放为公有读,这是一种有风险的操作,任何用户都可以通过对象 URL 直接下载对象,不需要经过身份认证。
1. 使用永久密钥访问
密钥(SecretId/SecretKey),是用户访问腾讯云 API 进行身份验证时需要用到的安全凭证,可在 API 密钥管理 中获取,每个主账号和子账号都可以创建多个密钥。 永久密钥包括 SecretId 和 SecretKey,每个主张号和子账号都可以生成两对永久密钥,永久密钥代表了账号的永久身份,如果不删除则长期有效。详情可参考 使用永久密钥访问 COS。 2. 使用临时密钥访问
临时密钥包括 SecretId、SecretKey 和 Token,每个主账号和子账号都可以生成多个临时密钥。相比永久密钥,临时密钥具有有效期(默认1800秒),主账号最长可设定有效期为7200秒,子账号最长可设定有效期为129600秒,详情参考获取联合身份临时访问凭证。
临时密钥适用于前端直传等临时授权场景,相比永久密钥,分发临时密钥给不受信任的用户,安全性更高,详情参考 使用临时密钥访问 COS。 3. 使用临时 URL 访问(预签名 URL)
下载对象
当您希望第三方可以从存储桶下载对象,又不希望对方使用 CAM 账户或临时密钥等方式时,您可以使用预签名 URL 的方式将签名提交给第三方,以供完成临时的下载操作。收到有效预签名 URL 的任何人都可以下载对象。
从控制台或 COSBrowser 获取临时下载链接(有效期1 - 2小时)
您可以直接从控制台或 COSBrowser 快速获取对象的临时下载链接,在浏览器直接输入这个临时链接,即可下载对象。详情参考 快速获取临时链接 文档。 使用签名工具生成预签名 URL
适合对编程不熟悉的用户,获取自定义有效期的预签名 URL,详情参考使用签名工具文档。
自行拼接签名链接
预签名 URL 实际上就是在对象 URL 之后拼接了签名;因此您也可以通过 SDK、签名生成工具等,自行生成签名,将 URL 与签名拼接成签名链接。然而,由于签名生成算法较为复杂,一般情况下不推荐这种使用方式。
上传对象
如果您希望第三方可以上传对象到存储桶,又不希望对方使用 CAM 账户或临时密钥等方式时,您可以使用预签名 URL 的方式将签名提交给第三方,以便完成临时的上传操作。收到有效预签名 URL 的任何人都可以上传对象。
途径一:使用 SDK 生成预签名 URL
各语言 SDK 提供了生成上传预签名 URL 的方法,生成方法可参考 预签名授权上传,选择您熟悉的开发语言。 途径二:自行拼接签名链接
预签名 URL 实际上就是在对象 URL 之后拼接了签名。因此,您也可以通过 SDK、签名生成工具等自行生成签名,将 URL 与签名拼接成签名链接用于对象上传。需注意的是,由于签名生成算法较为复杂,一般情况下不推荐这种使用方式。
4. 匿名访问
默认情况下,COS 存储桶为私有的,无论是通过密钥(永久密钥、临时密钥)访问 COS,还是使用预签名 URL 访问,都要经过身份认证的环节。
出于特殊需要,您也可以将存储桶或对象开放为公有读,任何用户都可以通过对象 URL 直接下载对象,而不经过任何身份认证。
注意
将资源开放为公有读具有安全风险,资源链接一旦泄漏,任何人均可访问,可能被恶意用户盗刷流量。
将存储桶开放为公有读
您可以在控制台将整个存储桶设置为公有读。这种情况下,存储桶中的每个对象都可以通过对象 URL 被直接下载。配置方式可参考 设置存储桶访问权限。 将对象开放为公有读
您可以在控制台将单个对象设置为公有读。这种情况下,只有该对象可以直接通过 URL 被下载,其他对象不受影响。配置方式可参考 设置对象的访问权限。 将文件夹开放为公有读
您可以在控制台将文件夹设置公有读。这种情况下,该文件夹下的所有对象都可以直接通过 URL 被下载,文件夹之外的对象不受影响。配置方式可参考 设置文件夹权限。
本页内容是否解决了您的问题?