数据库的安全性

news2024/10/6 8:23:28

安全性

安全性保护手段

  • 用户标识与鉴别
  • 自主存取控制
  • 强制存取控制
  • 视图
  • 审计和数据加密

数据库的安全性是指保护数据库防止因用户非法使用数据库造成数据泄露、更改或破坏

数据库安全保护分层

  • 物理层
  • 人际层
  • 网络层
  • 操作系统层
  • 数据库系统层

物理层的安全性是指计算机系统所位于的节点必须物理上受到保护,以防止入侵者强行闯入或暗中潜入(保护机房之类的)

人际层,对用户的授权应该格外小心,以减少授权用户因为利益将数据泄密或给入侵者提供访问机会的可能性(重要信息的访问权限不可以随便授权给用户)

网络层,几乎所有的数据库系统都允许通过网络进行远程访问,因此不管是在因特网还是在企业私有网络内,网络软件的安全性和物理安全性一样重要

操作系统层,DBMS是建立在操作系统支持之上的,因此操作系统安全性方面的弱点有可能成为对数据库进行未授权访问的一种手段

数据库系统层,指的是数据库层面采用相应的安全措施,保证数据是安全的

数据库安全保护的任务

  • 防止未经过授权的人员访问数据,确保敏感信息没有被不需要知道的人读取到
  • 防止未经过授权的人员删除和修改数据
  • 监视对数据的访问和更改等使用情况

用户标识与鉴别

是系统提供的最外层安全保护措施

基本做法是为每一个进入DBMS的用户分配一个用户标识符,并在整个DBMS的生命周期实现用户标识符的唯一性

用户标识常分为两级

  • 操作系统级

由操作系统提供一定的方式,让用户标明自己的身份,当用户要进入系统时,由操作系统进行确认

  • 数据库管理系统级

DBA为每个申请使用数据库的用户创建一个用户标识符和确认自己身份的方式,当用户要访问数据库时,由数据库管理系统核对用户提供的身份标识和口令验证

  • 口令

口令的长度,复杂度和最常使用期限

  • 更新方式的用户标识和鉴别

使用动态产生的新口令登录数据库管理系统,比如短信密码或动态令牌方式

利用只有用户具有的物品鉴别用户:可以使用磁卡、IC卡等作为用户身份的凭证,但必须有相应的读卡设备

利用用户的个人特征鉴别用户:指纹、视网膜、声波、人脸等

自主存取控制

其主要思想是通过授权使得有资格的用户获得访问数据库的权限,而未被授权的用户不能够访问数据库

存取控制有两种

  • 自主存取控制DAC

同一用户对于不同的数据对象具有不同的存取权限

基本所有DBMS都支持DAC

  • 强制存取控制MAC

每一个数据对象都被标记一定的个密级,每个用户也被授予某一许可证级别,只有具有一定许可证级别的用户才能访问具有一定密级的数据对象

MAC比较严格,只有安全级别比较高的DBMS才提供对他的支持

存取控制的任务

授权和合法权限检查

授权

DCL中提供了相应的授权语句,允许用户自主的定义存取权限,并将用户的授权登记在数据字典中

合法权限检查

当用户发出存取数据库的操作请求后,DBMS将查找数据字典,根据用户权限进行合法权限的检查,如果用户的操作请求超出了自身的权限,系统将拒绝执行此操作

上表是存取控制的数据对象以及对象上的操作类型

权限的授予与回收

SQL语句如下:

grant <权限列表> on <对象名> to <用户/角色列表> [with grant option]

将一种或者多种存取权限赋予一个或者多个用户或角色

可选项with grant option表示被授权的用户可以将权限转授予给他人,缺省时,不可以转授予

权限列表是:select, insert, update, delete, references, all privileges

对象名可以是基本表或者视图

用户/角色列表:可以是数据库合法用户、所有用户public或者角色的列表

上面是一些例子

回收授权

revoke <权限列表>on <对象名> from <用户/角色列表> {cascade | restrict}

如果用户或角色列表转授予给其他人权限,使用restrict会报错,不会回收权限,如果使用cascade则会连带着回收其他人被此用户/角色转授予的权限

角色

SQL-99支持角色

使用角色进行授权必须先创建角色,将数据库对象上的存取权限授予角色,才能够将角色授予用户,使得用户拥有角色所具有的所有存取权限

SQL-99允许收回赋予角色的存取权,收回授予用户的角色

创建的语法如下:

create role <角色名>

如下面的例子:

角色授权语法如下:

grant <角色列表> to <用户/角色列表> [with admin option] 

角色列表是一个或多个角色名,中间用逗号隔开

用户角色列表是一个或多个角色名或用户名,中间用逗号隔开

可选项表示是否具有转授权权限

收回角色权限:

