概述
用户策略与存储桶策略的区别
用户策略与存储桶策略的最大差别是:用户策略只描述效力(Effect)、操作(Action)、资源(Resource)和条件(Condition,可选),不描述身份(Principal)。因此,用户策略的使用方式为:
用户策略需要撰写完成后,再对子用户、用户组或角色执行关联操作。
用户策略不支持将操作和资源权限授予匿名用户。
预设策略和自定义策略
适用场景
当您关心用户能做什么,推荐用户策略时,可通过查找 CAM 用户,并检查其所属用户组的权限来了解用户能做什么。推荐场景有:
要配置对象存储(Cloud Object Storage,COS)服务级权限时,例如创建桶(PutBucket)、列举桶(GetService)。
需要使用主账号下所有 COS 桶和对象。
要对主账号下的大量 CAM 用户授予相同权限。
用户策略语法
策略语法
和存储桶策略一样,用户策略使用 JSON 语言描述,遵循 访问策略语言 的统一规范(委托人、效力、操作、资源、条件等)。但由于用户策略是直接关联到用户/用户组上的,因此用户策略不需要填写委托人(Principal)。
下表是用户策略和存储桶策略的区别对比:
元素 | 用户策略 | 存储桶策略 |
委托人 | 不填 | 必填 |
效力 | 必填 | 必填 |
操作 | 必填 | 必填 |
资源 | 必填 | 该存储桶内资源 |
条件 | 选填 | 选填 |
策略示例
以下是一个典型的用户策略示例,策略含义为:授权位于广州的存储桶 examplebucket-1250000000 所有 COS 操作的策略。您需要将策略保存后再关联到 CAM 子用户、用户组或角色方可生效:
{"Statement": [{"Effect": "Allow","Action": ["cos:*"],"Resource": ["qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*","qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/"]}],"Version": "2.0"}
通过用户策略授权子账号访问 COS
前提条件
配置步骤
CAM 提供了 预设策略和自定义策略。预设策略为 CAM 提供的系统预设策略,COS 相关策略见 预设策略;自定义策略支持用户自定义资源、操作等元素,更加灵活。下面说明如何新建一个自定义策略,为子账户授权:
1. 登录 CAM 控制台。
2. 选择策略 > 新建自定义策略 > 按策略语法创建,进入策略创建页面。
3. 您可按照实际需求选择空白模板 自定义授权策略,或选择与 COS 相关联的系统模板。这里以选择空白模板为例。
4. 选择空白模板,输入您的策略语法。需要包括以下基本元素:
resource:授权资源。
所有资源(
"*"
)指定存储桶(
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/*"
)存储桶内指定目录或对象(
"qcs::cos:ap-guangzhou:uid/1250000000:examplebucket-1250000000/test/*"
)action:授权操作。
effect:效力。选择
"allow"
(允许)或 "deny"
(拒绝)。condition:生效条件。可选项。
COS 提供了用户策略示例,您也可以参考以下文档,直接将策略内容复制粘贴到策略内容编辑框内,确认输入无误后单击完成即可。
5. 创建完成后,您可在 CAM 控制台 的策略 > 自定义策略中查看已创建的自定义策略,并将策略关联到子账号。
6. 勾选子账号并单击确定授权后,即可使用子账号访问所限定的 COS 资源。
预设策略
1. CAM 提供了一些预设策略,您可以在 CAM 控制台 的策略 > 预设策略中查看,搜索“COS”筛选。
2. 单击策略名,进入策略语法 > JSON 查看具体的策略内容。预设策略的资源(
resource
)被设置为 COS 所有资源("*"
),且不支持修改。若您需要对部分 COS 存储桶、对象授权,可以复制 JSON 的预设策略,创建 自定义策略。
表1和表2列出了 CAM 提供的 COS 相关的预设策略及说明。
表1:COS 预设策略
预设策略 | 说明 | JSON策略 |
QcloudCOSBucketConfigRead | 拥有该权限的用户可以读取 COS 存储桶配置 |
|
QcloudCOSBucketConfigWrite | 拥有该权限的用户可以修改 COS 存储桶配置 |
|
QcloudCOSDataFullControl | 包含 COS 存储桶内数据读、写、删除、列出的访问权限 |
|
表2:COS 操作与预设策略的关系
说明 | 操作 | QcloudCOS Bucket ConfigRead | QcloudCOS Bucket ConfigWrite | QcloudCOS Data FullControl | QcloudCOS Data ReadOnly | QcloudCOS Data WriteOnly | QcloudCOS Full Access | QcloudCOS GetService Access | QcloudCOS ListOnly | QcloudCOS Read OnlyAccess |
列举桶 | GetService | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
创建桶 | PutBucket | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
删除桶 | DeleteBucket | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
获取桶基本信息 | HeadBucket | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
获取桶的配置项 | GetBucket* | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ |
修改桶的配置项 | PutBucket* | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
获取桶的访问权限 | GetBucketAcl | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ |
修改桶的访问权限 | PutBucketAcl | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
列举桶内对象 | GetBucket | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
列举桶内对象的所有版本 | GetBucketObjectVersions | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
上传对象 | PutObject | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
分块上传 | ListParts InitiateMultipartUpload UploadPart UploadPartCopy CompleteMultipartUpload AbortMultipartUpload ListMultipartUploads | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ |
下载对象 | GetObject | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
查看对象元数据 | HeadObject | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ |
跨域(CORS)预检 | OptionsObject | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ |