5.4 安全管理

5.4.1 数据库系统安全概述

数据库系统安全指为数据库系统采取安全保护措施,防止数据库系统及其数据遭到破坏、篡改和泄漏。

数据库安全:采取各种安全措施对数据库及其相关文件进行保护,以确保数据库的数据安全。

典型的数据库安全问题如下

  • 黑客利用系统漏洞,攻击系统
  • 内部人员非法地泄露、篡改数据。
  • 系统运维人员操作失误
  • 系统软硬件故障
  • 意外灾害事件

措施

  • 针对数据库系统的运维机构及其管理人员,应制定严格管理制度,并在运营管理中实施规范的操作流程和权限控制;

  • 针对数据库用户,可以采取用户身份认证、权限控制、数据加密等

  • 针对意外的灾害事件,可以采取高可靠性系统容错技术、数据备份与恢复方法、系统异地容灾等技术

5.4.2 数据库系统安全模型

其安全体系模型如图,其中最基本的安全管理技术手段就是DBMS提供的用户授权与访问权限控制功能

数据库存取控制安全模型

5.4.3 用户管理

1.用户创建

只有特定权限的用户可以创建其他用户,如系统管理员用户或超级用户。

基本格式

CREATE USER 用户账号名 WITH [ options ];

options如下:

LOGIN | NOLOGIN    登录权限
SUPERUSER | NOSUPERUSER  超级用户
CREATEDB | NOCREATEDB:  创建数据库的权限
CREATEROLE | NOCREATEROLE  创建角色的权限
INHERIT | NOINHERIT   继承角色的权限
REPLICATION | NOREPLICATION  复制的权限

CONNECTION LIMIT connlimit:指定创建的用户访问数据库连接的数目限制。
BYPASSRLS | NOBYPASSRLS:指定创建的用户是否具有绕过行安全策略权限。
[ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password':指定创建的用户密码是否需要加密。
VALID UNTIL 'timestamp':指定创建的用户密码失效时间。
IN ROLE role_name [, ...] :指定创建的用户成为哪些角色的成员。

【例】创建一个新用户

CREATE USER "userA" WITH
PASSWORD '123456'
LOGIN
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
INHERIT
NOREPLICATION
CONNECTION LIMIT -1;	//数据库连接数不受限制

2.用户修改

在数据库系统中,我们还可对数据库已有用户进行属性修改

基本格式

ALTER USER <用户名> [ [ WITH ] option [ ... ] ]; 修改用户的属性
ALTER USER <用户名> RENAME TO <新用户名>;     修改用户的名称
ALTER USER <用户名> SET <参数项> { TO | = } { value | DEFAULT };  修改用户的参数值
ALTER USER <用户名> RESET <参数项>;   重置用户参数值

【例:修改用户的属性】

ALTER USER "userA"
PASSWORD 'gres123'
CONNECTION LIMIT 10;

3.用户删除

基本格式

DROP USER <用户名>;
DROP USER userA;

5.4.4 权限管理

用户的数据库对象访问权限由系统管理员进行授予。若没有赋予权限,用户仅仅只能进行基本访问操作。

不同用户有不同的权限

系统管理员(超级用户)在数据库服务器系统中具有最高权限,可以对其他角色或用户进行权限分配和管理。

数据库对象拥有者对其所拥有的对象具有全部权限,普通用户(user)只具有被赋予的数据库访问操作权限。

授权格式

授予权限、撤回权限、拒绝权限

GRANT <权限名> ON <对象名> TO {数据库用户名|用户角色名};
REVOKE <权限名> ON <对象名> FROM {数据库用户名|用户角色名};
DENY <权限名> ON <对象名> TO {数据库用户名|用户角色名};

【例】工程项目管理系统中,赋予员工用户对表的读取数据权限

GRANT SELECT ON Department TO "userA";
GRANT SELECT ON Employee TO "userA";
GRANT SELECT ON Project TO "userA";
GRANT SELECT ON Assignment TO "userA";

5.4.5 角色管理

将一组具有相同权限的用户定义为角色(Role),方便管理。

基本格式

CREATE ROLE <角色名> [ [ WITH ] option [ ... ] ]; 创建角色
ALTER ROLE <角色名> [ [ WITH ] option [ ... ] ]; 修改角色属性
ALTER ROLE <角色名> RENAME TO <新角色名>; 修改角色名称
ALTER ROLE <角色名> SET <参数项> { TO | = } { value | DEFAULT }; 修改角色参数值
ALTER ROLE <角色名> RESET <参数项>; 复位角色参数值
DROP ROLE <角色名>; 删除指定角色

option为角色属性

SUPERUSER | NOSUPERUSER:指定创建的角色是否为超级用户。
CREATEDB | NOCREATEDB:指定创建的角色是否具有创建数据库的权限。
CREATEROLE | NOCREATEROLE:指定创建的用户是否具有创建角色的权限。
INHERIT | NOINHERIT:指定创建的角色是否具有继承父角色的权限。
LOGIN | NOLOGIN:指定创建的角色是否具有登录权限。
REPLICATION | NOREPLICATION:指定创建的角色是否具有复制权限。
BYPASSRLS | NOBYPASSRLS:指定创建的角色是否具有绕过行安全策略权限。
CONNECTION LIMIT connlimit:指定创建的角色访问数据库连接的数目限制。
[ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password':指定创建的角色密码是否需要加密。
VALID UNTIL 'timestamp':指定创建的角色密码失效时间。
IN ROLE role_name [, ...] :指定创建的角色成为哪些角色的成员。
ROLE role_name [, ...] :指定创建的角色成为哪些角色的组角色。
USER role_name [, ...] :指定创建的角色成为哪些用户的角色。

【例】创建角色Role_Manager

CREATE ROLE "Role_Manager" WITH
LOGIN
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
INHERIT
NOREPLICATION
CONNECTION LIMIT -1;

再给Role_Manager角色赋予操作数据库中的表的权限

GRANT SELECT,INSERT,UPDATE,DELETE ON Department TO "Role_Manager";
GRANT SELECT,INSERT,UPDATE,DELETE ON Employee TO "Role_Manager";
GRANT SELECT,INSERT,UPDATE,DELETE ON Project TO "Role_Manager";
GRANT SELECT,INSERT,UPDATE,DELETE ON Assignment TO "Role_Manager";
posted @ 2022-04-24 22:02  Dinesaw  阅读(144)  评论(0编辑  收藏  举报