revoke all priviliges on Loan,Borrower from Teller;

收回角色:

revoke <角色列表> from <用户/角色列表> {cascade | restrict}

强制存取控制

自主存取控制无法阻止副本的非授权传播

在MAC中,DBMS所管理的全部实体分为主体和客体两大类:

  • 主体是系统中的活动实体,可以是DBMS管理的实际用户或代表用户的各个进程
  • 客体是系统中的被动实体,是受主体操纵的对象。如文件、基本表、索引、视图等

对于主体和客体,DBMS为它们每个实例值指派一个敏感度标记,敏感度标记分为若干级别:

  • 绝密
  • 机密
  • 秘密
  • 公开

主体的敏感度标记称为许可证级别

客体的敏感度标记称为密级

MAC机制就是通过对比主体和客体之间的敏感度标记,确定主体是否能够存取客体

当某一用户或主体注册进入系统时,系统要求他对任何客体的存取必须遵循下面两条规则:

  • 仅当主体的许可证级别大于等于客体的密级时,该主体才能够读取相应的客体
  • 仅当主体的许可证级别小于等于客体的密级时,该主体才能够写相应的客体
  • MAC比DAC具有更高的保护级别,因此支持MAC的系统必须支持DAC,由DAC与MAC共同构成了DBMS安全机制
  • 同时支持二者保护的系统称为多级安全系统
  • 在多级安全系统中,系统首先进行DAC检查,对通过DAC检查的允许存取的数据对象,再由系统自动进行MAC检查,只有通过MAC检查的访问才是允许的

视图与授权

  • 视图可以隐蔽一些不希望用户看到的数据
    • 可以与授权结合,限制用户只能访问所需要的数据,实现一定程度上的安全保护
  • 利用视图实现安全保护的基本思想是:
    • 首先通过定义视图屏蔽掉一部分需要对某些用户保密的数据
    • 然后在视图上定义存取权限,将对视图的访问权限授予这些用户而不允许他们直接访问定义视图的基本表

注意

创建视图的用户不一定能够获得该视图上的所有权限

为了有效阻止用户透过视图越权访问数据库,创建视图的用户在视图上所获得的权限不能够超过他在定义视图的基本表上拥有的权限

下面是一个例子:

其他安全手段

审计和数据加密等

审计日志记录了谁、什么时间、操作了哪些数据、操作前后的值是什么。利用审计日志中的追踪信息,可以重现导致数据库现有状况的一系列事件,找出非法存取数据的用户,时间和内容等。由于审计需要消耗大量的空间和时间,因此DBMS通常将其作为可选特征。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

银行数字化转型导师坚鹏:银行数据治理和数据质量问题解决

银行数据治理和数据质量问题解决 课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不知道如何准确理解银保监会数据治理相关政策及要求&#xff1f; 不清楚如何有效解决数据治理及数据质量遇到的重要问题&#xff1f; 科技条线不清楚如何配合业务人员更好地提高数据…

模板方法设计模式(TemplateMethod)

文章目录抽象类语法使用说明注意事项模板方法设计模式代码示例应用抽象类 随着继承层次中一个个新子类的定义&#xff0c;类变得越来越具体&#xff0c;而父类则更一般&#xff0c;更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象&#xff0c;以…

Centos7安装Navicat15中文

1. ubuntu 下制作AppImage镜像 sudo apt-get install libcapstone-devsudo apt-get install cmake git clone https://github.com/keystone-engine/keystone.git cd keystone mkdir build cd build ../make-share.sh sudo make install sudo ldconfigsudo apt-get install rap…

【行为型模式】模板方法模式

文章目录优秀借鉴1、概述2、结构3、实现方式3.1、案例引入3.2、结构分析3.3、具体实现4、模板方法模式优缺点5、应用场景优秀借鉴 黑马程序员Java设计模式详解-模板方法模式概述 1、概述 模板方法模式(Template Method)是一种设计模式&#xff0c;它定义了一个算法的框架&am…

Nacos 2.2.2 发布,优化启动体验和鉴权提示

Nacos 社区近期发布了 2.2.0.1 和 2.2.1 版本&#xff0c;对默认鉴权插件做出了较大的改动&#xff0c;详情查看**风险说明 [ 1] **及 **2.2.1 发布 [ 2] **。由于 Nacos 默认控制台 ui 中默认依赖了 token.secret.key&#xff0c;所以在移除了 token.secret.key 的默认值后&am…

【ROS2指南-9】Bag的record和play操作

目标&#xff1a;记录在某个话题上发布的数据&#xff0c;以便您可以随时回放和检查它。 教程级别&#xff1a;初学者 时间&#xff1a; 10分钟 内容 背景 先决条件 任务 1 设置 2 选择一个主题 3 ros2包记录 4 ros2 包信息 5 ros2包玩 概括 下一步 相关内容 背景 r…

