数据库系统概论 ---- 第四章 -- 数据库安全性(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 数据库系统概论 ---- 第四章 -- 数据库安全性(二)

由于U5前面只被授予了sc表插入的权限,所以只能看见mydb1下sc表

GRANT INSERT
ON TABLE sc
TO 'U6'@'localhost';

在root用户下查看U6的权限:

SHOW GRANTS FOR 'U6'@'localhost';

由于U5没有给U6转授权限的权限,所以U6只能使用权限,不能授予其他用户权限。

6. REVOKE

REVOKE 权限 [,权限] ...
ON 对象类型 对象名 [,对象类型 对象名 ] ...
FROM 用户 [, 用户] [CASCADE | RESTRICT];

[例4.8]把用户U4修改学生学号的权限收回。

REVOKE UPDATE(Sno)
ON TABLE student
FROM 'U4'@'localhost';
SHOW GRANTS FOR 'U4'@'localhost';

[例4.9]收回所有用户对表SC的查询权限。

REVOKE SELECT
ON TABLE sc
FROM PUBLIC;

mysql不支持

[例4.10]把用户U5对SC表的INSERT权限收回。

级联收回U6,mysql不支持cascade | restrict

mysql默认不会级联收回

REVOKE INSERT
ON TABLE sc
FROM 'U5'@'localhost';
SHOW GRANTS FOR 'U5'@'localhost';
SHOW GRANTS FOR 'U6'@'localhost';

用户可以 “自主”地决定 将数据的存取权限授予何人、决定是否也将“授权”的权限授予别人。因此称这样的存取控制是 自主存取控制

7. 创建数据库模式的权限

CREATE USER username [WITH] [DBA | RESOURCE | CONNECT]

mysql不支持

  • 新创建的数据库用户有三种权限: CONNECT、 RESOURCE和DBA。
  • 默认该用户拥有CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库。
  • 拥有RESOURCE权限的用户能创建基本表和视图,成为所创建对象的属主,但不能创建模式,不能创建新的用户。
  • 拥有DBA权限的用户是系统中的超级用户,可以创建新的用户、创建模式、创建基本表和视图等: DBA拥有对所有数据库对象的存取权限,还可以把这些权限授予一般用户。

8. MySQL授予创建权限:

  • 创建数据库权限,但是无删除权限
GRANT CREATE
ON *.*
TO 'U2'@'%';
SHOW GRANTS FOR 'U2'@'%';

第一个 * 表示数据库,第二个 * 表示表格

  • 授予用户最高权限:
GRANT ALL PRIVILEGES
ON *.*
TO 'U3'@'localhost';
SHOW GRANTS FOR 'U3'@'localhost';

4.2.5 数据库角色

mysql8.0 以上才支持角色

mysql用户被授予角色还要激活(授予角色的授予者进行激活)

`set default role all to 用户

数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合

可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。

在SQL中首先用CREATE ROLE语句创建角色,然后用GRANT语句给角色授权用REVOKE语句收回授予角色的权限

1. 角色的创建

创建角色的SQL语句格式是:

CREATE ROLE 角色名;

刚刚创建的角色是空的,没有任何内容。

CREATE ROLE r1;
SHOW GRANTS FOR r1;

2. 给角色授权

数据库管理员和用户可以利用GRANT语句将权限授予某一个或几个角色。

GRANT 权限
ON 对象类型 对象名
TO 角色;
CREATE ROLE r2;
GRANT SELECT
ON TABLE mydb1.sc
TO r1, r2;
SHOW GRANTS FOR r2;

3. 将一个角色授予其他的角色或用户

GRANT 角色
TO 角色 | 用户
WITH ADMIN OPTION;
  • 该语句把角色授予某用户,或授予另一个角色。
  • 一个角色所拥有的权限就是授予它的全部角色所包含的权限的总和。
  • 授予者或者是角色的创建者,或者是拥有在这个角色上的ADMIN OPTION。
  • 如果指定了WITH ADMIN OPTION子句,则获得某种权限的角色或用户还可以把这种权限再授予其他的角色
  • 一个角色包含的权限包括直接授予这个角色的全部权限加上其他角色授予这个角色的全部权限。
GRANT r1
TO 'U1'@'localhost'
WITH ADMIN OPTION ;
SHOW GRANTS FOR 'U1'@'localhost';

mysql8.0 以上才支持角色

mysql用户被授予角色还要激活(授予角色的授予者进行激活)

`set default role all to 用户

4. 角色权限的收回

REVOKE 权限 [, 权限]
ON 对象类型 对象名
FROM 角色 [, 角色];

用户可以收回角色的权限,从而修改角色拥有的权限。

REVOKE 的执行者是角色的创建者或拥有这个角色上ADMIN OPTION

例:通过角色来实现一组权限授予一个用户

创建角色role1

CREATE ROLE role1;

给角色role1授予Student表的查询、更新、插入权限

GRANT SELECT, UPDATE, INSERT
ON TABLE Student
TO role1;

将role1授予U3,U5

GRANT role1
TO 'U3'@'localhost', 'U5'@'localhost';

收回U3的role1角色

REVOKE role1
FROM 'U3'@'localhost';

修改role1的权限

GRANT DELETE
ON TABLE Student
TO role1;
REVOKE SELECT
ON TABLE student
FROM role1;
SHOW GRANTS FOR role1;

4.3 视图机制

可以为不同的用户定义不同的视图,把数据对象限制在一定的范围内。

也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。

视图机制间接地实现支持存取谓词的用户权限定义。

[例4.14] 建立计算机系学生的视图,把对该视图的SELECT 权限授予王平,把该视图上的所有操作权限授予张明。

CREATE VIEW CS_stu
AS
    SELECT *
    FROM student
    WHERE Sdept = 'CS';
CREATE USER '王平'@'%'
IDENTIFIED BY '123456';
CREATE USER '张明'@'%'
IDENTIFIED BY '123456';
GRANT SELECT
ON TABLE CS_stu
TO '王平'@'%';
GRANT ALL
ON CS_stu
TO '张明'@'%';
SHOW GRANTS FOR '王平'@'%';
SHOW GRANTS FOR '张明'@'%';

4.4 审计

审计功能把用户对数据库的所有操作自动记录下来放入审计日志中。

审计员可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

4.5 数据加密

数据加密主要包括:

  • 存储加密
  • 传输加密

4.6 其他安全保护

  • 推理控制
  • 隐蔽信道



相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 数据库 数据库管理
数据库事务安全性控制如何实现呢
【10月更文挑战第15天】数据库事务安全性控制如何实现呢
|
3月前
|
存储 数据库 数据库管理
什么是数据库事务安全性控制
【10月更文挑战第15天】什么是数据库事务安全性控制
|
3月前
|
供应链 数据库
数据库事务安全性控制有什么应用场景吗
【10月更文挑战第15天】数据库事务安全性控制有什么应用场景吗
ly~
|
3月前
|
存储 监控 安全
如何评估云数据库的安全性?
评估云数据库安全性需关注基础架构与物理安全、网络基础设施、电力与冷却系统;访问控制与身份验证,包括多因素身份验证、基于角色的访问控制、身份验证强度;数据加密,涉及传输加密、存储加密、密钥管理;备份与恢复,涵盖备份策略、恢复测试、异地备份;安全审计与监控,如审计日志、实时监控、漏洞扫描与渗透测试;合规性,包括法规遵循、认证与合规证明;以及云服务提供商的信誉与技术支持。
ly~
134 4
ly~
|
3月前
|
存储 安全 网络安全
云数据库的安全性如何保障?
云数据库的安全性可通过多种方式保障,包括多因素身份验证、基于角色的访问控制及最小权限原则,确保仅有授权用户能访问所需数据;采用SSL/TLS加密传输和存储数据,加强密钥管理,防止数据泄露;定期备份数据并进行异地存储与恢复演练,确保数据完整性;通过审计日志、实时监控及安全分析,及时发现并应对潜在威胁;利用防火墙、入侵检测系统和VPN保护网络安全;选择信誉良好的云服务提供商,确保数据隔离及定期安全更新。
ly~
321 1
|
7月前
|
SQL 安全 数据库
数据库||数据库的安全性
数据库||数据库的安全性
|
3月前
|
存储 关系型数据库 MySQL
四种数据库对比MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景
四种数据库对比 MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景
|
5月前
|
SQL 数据管理 关系型数据库
SQL与云计算:利用云数据库服务实现高效数据管理——探索云端SQL应用、性能优化、安全性与成本效益,为企业数字化转型提供全方位支持
【8月更文挑战第31天】在数字化转型中,企业对高效数据管理的需求日益增长。传统本地数据库存在局限,而云数据库服务凭借自动扩展、高可用性和按需付费等优势,成为现代数据管理的新选择。本文探讨如何利用SQL和云数据库服务(如Amazon RDS、Google Cloud SQL和Azure SQL Database)实现高效的数据管理。通过示例和最佳实践,展示SQL在云端的应用、性能优化、安全性及成本效益,助力企业提升竞争力。
86 0
|
5月前
|
SQL 安全 关系型数据库
【惊天秘密】破解数据库管理难题!——Yearning开源审计平台:你的数据库安全守护神,一键审计,轻松应对挑战!
【8月更文挑战第21天】Yearning是一款基于Python的开源数据库审计平台,简化数据库管理和审计流程,支持MySQL、PostgreSQL等。核心功能包括SQL审计、执行、回滚及备份,提升数据库管理效率。安装简便,支持通过pip安装并快速启动服务。Yearning提供智能SQL审查,确保安全性与合规性,同时还具备友好的用户界面及API客户端支持,适用于多种数据库操作场景。
256 0
|
6月前
|
安全 Oracle 关系型数据库
关系型数据库Oracle安全性
【7月更文挑战第17天】
123 5