云数据库 GaussDB-权限设计规范

时间:2023-11-01 16:19:21

权限设计规范

  • 业务使用前必须由root用户为业务创建DATABASE、SCHEMA和USER,然后再赋予相关用户对应对象的权限。

    如果该用户不是该schema的owner,要访问schema下的对象,需要同时给用户赋予schema的usage权限和对象的相应权限。

  • DATABASE、SCHEMA和USER名使用小写。

    由于数据库默认会把对象名称转为小写,连接串里面如果出现大写的对象名无法连接到数据库。如create user MyUser;创建的用户,无法使用user=MyUser连接到数据库,需要用user=myuser才能连接到数据库。为了避免混淆,一律使用小写。

  • 合理对角色和用户赋权,应使用最小化权限原则。
    表1 数据库对象权限及说明

    对象

    权限

    说明

    数据库

    DATABASE

    CONNECT

    允许用户连接到指定的数据库

    TEMP

    -

    CREATE

    允许在数据库里创建新的模式

    模式

    SCHEMA

    CREATE

    允许在模式中创建新的对象

    USAGE

    允许访问包含在指定模式中的对象,若没有该权限,则只能看到这些对象的名字。

    函数

    FUNCTION

    EXECUTE

    允许使用指定的函数,以及利用这些函数实现的操作符

    表空间

    TABLESPACE

    CREATE

    允许在表空间中创建表,允许在创建数据库和模式的时候把该表空间指定为缺省表空间。

    TABLE

    INSERT,DELETE UPDATE,SELECT

    允许用户对指定表进行增删改查操作

    TRUNCATE

    允许执行TRUNCATE语句删除指定表中的所有记录。

    REFERENCES

    创建一个外键约束,必须拥有参考表和被参考表的REFERENCES权限

  • 通过角色而不是用户来管理权限。

    使用角色管理权限,即在角色中配置权限,再将角色赋予用户。

    通过角色管理权限,更便于多用户、用户变更等场景下的权限管理。例如:

    • 角色和用户为多对多关系,一个角色可以赋予多个用户,修改角色中的权限,被赋予角色的用户权限就可以同时更新。
    • 删除用户时,不会影响到角色。
    • 新建用户后可以通过赋予角色快速获取所需权限。
  • 在删除指定数据库时,应回收用户对该数据库的CONNECT权限,避免删除时仍然存在活跃的数据库连接而失败。
support.huaweicloud.com/usermanual-opengauss/opengauss_tips_0010.html