安全性控制
文章目录
安全性控制一、用户及角色(1)用户(2)角色二、权限设置及回收1.将系统权限授权给用户或者角色2.将数据库对象授权给角色或用户3.将用户或者角色的权限授权给其他用户或角色4.权限回收并清理用户一、用户及角色
(1)用户
通过CREATE USER创建的用户,默认具有LOGIN权限;通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。
创建、修改、删除用户:
创建用户jim,登录密码为Bigdata@123。
CREATE USER jim PASSWORD 'Bigdata@123';
查看用户列表
SELECT * FROM pg_user;
为用户jim追加有创建角色的CREATE ROLE权限
ALTER USER jim CREATEROLE;
删除用户
DROP USER jim CASCADE;
(2)角色
角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。在数据库中添加一个新角色,角色无登录权限。创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。
创建、修改、删除角色:
创建一个角色,名为manager,密码为Bigdata@123
CREATE ROLE manager IDENTIFIED BY 'Bigdata@123';
查看角色
SELECT * FROM PG_ROLES;
修改角色manager的密码为abcd@123。
ALTER ROLE manager IDENTIFIED BY 'abcd@123' REPLACE 'Bigdata@123';
修改角色manager为系统管理员
ALTER ROLE manager SYSADMIN;
删除角色manager
DROP ROLE manager;
二、权限设置及回收
1.将系统权限授权给用户或者角色
创建名为joe的用户:
CREATE USER joe PASSWORD 'Bigdata@123';
将sysadmin权限授权给joe:
GRANT ALL PRIVILEGES TO joe;
撤销joe用户的sysadmin权限
REVOKE ALL PRIVILEGES FROM joe;
2.将数据库对象授权给角色或用户
创建tpcds模式
CREATE SCHEMA tpcds;
tpcds模式下创建一张reason表
CREATE TABLE tpcds.reason(r_reason_sk INTEGERNOT NULL,r_reason_id CHAR(16) NOT NULL,r_reason_descVARCHAR(20) );
将模式tpcds的使用权限和表tpcds.reason的所有权限授权给用户joe
GRANT USAGE ON SCHEMA tpcds TO joe;
GRANT ALL PRIVILEGES ON tpcds.reason TO joe;
将tpcds.reason表中r_reason_sk、r_reason_id、r_reason_desc列的查询权限,r_reason_desc的更新权限授权给joe
GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe;
将数据库postgres的连接权限授权给用户joe,并给予其在postgres中创建schema的权限,而且允许joe将此权限授权给其他用户
GRANT create,connect on database postgres TO joe WITH GRANT OPTION;
创建角色tpcds_manager
CREATE ROLE tpcds_manager PASSWORD 'Bigdata@123';
将模式tpcds的访问权限授权给角色tpcds_manager,并授予该角色在tpcds下创建对象的权限,不允许该角色中的用户将权限授权给其人
GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager;
查看表reason权限:
SELECT * FROM information_schema.table_privileges WHERE table_name='reason';
3.将用户或者角色的权限授权给其他用户或角色
创建角色manager
CREATE ROLE manager PASSWORD 'Bigdata@123';
将joe的权限授权给manager,并允许该角色将权限授权给其他人
GRANT joe TO manager WITH ADMIN OPTION;
创建用户senior_manager
CREATE ROLE senior_manager PASSWORD 'Bigdata@123';
将用户manager的权限授权给该用户
GRANT manager TO senior_manager;
4.权限回收并清理用户
逐步回收manager权限
REVOKE joe FROM manager;
REVOKE manager FROM senior_manager;
删除manager用户
DROP USER manager;
逐步回收joe权限
REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe;
REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe;
逐步回收tpcds_manager权限
REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager;
删除 tpcds_manager用户
DROP ROLE tpcds_manager;
删除senior_manager用户
DROP ROLE senior_manager;
删除joe用户
DROP USER joe CASCADE;