策略基本元素

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子句可以包含多个条件,每个条件有运算符和键值对组成。键值对可以有一个值,也可以由多个值。

条件运算符:
StringNumericDate and TimeBoolean
stringEqualsnumericEqualsdateEqualsbool
stringNotEqualsnumericEqualsdateNotEquals-
stringEqualsIgnoreCasenumericLessThandateLessThan-
stringNotEqualsIgnoreCasenumericLessThanEqualsdateLessThanEquals-
stringLikenumericGreaterThandateGreaterThan-
stringNotLikenumericGreaterThanEqualsdateGreaterThanEquals-
条件关键字:

条件关键字(condition-key)分为全局条件键和服务条件键。

NCS全局条件键关键字类型说明
ncs:currentTimedatetime请求时间,使用UTC时间,格式使用ISO 8601。如,2017-09-01T12:00:00Z
ncs:epochTimelong请求时间戳,使用UTC时间,单位为秒,如,1506308397

服务条件键请参考各服务的文档。

示例:
"condition":{
    "dateGreaterThan" : {
        "ncs:currentTime" : "2017-08-05T09:30:06Z"
    }
    "dateLessThan" : {
        "ncs:epochTime" : "1504195200"
    }
}