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
隐私政策
数据处理和安全协议
联系我们
词汇表

访问策略评估流程

PDF
聚焦模式
字号
最后更新时间: 2024-01-06 11:09:25
访问对象存储(Cloud Object Storage,COS)存储桶及存储桶内资源时需要经过授权后才可进行访问。在腾讯云的权限体系中,资源所属的主账号默认对存储桶及存储桶内的资源拥有所有管理权限。访问管理(Cloud Access Management,CAM)用户(其他主账号、协作者、子账号)以及匿名用户等其他类型用户,需要经过主账号授权后才可进行访问。
账号中的访问策略包括用户组策略、用户策略、存储桶访问控制列表(ACL)和存储桶策略(Policy)等不同的策略类型。在访问策略的评估中,有以下几点关键因素:
1. 用户身份认证:当用户访问 COS 上的资源时,有以下两种情况。
如果携带请求签名,COS 会从请求签名中解析出用户的账号信息,然后将请求转发给访问管理 CAM 进行身份认证。
如果未携带签名请求,则会认为是匿名用户进入到下一环节的认证中。
2. 访问策略的类别:访问策略包括用户组、用户、存储桶等多种类型策略,访问策略的类别决定了访问策略的顺序。
3. 策略上下文信息:在处理用户资源访问请求的时候,会根据用户组策略,用户策略,存储桶策略等多种策略内记录的权限详情进行联合判断,最终决定是否请求通过。

访问策略评估流程

访问策略评估流程

当腾讯云 COS 收到请求时,首先会确认请求者身份,并验证请求者是否拥有相关权限。验证的过程包括检查用户策略、存储桶访问策略和基于资源的访问控制列表,对请求进行鉴权。
腾讯云 COS 收到请求时,将会首先进行身份认证,根据身份认证的结果,将对请求者身份进行分类,不同的身份类别可能会有不同的表现:
1. 经过验证的腾讯云主账号:主账号具备对其所属资源的所有操作权限。而对于非其所属的资源,则需要评估资源权限,若鉴权通过则被许可访问资源。
2. 经过验证的 CAM 用户(子账号或者协作者):评估用户策略 —— CAM 用户必须具备其父级主账号的授权,才被许可发起相关的访问。如果 CAM 用户需要访问其他主账号所属的资源,则需要评估 CAM 用户所属主账号的资源权限,若鉴权通过则被许可访问资源。
3. 不具备身份特征的匿名用户:评估资源权限 —— 评估在存储桶访问策略或存储桶、对象的访问控制列表的权限,若鉴权通过则被许可访问资源。
4. 上述几类用户以外的请求者:拒绝其访问。

访问策略评估依据

在腾讯云权限体系中,在访问策略评估流程中,全程根据策略上下文信息进行权限评估,同时有以下几项基本原则:
1. 在默认情况下,所有请求都被隐式拒绝(deny);主账号默认享有账户下所有资源的访问权限。
2. 如果在用户组策略、用户策略、存储桶策略或者存储桶/对象访问控制列表中存在显式允许时,将覆盖此默认值。
3. 任何策略中的显式拒绝将覆盖任何允许。
4. 生效的权限范围为基于身份的策略(用户组策略、用户策略)和基于资源的策略(存储桶策略或者存储桶/对象访问控制列表)的并集。
说明
显式拒绝:在用户策略、用户组策略、存储桶 Policy 中针对特定用户有明确的 Deny 策略;如主账号在用户策略中明确配置 Deny 子用户 UIN 100000000011进行GET Object操作,那该子用户无法下载该主账号下的对象资源。
显式允许:在用户策略、用户组策略、存储桶 Policy、存储桶 ACL 中通过grant-\\*明确指定特定用户针对特定用户有明确的 Allow 策略。
拒绝所有人:在存储桶 Policy 中明确指定Deny anyone;拒绝所有人后,任意不带签名的请求会被拒绝掉;携带签名的请求会以基于身份的策略进行鉴权。
允许所有人:在存储桶 Policy 中明确指定Allow anyone,或者在存储桶 ACL 中明确指定public-\\*
生效权限范围为基于身份策略和基于资源策略的并集:在一次完整的鉴权中,COS 将会首先解析用户身份,按照用户身份进行权限校验他有权限访问的资源;同时根据基于资源策略,将用户视为匿名用户进行权限校验;两次校验中有一次校验成功即可允许访问。
访问策略评估依据如下图所示,首先会根据请求中是否携带签名,评估用户是否为匿名用户。如果用户为匿名用户,则会评估策略中是否有拒绝所有人或者允许所有人的策略,并据此判定允许访问或者拒绝访问。如果用户为合法的 CAM 用户或者拥有资源的主账号,则会评估策略中是否有显式拒绝、显式允许或者允许所有人的策略,并据此判定允许访问或者拒绝访问。


策略上下文信息

策略上下文信息指的是策略中记录的权限详情,在 最小权限原则 下,用户需要在策略中明确指定以下信息:
委托人(principal):必须明确指定您需要授予哪些子用户(需要填写用户 ID)、协作者(需要填写用户 ID)、匿名用户或者用户组权限。如果您使用临时密钥进行访问,则不需要指定此项。
语句(statement):在以下几项参数中明确填写相应的参数。
效力(effect):必须明确声明该策略是“允许”还是“显式拒绝”,包括 allow 和 deny 两种情况。
操作(action):必须明确声明该策略允许或拒绝的操作。操作可以是单个 API 操作或者多个 API 操作的集合。
资源(resource):必须明确声明该策略授权的具体资源。资源是用六段式描述。您可以指定资源范围为指定的文件,例如exampleobject.jpg,或者指定的目录,例如examplePrefix/*。除非业务需要,否则请不要随意授予用户访问所有资源的权限,即通配符*
条件(condition):描述策略生效的约束条件。条件包括操作符、操作键和操作值组成。条件值可包括时间、IP 地址等信息。
撰写策略需要按照一定的策略语法撰写,可参见 访问策略语言概述 按照业务所需撰写。用户策略和存储桶策略的编写示例,可分别参见 用户策略语法结构存储桶策略示例

访问策略评估示例

假设主账号 UIN 100000000001为子账号 UIN 100000000011关联了一项用户预设策略,允许该子账号只读主账号下的资源;该用户策略详情如下。此项用户策略允许了该子账号执行所有的ListGetHead操作以及OptionsObject操作。
{
"version": "2.0",
"statement": [
{
"action": [
"cos:List*",
"cos:Get*",
"cos:Head*",
"cos:OptionsObject"
],
"resource": "*",
"effect": "allow"
}
]
}
同时,主账号在一个私有读写的存储桶examplebucket-1250000000中添加了以下存储桶策略:
{
"Statement": [
{
"Principal": {
"qcs": [
"qcs::cam::anyone:anyone"
]
},
"Effect": "Deny",
"Action": [
"name/cos:GetObject"
],
"Resource": [
"qcs::cos:ap-guangzhou:uid/100000000011:examplebucket-1250000000/*"
]
}
],
"version": "2.0"
}
此项存储桶策略显式拒绝了所有用户执行下载对象(GetObject)的操作。因此,在访问策略评估流程中:
1. 如果该子账号携带签名参数请求GetObject时,会根据该请求表示的用户身份匹配对应的用户策略,访问策略评估验证通过。
2. 如果该子账号不携带签名参数请求GetObject时,会被系统判定为匿名请求,会被存储桶策略拒绝访问。

帮助和支持

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

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

文档反馈