tencent cloud

文档反馈

管理用户权限

最后更新时间:2024-02-19 10:49:28

    角色概述

    在云数据仓库 PostgreSQL 中使用 roles 来对数据库的访问权限进行管理,角色(roles)的概念实际上包含了 users 与 groups 两部分,一个 role 可以是数据库普通用户,即 user,也可以是数据库的用户组,即 group。角色可以拥有数据库对象(例如表、视图等),并且可以将这些对象的访问权限分配给其他角色。
    集群创建时,会提示用户设置初始用户名和密码,这个初始用户为“管理员用户”,该用户拥有创建用户、创建数据库、登录的权限。集群创建完成后,可以使用“管理员用户”连接数据库,一般地,管理员用户拥有最大化的权限,也意味着这个账号要被尽量少的人使用,因此您可以使用管理员用户创建其他用户,并为这些用户授予所需要的权限,具体授权参考 用户组对象权限管理。您也可以创建数据库以及其他对象,参考 定义数据库。登录数据库可以参考 连接数据库

    创建用户

    role 分为用户 user 和用户组 group,通常 user 级别的 role(后面统称 user)具有能够登录云数据仓库 PostgreSQL 数据库并初始化一个会话的权限,因此,在建立一个 user 时,必须为其赋予 LOGIN 的权限。例如:
    CREATE role jsmith with LOGIN;
    通过上述操作,创建了一个具有 LOGIN 权限的 user,通过这个 user,可以对数据库进行连接。云数据仓库 PostgreSQL 对用户的访问管理除了 LOGIN 权限外,还有以下其他权限,可以在使用 CREATE ROLE 语句创建角色时对其所能拥有的权限进行授权。
    权限取值
    作用
    默认值
    SUPERUSER Ι NOSUPERUSER
    超级用户权限,只有超级用户才能创建其他的超级用户
    NOSUPERUSER
    CREATEDB Ι NOCREATEDB
    创建数据库的权限
    NOCREATEDB
    CREATEROLE Ι NOCREATEROLE
    创建和管理角色
    NOCREATEROLE
    INHERIT Ι NOINHERIT
    决定了用户继承所属 group 的权限
    INHERIT
    LOGIN Ι NOLOGIN
    连接登录数据库的权限,一般用户拥有该权限,用户组无该权限
    NOLOGIN
    CONNECTION LIMIT
    限制能够并发连接数据库的连接数,-1表示无限制
    -1
    CREATEEXTTABLE Ι NOCREATEEXTTABLE
    创建外表的权限
    NOCREATEEXTTABLE
    PASSWORD
    创建用户时设置密码
    VALID UNTIL 'timestamp'
    密码的到期时间
    RESOURCE QUEUE 'name'
    用户连接后,建立的查询被安排到的资源队列名
    pg_default
    除了在创建用户时能够对其进行权限授予,还能在创建完成后通过 ALTER ROLE 语法对其进行权限的重新赋予。例如:
    ALTER role jsmith with CREATEROLE;

    用户组

    group,即用户组,是一种特殊的 role,没有赋予 LOGIN 权限,group 通常被设定为经常搭配使用的权限组合,权限可以被作为一个整体授予给某个用户或者从某个用户处取消。
    您可以通过使用以下语句来创建一个被授予权限组合的角色,即 group。
    Create role, Create DB, Cannot login;
    您还可以很方便地通过 GRANT TO 或者 REVOKE FROM 语句建立或者取消其他用户与该用户组的从属关系,拥有从属关系的用户会从这个用户组继承权限。
    GRANT TO 语句示例:
    
    用户 jsmith 归属于用户组 manager。
    REVOKE FROM 语句示例:
    
    将用户 jsmith 归属于用户组 manager 的关系取消。

    对象权限管理

    当一个对象(例如 database、table、schema、function 等)被创建时,必然会有一个归属者,这个归属者一般为执行创建对象语句的用户。初始时,只有归属者对这个对象拥有所有的操作权限。例如:
    GRANT INSERT ON test TO jsmith;
    我们可以通过上述语句,将 test 的 INSERT 权限授予 jsmith 用户,同样也可以通过 REVOKE FROM 取消。
    同样,也可以通过 REASSIGN OWNED 语句将归属于某个用户的所有对象转移给别的用户,例如:
    SET ROLE jsmith; //切换到jsmith用户
    CREATE TABLE jsmithtest (age int, id int); //创建新的表
    SET ROLE gpadmincloud; //切回到超级用户
    reassign owned by jsmith to lambuser; //将归属于jsmith的对象都转移给lambuser。
    由于归属于超级用户的对象不能转移给别的用户,因为有属于系统的对象归属于这个超级对象,因此我们需要使用非超级用户建立一个表。
    
    完成对象从 jsmith 到 lambuser 归属权的转移。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持