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)配置客户端认证