02_greenplum角色权限及客户端认证管理

1、什么是角色

  Role的组成:用户(User)和组(Group)

  跟OS的role没有关系

  User通过Master登录和认证

  Role是定义在GPDB系统级别的

  初始化SUPERUSER ROLE:gpadmin

 

2、角色与权限安全的最佳实践

  保护系统User gpadmin

  为每个登录的User分配不同的Role

  使用Group来管理权限:统一管理、分配权限。

  控制具备SUPERUSER属性的User数量

 

3、创建Role

(1)创建用户User Role

   使用create role创建一个User Role

   例:create role demo_role with login;

 

  createdb | nocreatedb :是否创建数据库的权限

  createrole | nocreaterole:是否创建角色的权限

  inherit | noinherit:是否继承

  login | nologin:是否能登陆,一般要给

  connection limit connlimit:限制连接数,管理员平衡它的负载,2或3等

  password ‘password_demo’:设置这个用户的登录密码

  encrypted | unencrypted:是否对密码进行加密,默认要加密

  valid until ‘timestamp_demo’:这个用户直到什么时间是有效的

  resource queue_name:设置指定的资源队列

  deny { deny_interval | deny_point }:限制可以访问数据库的时间;例如数据库的ETL,就不能访问数据库

 

(2)创建组Group Role

  组一般管理分配任务

  1)使用create role 创建一个Group Role:create role admin_group createrole createdb;

  2)添加或删除Member(User Role)

    添加:grant admin_group to role_demo;

    删除:revoke admin_group from role_demo;

 

(3)赋予合适的权限给group role

   GRANT ALL ON TABLE mytable TO admin_group;

  GRANT ALL ON SCHEMA myschema TO admin_group;

  GRANT ALL ON DATABASE mydb TO admin_group;

 

(4)获取管理属性

  组没有创建角色和创建库的权限,需要输入这个命令才能创建:SET ROLE admin_group

 

4、管理对象权限

 

 每个对象的权限必须被独立的授权

(1)使用GRANT SQL 命令给指定的Role授权一个对象:

  GRANT INSERT ON mytable TO role_demo;

(2)使用DROP OWNED 和 EASSIGN OWNED命令来取消Role的Owner权限:

  REASSIGN OWNED BY role_demo TO tom;(只能用超级用户来取消) 

  DROP WONEN BY role_demo;

 

(3)模拟Row或者Column级别的权限控制

  本身不支持Row和Column级别的访问控制,可以通过View方式模拟。

(4)密码加密

  

5、基于时间的登录认证

  访问限制可以到具体时间点;

  时间约束仅仅对于设置的Role有效;

(1)需要的权限

  SUPERUSER 或者 CREATEROLE 权限是必须的;

 

(2)如何添加时间约束

  在CREATE ROLE 或者 ALTER ROLE的时候使用DENY关键字来实现:

  1)某天或者某个时间访问限制;

  2)一个开始时间和结束时间的访问控制;

 

 

(3)基于时间的登录认证

  

 

 

(4)配置客户端认证

  

 

posted @ 2022-10-23 17:54  小王同学学编程  阅读(304)  评论(0编辑  收藏  举报
levels of contents