帮你快速理解、总结文档立即下载

访问控制

最近更新时间:2026-10-21 18:34:03
我的收藏

概述

高性能桶(Rapid Bucket)采用与 AWS S3 Express One Zone 类似的双层鉴权模型,将桶级别操作(控制面)与对象级别操作(数据面)的鉴权机制分离,以在保障安全性的前提下实现数据面的低延迟访问。
核心设计理念:
控制面(桶级别操作):使用标准的 CAM(云访问管理)身份鉴权,通过 V4 签名校验请求合法性。
数据面(对象级别操作):使用基于会话(Session)的轻量级鉴权机制,通过 CreateSession 获取临时凭证,减少每次请求的鉴权开销。

访问控制边界

高性能桶的访问控制边界仅设置在桶级别。与标准 COS 通用桶不同,高性能桶不支持对象级别(前缀或标签)的精细权限策略。这意味着:
在 CAM 身份策略或桶策略中,高性能桶是唯一可以指定的资源粒度。
不支持基于对象前缀(prefix)或对象标签(tag)的条件策略。
桶默认私有,只有被明确授予权限的用户才能访问。

双层鉴权模型

控制面鉴权(桶级别操作)

桶级别操作使用标准的 CAM 身份鉴权模型,不涉及会话管理。权限通过 CAM 策略逐一授予。
适用的 API 操作:
API 操作
CAM Action
说明
PutBucket
cos:CreateBucket
创建高性能桶
DeleteBucket
cos:DeleteBucket
删除高性能桶
HeadBucket
cos:HeadBucket
查询桶是否存在
PutBucketPolicy
cos:PutBucketPolicy
设置桶策略
GetBucketPolicy
cos:GetBucketPolicy
查询桶策略
DeleteBucketPolicy
cos:DeleteBucketPolicy
删除桶策略
控制面操作的请求域名为区域端点(Regional Endpoint),格式:
<BucketName>-x--<APPID>.cosrapid.<Region>.myqcloud.com

数据面鉴权(对象级别操作)

对象级别操作使用基于会话的鉴权机制。客户端通过 CreateSession API 创建会话并获取临时凭证,后续数据面请求携带该临时凭证即可完成鉴权,无需每次请求都进行完整的 V4 签名计算。
适用的 API 操作:
API 操作
所需权限
说明
PutObject
cos:CreateSession
上传对象
GetObject
cos:CreateSession
下载对象
HeadObject
cos:CreateSession
查询对象元数据
DeleteObject
cos:CreateSession
删除单个对象
DeleteMultipleObjects
cos:CreateSession
批量删除对象
PutObjectCopy
cos:CreateSession
桶内复制对象
ListObjects
cos:CreateSession
列出对象
RenameObject
cos:CreateSession
重命名对象
InitiateMultipartUpload
cos:CreateSession
初始化分片上传
UploadPart
cos:CreateSession
上传分片
UploadPartCopy
cos:CreateSession
复制分片
CompleteMultipartUpload
cos:CreateSession
完成分片上传
AbortMultipartUpload
cos:CreateSession
终止分片上传
ListMultipartUploads
cos:CreateSession
列出正在进行的分片上传
ListParts
cos:CreateSession
列出已上传的分片

CreateSession 会话机制

工作原理

CreateSession 是高性能桶数据面鉴权的核心机制。通过将身份验证和授权集中到会话创建阶段,后续数据面请求只需携带轻量级会话凭证,从而降低每次请求的鉴权延迟。
工作流程如下:
1. 客户端使用 CAM 永久/临时凭证调用 CreateSession,传入目标桶名称。
2. 服务端校验调用方身份及其 cos:CreateSession 权限,校验通过后返回临时凭证。
3. 客户端使用返回的临时凭证(AccessKeyId + SecretAccessKey + SessionToken)直接调用数据面 API。
4. 临时凭证过期后,客户端需重新调用 CreateSession 获取新凭证。

临时凭证

