• ACL - Access control list
    • 简介
    • 如何使用 ACL ?

    ACL - Access control list

    简介

    ACL, 又称访问控制列表,是使用以访问控制矩阵为基础的访问控制方法,每一个对象对应一个串列主体。访问控制表描述每一个对象各自的访问控制,并记录可对此对象进行访问的所有主体对对象的权限。

    很多类型的系统都实现了 ACL, 例如:

    • 文件系统 ACLs
      参考 Unix 文件系统权限
    • 网络 ACLs
      路由器、交换机访问
    • SQL 实现

    就 Unix 文件系统而言, ACL 指的是文件的操作权限列表。ACL 指定拥有该对象访问权的用户或系统进程, 以及该对象上允许被执行的操作。每一个 ACL 入口均会指定一个主体和操作。例如, 某个文件的 ACL 包含 704, 则赋予了文件的创建者对该文件的读写权限, 而其他人只能对该文件执行读操作。

    知晓云的 ACL 机制沿用 Unix 的 ACL 设计思想,使用角色(创建者、用户组、任何人)和操作(读、写)的权限数字来进行描述。不用慌张,在实际使用中,你可以完全忽略这些看不懂的数字的存在,它们都被翻译成了管理面板上的操作选项和 SDK 里的方法,以供使用。

    下面,我们将以一个具体的例子,来演示 ACL 在实际业务中如何发挥作用。

    如何使用 ACL ?

    假设我们需要实现一个简易版朋友圈。

    在这个场景里,有如下产品要求:

    1. 任何人都可以发表朋友圈
    2. 任何人都可以看其他人发表的朋友圈
    3. 只有自己才能修改删除自己发的朋友圈

    在知晓云里,我们实现的步骤如下:

    1. 创建一个数据表,取名 “moments”
    2. 设置数据表的 ACL 权限如下:

    设置数据表的 ACL

    在 ACL 的设置中,我们对数据表的权限和数据行的权限进行了区分,其中,数据表控制添加数据的权限;数据行控制读取和修改删除的权限。

    在上面的例子中,将 “数据表录入权限” 设置为 “所有人”,使得任何人都可以向数据表里添加新数据,也即,任何人都可以发表朋友圈;
    将 ”行的默认读写权限“ 设置为 “所有人可读”、“创建者可写”,使得数据行默认可以被任何人读取,而这条数据只能被它的创建者修改或者删除。