Policy语法结构
Policy结构包括Policy版本号及授权语句列表。每个授权语句又包含Effect(授权类型)、Resource(资源列表)、Action(对资源所授予的操作权限列表)。
Policy的基本结构如下:
支持语法格式
目前CIAM仅仅支持JSON格式的Policy描述。当创建或更新Policy时,CIAM会首先检查JSON格式的正确性。用户也可以使用一些在线的JSON格式验证器和编辑器来校验JSON文本的有效性。
Policy语法
语法描述:
{
"Version": "1",
"Statement":
[
{
"Effect": "Allow | Deny",
"Action": "*" | [ , , ...],
"Resource": "*" | [, , ...]
}
...
]
}
Policy语法说明:
- 当前支持的Policy版本为1。
- 一个Policy可以有多条授权语句(Statement)。每条授权语句要么是Deny,要么是Allow。一条授权语句中,Action是一个支持多个操作的列表,Resource也是一个支持多个对象的列表。
- 一个用户可以被授予多个Policy,当这些Policy存在多条授权语句既包含有Allow又包含有Deny时,遵循Deny优先(只认Deny不认Allow)原则。
- 当元素取值为字符串值时,可以支持()模糊匹配。比如,”cos:Get” 可以表示cos的所有以Get开头的API操作名称。
Version
权限策略版本号
Effect
Effect取值为Allow或Deny,代表允许或者拒绝该动作。比如,
"Effect": "Allow"
Action
授权动作,Action取值为云服务所定义的API操作名称,其格式定义如下:
:
格式说明:
- service-name: 服务名称,如cec,cos等;
- action-name: service相关的api操作接口名称
样例描述:
"Action": ["cos:ListBuckets","cec:Describe*"]
Resource
Resource通常指操作对象,比如CEC虚拟机实例,COS存储对象。我们使用如下格式来命名服务的资源。
ccs::::
格式说明:
- ccs: 云平台缩写
- service-name: 服务名称,如cec,cos,rds等
- region: 数据中心,如果不支持该项,可以使用通配符“*”号来代替
- account-id: 主账户ID,比如 1234567890123456,也可以用“*”代替
- resource-relative-Id:每个服务定义的资源描述,可使用“*”。如在cos中,"ccs:cos:cn-hangzhou:123456789:bucket/1.txt" 表示一个对象,;
样例描述:
"Resource": ["ccs:cos:cn-hangzhou:1234567890:bucket/1.txt","ccs:cec:cn-hangzhou:*:*"]
Policy样例
下面该样例包含两条授权语句:第1条授权语句是允许对cos的mybucket存储桶中的对象具有读访问权限,第2条授权语句是允许对cec的杭州region所有资源有查看权限。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cos:ListObjects",
"cos:GetObject"
],
"Resource": [
"ccs:cos:*:*:mybucket",
"ccs:cos:*:*:mybucket/*"
]
},
{
"Effect": "Allow",
"Action": "cec:Describe*",
"Resource": "ccs:cec:cn-hangzhou:*:*"
}
]
}