tencent cloud

文档反馈

COS 授权与身份认证流程

最后更新时间:2024-01-06 11:09:25
    默认情况下,对象存储(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 电话支持