tencent cloud

文档反馈

COS 授权与身份认证流程

最后更新时间:2022-05-16 16:50:30

    默认情况下,对象存储(Cloud Object Storage,COS)的资源(存储桶、对象)都是私有读写,即使获取了对象 URL,匿名用户由于未携带签名也无法通过 url 访问您的资源内容。

    主要步骤

    从注册腾讯云账号开始,COS 的授权与身份认证流程需要经过这五步:注册腾讯云账号、开通 COS 服务、创建授权身份、为身份设置权限、开始访问与身份认证。

    第一步:注册腾讯云账号

    注册腾讯云账号后,您的账号将作为主账号存在;主账号拥有最高权限。

    第二步:开通 COS 服务

    开通 COS 服务后,您创建的所有存储桶,都为主账号所拥有。主账号拥有所有资源的最高使用权限,并有权建立子账号并为子账号授权。

    第三步:创建授权身份

    注意:

    除非将存储桶或对象开放为公有读,否则访问 COS 必须经过身份认证。

    通过主账号,您可以创建多种身份,并授予不同资源的不同使用权限。

    • 当您需要为指定的用户授权时,例如公司同事、特定部门的用户等,可以在 访问管理(Cloud Access Management,CAM)控制台 为这些用户创建子账号,然后通过存储桶策略、用户策略(CAM 策略)、存储桶 ACL、对象 ACL 等多种授权方式,为子账号授予指定资源的指定访问权限。
    • 当您需要为匿名用户授权时,例如允许其他人不经过任何身份认证直接通过 url 下载对象,您需要将资源权限由默认的私有读修改为公有读。
    • 当您需要腾讯云其他服务(例如 CDN 等)使用 COS 存储桶时,也需要遵循同样的授权流程,在您的允许下,这些服务将通过服务角色合法访问 COS,您可以在 CAM 控制台查看已创建的服务角色。

    针对跨腾讯云账号授权的情况,若您只需要为一个 COS 存储桶授权,可以直接通过存储桶策略或存储桶 ACL 为另一个主账号授权;若您需要为多个 COS 存储桶或多个腾讯云资源授权,可以通过 CAM 控制台 创建协作者身份,进行更大范围的授权。

    第四步:为身份设置权限

    COS 支持多种权限配置方式,包括 存储桶策略用户策略(CAM 策略)存储桶 ACL对象 ACL,您可以根据自己的使用场景选择合适的授权方式。

    第五步:开始访问与身份认证

    您可以通过控制台、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)

    更多内容和使用说明可参考 使用预签名 URL 访问 COS

    下载对象

    当您希望第三方可以从存储桶下载对象,又不希望对方使用 CAM 账户或临时密钥等方式时,您可以使用预签名 URL 的方式将签名提交给第三方,以供完成临时的下载操作。收到有效预签名 URL 的任何人都可以下载对象。

    • 从控制台或 COSBrowser 获取临时下载链接(有效期1 - 2小时)
      您可以直接从控制台或 COSBrowser 快速获取对象的临时下载链接,在浏览器直接输入这个临时链接,即可下载对象。详情参考 快速获取临时链接 文档。
    • 使用 SDK 生成预签名 URL
      使用 SDK 可以批量获取自定义有效期的预签名 URL,详情参考 使用 SDK 批量获取预签名 URL 文档。
    • 使用签名工具生成预签名 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 被下载,文件夹之外的对象不受影响。配置方式可参考 设置文件夹权限

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持