用户权限控制

YMatrix 采用基于角色的用户权限管理方式,简化对权限的授权管理。借助角色机制,当给一组权限相同的用户授权时,不需对这些用户逐一授权,只要把权限授予角色,再将角色授予这组用户即可。只需要对角色进行管理,便可以实现对这组用户的权限的管理。

一个角色可以被视为一个数据库用户,或者一组数据库用户。角色和用户是相同的两个对象,唯一不同的是在创建时角色的缺省值中有没有 LOGIN 权限。拥有 LOGIN 权限的角色可以认为是一个用户。可以将角色赋予给一个用户使得该用户拥有这个角色中的所有权限。一个用户也可以属于不同角色,拥有不同角色的权限。角色还可以拥有数据库对象(如表,模式,序列),并可以把这些对象上的权限赋予给其他角色。可以通过 GRANT&REVOKE语句,将特定的数据对象的指定权限授权给用户。

  • ACL 权限缩写
权限 缩写 适用对象类型
SELECT r (“读”) LARGE OBJECT, SEQUENCE, TABLE (and table-like objects), table column
INSERT a (“增补”) TABLE, table column
UPDATE w (“写”) LARGE OBJECT, SEQUENCE, TABLE, table column
DELETE d TABLE
TRUNCATE D TABLE
REFERENCES x TABLE, table column
TRIGGER t TABLE
CREATE C DATABASE, SCHEMA, TABLESPACE
CONNECT c DATABASE
TEMPORARY T DATABASE
EXECUTE X FUNCTION, PROCEDURE
USAGE U DOMAIN, FOREIGN DATA WRAPPER, FOREIGN SERVER, LANGUAGE, SCHEMA, SEQUENCE, TYPE
  • 访问权限摘要
对象类型 所有权限 默认 PUBLIC 权限 psql 命令
DATABASE CTc Tc \l
DOMAIN U U \dD+
FUNCTION or PROCEDURE X X \df+
FOREIGN DATA WRAPPER U none \dew+
FOREIGN SERVER U none \des+
LANGUAGE U U \dL+
LARGE OBJECT rw none
SCHEMA UC none \dn+
SEQUENCE rwU none \dp
TABLE (and table-like objects) arwdDxt none \dp
Table column arwx none \dp
TABLESPACE C none \db+
TYPE U U \dT+

示例

  • 用户miriam创建了表mytable并且执行了如下一组授权语句:

    GRANT SELECT ON mytable TO PUBLIC;
    GRANT SELECT, UPDATE, INSERT ON mytable TO admin;
    GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw;
  • 则该表上的 ACL 信息如下:

    \dp mytable
                                   Access privileges
    Schema |  Name   | Type  |   Access privileges   |   Column privileges   | Policies
    -−-−-−-−+-−-−-−-−-+-−-−-−-+-−-−-−-−-−-−-−-−-−-−-−-+-−-−-−-−-−-−-−-−-−-−-−-+-−-−-−-−-−
    public | mytable | table | miriam=arwdDxt/miriam+| col1:                +|
         |         |       | =r/miriam            +|   miriam_rw=rw/miriam |
         |         |       | admin=arw/miriam      |                       |