数据库原理实验(openGauss) 安全性控制

Posted BkbK-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库原理实验(openGauss) 安全性控制相关的知识,希望对你有一定的参考价值。

安全性控制

一、用户及角色

(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            INTEGER               NOT NULL,
        r_reason_id            CHAR(16)              NOT NULL,
        r_reason_desc                VARCHAR(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;
    

在这里插入图片描述

以上是关于数据库原理实验(openGauss) 安全性控制的主要内容,如果未能解决你的问题,请参考以下文章

数据库原理实验(openGauss) 使用JDBC连接数据库

数据库原理实验(openGauss)事务与并发控制

数据库原理实验(openGauss)完整性控制

数据库原理实验(openGauss)实验报告

数据库原理实验(openGauss)金融场景化实验

数据库原理实验(openGauss)金融场景化实验