CreateSession 返回的临时凭证包含:
字段
说明
AccessKeyId
临时访问密钥 ID
SecretAccessKey
临时访问密钥
SessionToken
会话令牌,数据面请求必须携带
Expiration
凭证过期时间
临时凭证的关键特性:
桶级别作用域:凭证仅对创建时指定的高性能桶有效,不能跨桶使用。
有效期短:临时凭证有效期为 5 分钟,过期后需重新创建会话。
权限继承:临时凭证的权限与调用 CreateSession 时的身份权限一致。

会话模式(SessionMode)

创建会话时可以指定会话模式,控制临时凭证的读写权限:
模式
说明
ReadWrite
读写模式,允许所有对象级别操作
ReadOnly
只读模式,仅允许 GetObject、HeadObject、ListObjects 等读操作
如果未显式指定 SessionMode,系统将自动尝试最大权限:先尝试 ReadWrite,若策略不允许则降级为 ReadOnly。
可以在桶策略中通过条件键 cos:SessionMode 精细控制不同身份可以创建的会话类型。例如,限制某些只读角色只能创建 ReadOnly 会话。

权限策略

CAM 身份策略

通过 CAM 身份策略(附加到用户、用户组或角色)授予高性能桶的访问权限。策略示例:
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"cos:CreateSession"
],
"resource": [
"qcs::cosrapid:ap-nanjing:uid/1250000000:examplebucket-x--1250000000/*"
]
}
]
}
上述策略授予对指定高性能桶的数据面完整访问权限(通过 CreateSession 授权所有对象操作)。

场景一:授予子账号只读访问权限

{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"cos:CreateSession"
],
"resource": [
"qcs::cosrapid:ap-nanjing:uid/1250000000:examplebucket-x--1250000000/*"
],
"condition": {
"string_equal": {
"cos:SessionMode": "ReadOnly"
}
}
}
]
}
通过 cos:SessionMode 条件键限制子账号只能创建只读会话,从而限制其只能执行 GetObject、HeadObject、ListObjects 等读操作。

场景二:授予子账号对多个高性能桶的完整访问权限

{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"cos:CreateSession"
],
"resource": [
"qcs::cosrapid:ap-nanjing:uid/1250000000:training-data-x--1250000000/*",
"qcs::cosrapid:ap-nanjing:uid/1250000000:model-output-x--1250000000/*"
]
}
]
}
一条策略同时授权多个高性能桶的读写访问,适用于 AI 训练场景中同时需要读取训练数据桶和写入模型输出桶的情况。

场景三:授予子账号桶管理权限(控制面)

{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"cos:CreateBucket",
"cos:DeleteBucket",
"cos:HeadBucket",
"cos:PutBucketPolicy",
"cos:GetBucketPolicy",
"cos:DeleteBucketPolicy"
],
"resource": [
"*"
]
}
]
}
授予子账号在指定地域下创建和管理所有高性能桶的权限。通常只授予管理员角色。

场景四:完整权限(控制面 + 数据面)

{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": [
"cos:CreateBucket",
"cos:DeleteBucket",
"cos:HeadBucket",
"cos:PutBucketPolicy",
"cos:GetBucketPolicy",
"cos:DeleteBucketPolicy",
"cos:CreateSession"
],
"resource": [
"qcs::cosrapid:ap-nanjing:uid/1250000000:examplebucket-x--1250000000/*"
]
}
]
}
同时授予桶管理和数据读写的完整权限,适用于桶的完全管理者。

桶策略

高性能桶支持桶策略(Bucket Policy),可实现精细化的桶级别访问控制。桶策略示例:
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"principal": {
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000002"
]
},
"action": [
"cos:CreateSession"
],
"resource": [
"qcs::cosrapid:ap-nanjing:uid/1250000000:examplebucket-x--1250000000/*"
],
"condition": {
"string_equal": {
"cos:SessionMode": "ReadOnly"
}
}
}
]
}
上述策略授予指定用户以只读模式访问高性能桶的权限。

