策略基本元素
SAM中使用授权策略(policy)来描述授权的具体内容,授权内容包含以下基本因素:版本(version)、效果(effect)、资源(resource)和对资源所授予的操作权限(action)。
version - 版本
version 指定策略语言版本。必填且无法修改,修改策略内容后将自增。
effect - 效果
effect 有效取值为 allow 或 deny。示例:
"effect": "allow"
action - 操作
action 是对具体资源的操作,支持多值。
格式定义:
comb:<service-name>:<action-name>
格式说明:
- comb:代表网易云基础服务;
- service-name:代表网易云基础服务产品业务代号,如 rds、nos 等;
- action-name:操作接口名称,如 GetBucket、CreateDatabase 等(操作列表可以在各产品文档中找到);
- 支持通配符前缀匹配,区分大小写。
示例:
"action":[
"comb:nos:GetBucket",
"comb:nlb:GetLb"
]
"action":[
"comb:nos:Get*",
"comb:nlb:Get*"
]
resource - 资源
resource 是被授权的具体资源对象,如 rds 实例,nos 桶等。
Attention
resource 最多只能定义 5 个
格式定义:
comb:<service-name>:<region>:<account-id>:<relative-id>
格式说明:
- comb:代表网易云基础服务;
- service-name:网易云基础服务产品业务代号,如 rds、nos 等;
- region:地域,目前支持 * 、cn-east-1、cn-north-1,其中 * 表示所有分区,cn-east-1表示杭州分区,cn-north-1表示北京分区;
- relative-id: 与 service 相关的资源描述部分,其语义由具体 service 指定,类似于文件路径的树状结构,比如 cdn 的 domain、rds 的 instance,支持使用通配符 * 号前缀匹配。
示例:
"resource": [
"comb:cdn:*:*:domain/163.com"
]
"resource": [
"comb:nos:*:*:mybucket/home/*"
]
condition - 条件
condition子句是策略语法中可选的子句,主要作用是限制授权的条件。
格式定义:
{
<condition-operator> : {
<condition-key1> : [
<condition-value1>,
<condition-value2>,
...
]
}
}
格式说明:
一个Condition子句可以包含多个条件,每个条件有运算符和键值对组成。键值对可以有一个值,也可以由多个值。
条件运算符:
String | Numeric | Date and Time | Boolean |
---|---|---|---|
stringEquals | numericEquals | dateEquals | bool |
stringNotEquals | numericEquals | dateNotEquals | - |
stringEqualsIgnoreCase | numericLessThan | dateLessThan | - |
stringNotEqualsIgnoreCase | numericLessThanEquals | dateLessThanEquals | - |
stringLike | numericGreaterThan | dateGreaterThan | - |
stringNotLike | numericGreaterThanEquals | dateGreaterThanEquals | - |
条件关键字:
条件关键字(condition-key)分为全局条件键和服务条件键。
NCS全局条件键关键字 | 类型 | 说明 |
---|---|---|
ncs:currentTime | datetime | 请求时间,使用UTC时间,格式使用ISO 8601。如,2017-09-01T12:00:00Z |
ncs:epochTime | long | 请求时间戳,使用UTC时间,单位为秒,如,1506308397 |
服务条件键请参考各服务的文档。
示例:
"condition":{
"dateGreaterThan" : {
"ncs:currentTime" : "2017-08-05T09:30:06Z"
}
"dateLessThan" : {
"ncs:epochTime" : "1504195200"
}
}