策略(policy)由若干元素构成,用来描述授权的具体信息。核心元素包括委托人(principal)、操作(action)、资源(resource)、生效条件(condition)以及效力(effect)。元素保留字仅支持小写。它们在描述上没有顺序要求。对于策略没有特定条件约束的情况,condition 元素是可选项。
1. 版本(version)
描述策略语法版本。该元素是必填项。目前仅允许值为“2.0”。
2. 语句(statement)
描述一条或多条权限的详细信息。该元素包括 principal、action、resource、condition、effect 等多个其他元素的权限或权限集合。一条策略有且仅有一个 statement 元素。
3. 委托人(principal)
描述策略授权的实体。包括用户(主账号、子账号),未来会包括角色、联合身份用户等更多实体。仅支持在角色的信任策略和 cos 的存储桶策略中使用该元素。
4. 操作(action)
描述允许或拒绝的操作。操作可以是 API(以 name 前缀描述)或者功能集(一组特定的 API,以 actionName 前缀描述)。该元素是必填项。
{"version": "2.0","statement": [{"effect": "allow","action": ["ES:CreateServerlessSpace","ES:CreateServerlessInstance","ES:DescribeServerlessInstances","ES:CreateServerlessInstanceUser","ES:DescribeServerlessInstanceUsers","ES:CreateServerlessDi","ES:DescribeServerlessDi","ES:DeleteServerlessInstanceUser","ES:DeleteServerlessDi","ES:DeleteServerlessInstance","ES:DescribeServerlessSpaces","ES:SearchServerlessData"],"resource": ["*"]}]}
5. 资源(resource)
6. 生效条件(condition)
{"version": "2.0","statement": [{"effect": "allow","action": ["cam:*"],"resource": ["*"],"condition": {"ip_equal": {"qcs:ip": ["10.9.189.79"]}}}]}
7. 效力(effect)
描述声明产生的结果是“允许”还是“显式拒绝”。包括 allow(允许)和 deny (显式拒绝)两种情况。该元素是必填项。
8. 策略样例
该样例描述为:允许属于主账号 APPID(简称 UID) 1238423下的子账号 ID(简称 UIN)3232523, 对北京地域的 COS 存储桶 bucketA 和广州地域的 COS 存储桶 bucketB 下的对象 object2,在访问 IP 为10.121.2.*网段时,拥有所有 COS 读 API 的权限以及写对象的权限,以及可以发送消息队列的权限。
{"version": "2.0","statement": [{"principal": {"qcs": ["qcs::cam::uid/1238423:uin/3232523"]},"effect": "allow","action": ["cos:PutObject","cos:GetObject","cos:HeadObject","cos:OptionsObject","cos:ListParts","cos:GetObjectTagging"],"resource": ["qcs::cos:ap-beijing:uid/1238423:bucketA-1238423/*","qcs::cos:ap-guangzhou:uid/1238423:bucketB-1238423/object2"],"condition": {"ip_equal": {"qcs:ip": "10.121.2.10/24"}}},{"principal": {"qcs": ["qcs::cam::uid/1238423:uin/3232523"]},"effect": "allow","action": "cmqqueue:SendMessage","resource": "*"}]}