场景一:允许特定用户访问

{
"version": "2.0",
"statement": [
{
"effect": "allow",
"principal": {
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000002",
"qcs::cam::uin/100000000001:uin/100000000003"
]
},
"action": [
"cos:CreateSession"
],
"resource": [
"qcs::cosrapid:ap-nanjing:uid/1250000000:shared-data-x--1250000000/*"
]
}
]
}
允许多个用户以读写模式访问共享数据桶,适用于多团队协作场景。

场景二:授予特定用户读写模式访问

{
"version": "2.0",
"statement": [
{
"effect": "allow",
"principal": {
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000005"
]
},
"action": [
"cos:CreateSession"
],
"resource": [
"qcs::cosrapid:ap-nanjing:uid/1250000000:examplebucket-x--1250000000/*"
],
"condition": {
"string_equal": {
"cos:SessionMode": "ReadWrite"
}
}
}
]
}
明确授予特定用户 ReadWrite 模式的会话权限。在需要对方写入数据(如合作方上传训练结果)时使用。

场景三:拒绝特定账号访问(黑名单)

{
"version": "2.0",
"statement": [
{
"effect": "deny",
"principal": {
"qcs": [
"qcs::cam::uin/100000000001:uin/100000000099"
]
},
"action": [
"cos:CreateSession"
],
"resource": [
"qcs::cosrapid:ap-nanjing:uid/1250000000:examplebucket-x--1250000000/*"
]
}
]
}
显式拒绝特定账号创建会话,即使该账号通过其他策略获得了权限。Deny 策略优先级高于 Allow。

策略条件键

高性能桶支持以下条件键用于精细权限控制:
条件键
说明
适用场景
cos:SessionMode
限制可创建的会话模式(ReadWrite/ReadOnly)
控制读写权限级别

与标准 COS 桶鉴权的对比

维度
标准 COS 桶
高性能桶(Rapid Bucket)
鉴权模型
每次请求 V4 签名
双层模型:控制面 V4 签名 + 数据面会话凭证
权限粒度
桶/前缀/对象标签
仅桶级别
匿名访问
支持(公有读)
不支持
临时凭证有效期
STS 凭证最长 2 小时
会话凭证固定 5 分钟
ACL
支持
不支持(仅策略)
Presigned URL
支持
不支持

最佳实践

1. 使用临时凭证:生产环境建议使用 STS 临时凭证调用 CreateSession,避免永久密钥暴露。
2. 会话复用:在 5 分钟有效期内复用同一会话凭证执行多次请求,减少 CreateSession 调用频率。
3. 最小权限原则:按需授予 ReadOnly 或 ReadWrite 模式,避免过度授权。
4. SDK 自动管理:推荐使用腾讯云 COS SDK(最新版),SDK 内置会话自动创建和刷新逻辑,无需手动管理。
5. 网络隔离:确保客户端与高性能桶在同一 VPC 内,结合安全组规则进一步限制访问来源。

常见问题

Q1:为什么高性能桶不支持对象级别的权限策略?

高性能桶面向 AI/ML 训练、HPC 等高吞吐场景,访问模式通常是批量读写整个桶的数据。桶级别的权限控制已足够满足这些场景的安全需求,同时避免了对象级别策略评估带来的额外延迟开销。

Q2:会话凭证过期后正在进行的请求会受影响吗?

已经建立连接的请求(如正在传输的大文件下载)不会因凭证过期而中断。但新的请求需要使用有效的凭证。建议在凭证过期前主动刷新。

Q3:CreateSession 本身的鉴权方式是什么?

CreateSession 请求使用标准的 V4 签名鉴权,与桶级别操作的鉴权方式相同。只有通过 V4 签名校验且具有 cos:CreateSession 权限的请求才能成功创建会话。

Q4:高性能桶是否支持匿名访问(公有读)?

不支持。高性能桶仅面向通过身份验证的用户,所有访问必须通过有效的 CAM 身份凭证。