多用户访问控制

    策略语法

    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/*"
                        ]
                    }
                }
            }
        ]
    }
    上一篇
    基于标签授权与鉴权
    下一篇
    外部账号接入