策略语法
所有文档

          多用户访问控制

          策略语法

          ACL语法简介

          背景

          百度智能云支持基于用户角色的权限校验和基于资源的权限校验。对用户请求,会根据请求身份得到与用户角色关联的accessControlList,进行鉴权;还会根据用户请求的资源路径,得到与资源关联的ACL(Access Control List 访问控制列表),进行鉴权。

          名词解释

          Access Control List (ACL):附加在用户角色或资源上的一个权限控制列表。用户对于资源的权限控制,可以是resource-based也可以是user-based。用户可以通过设置ACL,来对各个服务进行访问上的细粒度控制。ACL是一个列表,由一条或多条entry组成。

          User-based ACL:附加于用户的权限控制列表。添加用户或组到特定的权限策略,在策略中指定此角色对不同资源的权限。请求到来时,通过用户及其所在组所附加的权限列表集合,遍历权限描述进行鉴权。

          Resource-based ACL:附加于资源的权限控制列表。对特定level的资源(如BOS的bucket级别),在创建资源的同时指定其适用的策略,并在策略描述中指定对不同用户的权限。用户请求资源时,得到资源上所关联的权限策略,遍历策略中的权限描述进行鉴权。

          IAM ACL语法

          IAM ACL使用JSON格式的策略描述语言基于user或resource进行细粒度的访问控制。命名方法使用首字母小写的驼峰命名法。

          字段总览

          字段名称 是否必选 字段含义
          Id 可选 本ACL的标识符,用来标识本ACL的id或对ACL进行描述
          accessControlList 必选 ACL的主元素,标识ACL主体的开始,由一组statement组成
          eid 可选 标识子acl entry的id,或者对该entry进行描述
          service 必选 本条entry影响的服务组件,"*"表示所有服务
          region 必选 本entry影响的区域,"_"表示所有区域(对全局服务,强制为"_")
          effect 必选 指定能够与本条entry匹配上的request,是否允许其继续执行
          grantee 可选 指明本entry的受影响人,只适用于resource ACL且必选
          permission 必选 指明本entry所影响的权限
          resource 必选 指明本entry所影响的资源
          condition 可选 指明策略生效的条件,该字段下存在子字段
          • Grantee子字段:
          grantee子字段 字段含义 示例
          id 授权(或禁止)的accountid b124deeaf6f641c9ac27700b41a350a8
          user 授权(或禁止)的用户 bob
          group 授权(或禁止)的组 developers
          saml-provider 上传的IDP名称 developers
          • Condition子字段:
          Condition子字段 字段含义
          ipAddress 本statement生效的ip地址范围
          Time 本statement生效的时间范围
          Referer 本statement生效的referer

          ACL与entry之间的关系:

          • 每个resource具有一条独立的ACL
          • 每条ACL由一条或多条entry组成

          entry之间的关系:

          • entry之间是相互独立的关系
          • 相互独立的含义即:每个entry相互独立,entry逻辑判断与在ACL中的位置无关

          综合示例

          {
              "id": "id or description",
              "accessControlList": [
                  {
                      "eid": "eid or description",
                      "service": "bce:bos",
                      "region": "bj",
                      "effect": "Allow",
                      "permission": [
                          "CreateBucket",
                          "READ"
                      ],
                      "resource": [
                          "bucketname/objectname"
                      ],
                      "grantee": [
                          {
                              "id": "accountid",
                              "user": "bob",
                              "saml-provider":"saml.xml"
                          }
                      ],
                      "condition": {
                          "ipAddress": [
                              "192.168.0.0/16",
                              "192.169.0.0/16"
                          ],
                          "time": {
                          "in": [
                                  {
                                      "greaterThan":"2010-06-01T23:00:00Z",
                                      "lessThan":"2010-07-01T23:00:00Z "
                                  },
                                  {
                                      "greaterThan":"2010-08-01T23:00:00Z "
                                  }
                              ]
                          },
                          "referer": {
                              "stringEquals": [
                                  "www.abc.com",
                                  "www.example.com"
                              ],
                              "stringLike": [
                                  "www.baidu.com/*"
                              ]
                          }
                      }
                  }
              ]
          }
          上一篇
          基于标签授权与鉴权
          下一篇
          外部账号接入