Android 性能优化的重要性~

随着移动设备和应用程序市场不断发展&#xff0c;Android应用程序变得越来越多&#xff0c;对于开发者来说&#xff0c;他们必须使自己的应用程序与其他应用程序相比更加高效和快速&#xff0c;以吸引用户和确保业务成功。而Android用户期望应用程序如同其他设备上的应用程序一…

PHP快速入门02-PHP语言基础

文章目录前言一、 数据类型1.1 String&#xff08;字符串&#xff09;1.2 Integer&#xff08;整型&#xff09;1.3 Float&#xff08;浮点型&#xff09;1.4 Boolean&#xff08;布尔型&#xff09;1.5 Array&#xff08;数组&#xff09;1.6 Object&#xff08;对象&#xff…

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-5 通关详解 (附靶机搭建教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

深入了解Hugging Face Transformers库:NLP的转换之力

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

29岁,普通功能测试,我是如何在一周内拿到5份Offer的?

我有个朋友&#xff0c;29岁&#xff0c;功能测试已经2年有余&#xff0c;关于他的职业发展历程&#xff0c;以后会跟大家分享&#xff0c;今天主要想把他跟我分享的面试经历和经验分享给大家&#xff0c;帮助一些迷茫中的朋友。 最近&#xff0c;大概面试了7&#xff0c;8家公…

Redis -List

Redis List 本章介绍redis 的List的数据结构 Redis列表是字符串值的链表。Redis列表经常用于&#xff1a; 1、实现堆栈和队列 2、为后台工作系统提供队列管理 例如&#xff1a; 第一种情况&#xff0c;将List视为一种先进先出的队列 Treat a list like a queue (first in, fi…

Linux系统安装MySQL

使用wget命令下载安装包&#xff0c;命令&#xff1a; ​ wget http://dev.MySQL.com/get/Downloads/MySQL-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz​ 1、查看是否已经安装MySQL&#xff1a; 命令&#xff1a; rpm -qa|grep -i mysql 我的Linux是没有安装过的&…

rk3568点亮LCD(mipi)

rk3568 Android11/12 适配 mipi 屏 MIPI (Mobile Industry Processor Interface) 是2003年由ARM, Nokia, ST ,TI等公司成立的一个联盟&#xff0c;目的是把手机内部的接口如摄像头、显示屏接口、射频/基带接口等标准化&#xff0c;从而减少手机设计的复杂程度和增加设计灵活性…

【Java版oj】day27不用加减乘除做加法、三角形

目录 一、不用加减乘除做加法 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、三角形 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 一、不用…

Midjourney V5太炸裂:逼真到颤抖!“有图有真相”时代彻底过去 画画创作者 模特一键淘汰

** ** 文章目录1、Midjourney V51.1、许多人纷纷惊呼&#xff1a;人类画师别活了。1.2、通用模型2、midjourney是什么3、midjourney 的使用方式4、Midjourney新手入门描述词5、一些疑难杂症1、Midjourney V5 继GPT-4发布之后&#xff0c;Midjourney V5上线。网友纷纷试玩&…

java学习之局部内部类

目录 一、内部类简介 二、内部类的分类 三、局部内部类 第一点 第二点 第三点 第四点 第五点 第六点 第七点 一、内部类简介 类的五大成员&#xff1a;属性、方法、构造器、代码块、内部类 package com.hspedu.innerclass;public class InnerClass01 {public static…

2023 年嵌入式世界的3 大趋势分析

目录 大家好&#xff0c;本文讲解了嵌入式发展的3个大趋势&#xff0c;分享给大家。 趋势#1 – Visual Studio Code Integration 趋势#2 –支持“现代”软件流程 趋势 #3 – 在设计中利用 AI 和 ML 结论 大家好&#xff0c;本文讲解了嵌入式发展的3个大趋势&#xff0c;分享…

1、Git使用不完全指南:GitHub的使用详解

GitHub 是一个以开源为基础的社交化编程平台&#xff0c;开发者可以在上面分享代码、协同开发、交流等。下面我们来讲一下如何使用 GitHub。 1. 注册 GitHub 账号 首先&#xff0c;我们需要在 GitHub 上注册一个账号&#xff0c;访问GitHub官网&#xff1a;GitHub: Let’s bui…

IDEA win11安装flutter环境

1.环境说明 操作系统&#xff1a;win11编辑器&#xff1a;Idea 2022.2.1Flutter&#xff1a;3.7.7JDK&#xff1a;17 2.安装 Flutter SDK 2.1安装flutter sdk flutter中文网 2.2配置环境变量 1&#xff09;在环境变量path中加入flutter的安装路径&#xff1a;D:\DevelopT…