数据库——实验10 数据库的安全性

1. 安全认证模式

SQL Server有两种身份认证模式:Windows  认证模式和混合认证模式(即 Windows 身份验证和 SQL Server 身份验证)。

(1)仅 Windows  认证模式:这是 SQL  Server  2005  的默认身份验证模式,适用于所有登录者均为 Windows 2000 Server/NT 操作系统用户的情况。但在 Windows 98 操作系统上运行的 SQL Server 实例不支持 Windows 身份验证。

(2)混合认证模式:该模式可用于两类登录者,对于登录时提供了SQL Server 2005 登录账户者,系统将使用SQL   Server身份验证对其进行验证。对于没有提供 SQL  Server 2005登录账户或请求 Windows 身份验证的登录者,则使用Windows  身份验证对其进行 

2. 创建与管理登录账户

登录名是基于服务器级使用的用户名称,为了访问 SQL Server 系统,用户必须提供正确的登录账号和口令。

可以通过两种方式增加登录账户:创建新的 SQL Server 登录账户和基于 Windows 组或用户创建登录账户,创建登录账户只能由系统管理员完成。

SQL Server 2005 在安装后自动建立了个特殊的 SQL  账 sa,即 System Administrator。该账户默认为是所有数据库的 dbo 用户(数据库所有者),具有最高权限, 可以进行任何操作,且不能被删除。刚安装完毕时,sa 没有密码,为了安全起见, 一定要为其加入密码。

在创建一个数据库时,SQL Server 2005 自动将创建该数据库的登录账户设置为该数据库的一个用户,并起名为dbo dbo 是数据库的拥有者,不能从数据库中删除,dbo对本数据库拥有所有操作权限,并可以将这些权限全部或部分授予其他数据库用户。另外,属于固定服务器角色 sysadmin  的成员也映射为所有数据库的 dbo

当一个登录者登录数据库服务器时,如果该服务器上的所有数据库都没有为其建立用 户账户,则该登录者只能访问那些具有 guest 用户的数据库。系统数据库 master tempdb  中的 guest用户不能被删除,而其他数据库中的 guest 用户可以被添加或删除。

3. 使用 T-SQL语句创建与管理登录账户

管理登录账户也可以使用T-SQL 语句,需要注意的是管理 Windows  身份验证的登录账户与 SQL Server 身份验证的登录账户所使用的系统存储过程不同。

1)管理 Windows 身份验证的登录账户

(1)向 Windows 账户授权的语法如下:

命令格式:

sp_grantlogin [@loginame=] 'login'

命令说明:

@loginame='login'指定一个名称为login Windows  2000   Server  /NT 用户或用户组名称,其格式为‘域\用户名'或'计算机名\用户名',@loginame可以省略。

(2)拒绝一个 Windows  账户登录的语法如下:

命令格式:

sp_denylogin  [@loginame=] 'login'

(3)删除一个 Windows  账户的语法如下:

命令格式:

sp_revokelogin [@loginame=] 'login'

2)管理 SQL Server 身份验证的登录账户

(1)使用系统存储过程创建SQL Server 登录账户。

命令格式:

sp_addlogin [@loginame=] 'login'

[ ,[@passwd=] 'password']

[ ,[@defdb=] 'database']

[ ,[@deflanguage=] 'language']

说明:

·login 为新建登录账户的名称。

·password  为密码,默认设置为 NULL

·database 为登录时的默认数据库。

·language 为默认语言。

全部按上述次序取值时,局部变量名称@loginame @passwd @defdb @deflanguage 可以省略。

(2)使用系统存储过程修改 SQL  Server 登录账户的密码。

命令格式:

sp_password

[ [@old=]'old_password',]

{ [@new=]'new_password'}

[ ,[@loginame=]'login']

说明:

·old_password 为旧的登录密码,其默认值为 NULL

 ·new_password 为新的登录密码,无默认值

 login 为需要更改密码的登录名,login必须已经存在。

(3)使用系统存储过程修改 SQL Server 登录账户的默认数据库。

命令格式:

sp_defaultdb [@loginame=]'login'[,@defdb=]'database'

说明:

database 是新的默认数据库的名称。

(4)使用系统存储过程修改 SQL Server 登录账户的默认语言。

命令格式:

sp_defaultlanguage [@loginame=]'login'[,@deflanguage=]'language'

说明:

language  是新的数据库默认语言。

(5)使用系统存储过程删除 SQL Server 登录账户。

命令格式:

sp_droplogin [@loginame=]'login'

4. 创建与管理数据库用户

拥有登录账户的用户能够通过 SQL Server身份验证,获得对 SQL Server 实例的访问权限。但如果要访问某个具体的数据库,还必须有一个用于控制在数据库中所执行活动 数据库用户账户。登录账户映射到数据库用户账户,就可以实现对数据库的访问了。 如果数据库中没有用户账户,则即使用户能够连接到 SQL Server 实例,也无法访问该数据库。

数据库用户是基于数据库的名称,是和登录账户相关联的。只有数据库所有者及数据库系统管理员才有创建和管理数据库用户的权力。

 SQL   Server 系统的每一个数据库中都有两个默认的用户账号 dbo   guest 

dbo 表示数据库的拥有者,拥有在数据库中执行所有操作的权力。

guest 是一个特殊的用户账号,它可以与任意在该数据库中没有对应用户账号的登录账号对应。

5. 使用 T-SQL 语句创建与管理数据库用户

(1)使用系统存储过程 sp_grantdbaccess 授权某个登录用户为当前数据库用户:

命令格式:

sp_grantdbaccess [@loginame=]'login'

[ ,[@name_in_db=]'name_in_db!]

说明:

Login 是登录用户名称。

name_in_db  是数据库中用户的名称,默认值为 NULL(使用login,  即使用登录用户名作为数据库的用户名)。

(2)使用系统存储过程 sp_revokedbaccess 删除某个登录用户的数据库用户: 

命令格式:

sp_revokedbaccess [@name_in_db=]'name'

说明:

name   是要删除的数据库用户名。

6. 创建和管理角色

使一个登录用户成为数据库用户只是授权的第一步,数据库管理员可以进一步为能够连接到自己所管理数据库的用户在该数据库上授予所需要的权限。数据库管理员单独管理数据库的每一个用户是一项非常繁杂的工作,如果将具有相同操作权限或相近操作权限的用户组织成组,则可以简化对用户的管理工作。也就是说,可以将在相同数据上具有相同权限的用户放入一个组中,然后对该组应用权限。

组是通过角色来实现的,可以将角色理解为组。对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。

SQL   Server系统可以创建一个角色,然后给这个角色授予适当的权限,来代表组中一类工作人员所执行的工作,当工作人员开始工作时,只需将其添加为该角色成员,当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效,使用角色对用户进行分组管理有利于简化对用户的授权工作。

 SQL Server 2005 中,角色有两种:服务器角色和数据库角色服务器角色是服务器的一个对象,只能包含登录名数据库角色是数据库级的一个对象,数据库角色只能包含数据库用户名,而不能是登录名。

7. 使用 T-SQL 语句创建与管理数据库角色

1)创建用户定义的数据库角色

创建用户定义的数据库角色需要调用系统存储过程 sp_addrole,语法如下。

命令格式:

sp_addrole [@rolename=]'role'

[ ,[@ownername=]'owner]

说明: 

·role 表示要在当前数据库中创建的角色名称。

·owner  表示该角色的所有者,默认值为数据库的所有者 dbo

2)从当前数据库删除用户定义的角色

删除角色需要调用系统存储过程。

命令格式:

sp_droprole [@rolename=]'role'

说明:

role 为将要从当前数据库中删除的角色的名称。

3)为用户指定角色

使用系统存储过程 sp_addrolemember 数据库用户指定角色。

命令格式:

sp_addrolemember [@rolename=]'role',

@membername=]'user_account'

说明:

role 表示当前数据库中角色名称。

user_account 是添加到角色的用户名称,没有默认值。

4)取消用户的角色

如果 一个用户不再担当某个角色,可以取消用户的角色,使用系统存储过程sp_droprolemember  取消数据库用户的角色。

命令格式:

sp_droprolemember [@rolename=]'role',

[@membername =]'user_account'

说明:

·role 表示当前数据库中角色名称,将要从该角色中删除用户。

·user_account 要取消角色的用户名称,没有默认值。

8. 权限管理

一个登录者若要对某个数据库进行修改或访问,必须具有相应的权限,这种权限涉及服务器级与数据库级的操作。权限既可以直接获得,也可以通过成为角色成员而继承角色的权限。

权限的种类分为3种:对象权限、语句权限和隐含权限。

1)对象权限

对象权限指对已存在的数据库对象的操作权限,包括对数据库对象的 SELECT, INSERT UPDATE DELETE  EXECUTE   权限。

2)语句权限

语句权限用于创建数据库或数据库对象所涉及的活动。

3)隐含权限

隐含权限控制那些只能由固定角色的成员或数据库对象所有者执行的活动。

9. 使用 T-SQL 语句管理权限

权限管理指对于用户或角色的某些操作赋予允许权限、拒绝权限以及废除权限。 首先介绍使用 T-SQL 语句管理权限的方法。

(1)允许权限(GRANT):    表示用户或角色能够执行某项操作。

(2)拒绝权限(DENY):   表示用户或角色不能执行某项操作,也称禁止权限。

(3)废除权限(REVOKE):   表示废除以前用户或角色所具有的允许权限或拒绝权限。 

1)语句权限的管理

使用 T-SQL  允许、拒绝或废除语句权限的语法如下:

命令格式:

GRANT | DENY | REVOKE (ALL | statement [,…n]) TO security_account[,…h]

说明:

·GRANT 、DENY 、REVOKE 分别表示允许、拒绝和废除语句权限的操作。

·ALL 表示针对所有语句权限的设置,只有 sysadmin 成员有权使用ALL

·statement 表示被允许、拒绝或废除语句权限的语句,包括9个语句: CREATE DATABASE CREATE DEFAULT CREATE FUNCTION 

CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE VIEW 

BACKUP DATABASEBACKUP LOG。

·[,…n ] 表示同时可以处理多个语句的权限。

·security_account 表示当前数据库内将要被设置权限的登录账户、数据库用户或角色。 

2)对象权限的管理

使 用 T-SQL  允许、禁止或废除对象权限的语法如下:

命令格式:

GRANT | DENY | REVOKE

{ ALL [ PRIVILEGES ] | permission [,…n ] }

{ [ (column [,…n] ) ] ON { table | view }

  |ON { table | view } [ ( column [,…n] ) ]

  |ON { stored_procedure | extended_procedure }

  |ON { user_defined_function }

}

TO security_account [,…n ]

说明:

·GRANT DENY REVOKE    分别表示允许、禁止或废除对象权限。

·ALL 表示允许、禁止或废除所有适用的权限。只有 sysadmin db_owner 成员及数据库拥有者有权使用ALL

·PRIVILEGES 是与 SQL-92  标准兼容而列出的可选关键字,可以省略。

·permission 表示允许、禁止或废除的对象权限。例如 SELECT、INSERT  等 。

·[ ( column [,…n] ) ] ON { table l view } | ON { table | view } [ ( column [,…n] ) ]表示上述权限的作用对象,可以是表或视图,也可以是表或视图的某一列或几列。可以使用 “|”两边的任意一种书写格式。

·stored_procedure 、extended_procedure 、user_defined_function 分别表示在当前数据

库中设置权限的存储过程名、扩展存储过程名、用户定义函数名。

·TO 指定安全账户列表,对于 REVOKE 语句,可以改用FROM

·security_account 表示当前数据库内将要允许、禁止或废除权限的安全账户,可以是 SQL   Server 账户、角色、Windows 用户或组。

 SQL  Server 管理平台中管理语句权限与对象权限的方法不同,语句权限是在数据库一级进行管理,对象权限是在数据库对象一级进行管理。

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

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

相关文章

Vue3-element-plus表格

一、element-plus 1.用组件属性实现跳转路由 <el-menu active-text-color"#ffd04b" background-color"#232323" :default-active"$route.path" //高亮 text-color"#fff"router><el-menu-item index"/article/channe…

【算法刷题日志】吸氧羊的StarryCoding之旅 - 贡献法计算

题目链接&#xff1a;https://www.starrycoding.com/problem/3 题目描述 吸氧羊终于注册了一个StarryCoding账号&#xff01;&#xff08;她很开心&#xff09; 但是吸氧羊忘记了它的密码&#xff0c;她想起你是计算机大师&#xff0c;于是就来请教你。 她虽然不记得密码了…

hive将时间字符串转换为timestamp的几种写法

写法一 select from_utc_timestamp(from_unixtime(unix_timestamp(2023-8-7 9:38:10 UTC08:00, yyyy-MM-dd HH:mm:ss)), UTC);写法二 select cast(unix_timestamp(2023-8-7 9:38:10 UTC08:00, yyyy-MM-dd HH:mm:ss) as timestamp);写法三 select cast(trim(split(upper(2023…

校园餐厅预约系统(请打开git自行访问)

校园餐厅预约系统详细介绍 项目地址&#xff1a;https://gitee.com/zhang—xuan/online_booking_system 服务端部分 Socket类 作用&#xff1a;创建socket连接&#xff0c;作为服务端与客户端通信的基础。 Sock_Obj类 基类&#xff1a;定义了服务端需要的基本操作和属性。 派生…

C++ | Leetcode C++题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; class Solution { public:int climbStairs(int n) {double sqrt5 sqrt(5);double fibn pow((1 sqrt5) / 2, n 1) - pow((1 - sqrt5) / 2, n 1);return (int)round(fibn / sqrt5);} };

SPI(通信协议)

简介 SPI是一个同步的数据总线&#xff0c;也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步。 时钟是一个震荡信号&#xff0c;它告诉接收端在确切的时机对数据线上的信号进行采样。 产生时钟的一侧称为主机&#xff0c;另一侧称为从机。总是…

Oracle基础4

1 视图 1.1 视图的基本创建 查询 t_owners 和 查询 view_test_1 实际是一样的 数据源表发生变化 那么视图也会发生变化 drop view VIEW_TEST_1; select * from T_OWNERS; create view view_test_1 as ( select * from T_OWNERS ); select * from view_test_1; 1.2 对复杂sq…

VMware虚拟机中ubuntu使用记录(6)—— 如何标定单目相机的内参(张正友标定法)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、张正友相机标定法1. 工具的准备2. 标定的步骤(1) 启动相机(2) 启动标定程序(3) 标定过程的操作(5)可能的报错 3. 标定文件内容解析 前言 张正友相机标定法…

编译 x264 for iOS

文章目录 编译在 FFMpeg 启用 x264其他编译选项报错处理 环境 &#xff1a; macOS 14.3.1 x264 - 20191217-2245 编译 1、下载 x264 源码 http://download.videolan.org/pub/videolan/x264/snapshots/ 这里我下载x264-snapshot-20191217-2245.tar.bz2 &#xff08;截止2024-…

centos学习- ps命令详解-进程监控的利器

ps命令详解&#xff1a;Linux进程监控的利器 在Linux系统管理中&#xff0c;进程监控是一个至关重要的环节。ps命令是Linux系统中一个功能强大的进程查看工具&#xff0c;通过它可以获取当前系统中所有进程的快照信息&#xff0c;并深入了解各个进程的详细信息。结合其各种选项…

OpenAI下周将发布ChatGPT搜索引擎,挑战谷歌搜索!

目前&#xff0c;多方位消息证实&#xff0c;OpenAI将会在5月9日上午10点公布该消息&#xff0c;大约是北京时间周五的凌晨2点。 5月3日&#xff0c;前Mila研究员、麻省理工讲师Lior S爆料&#xff0c;根据OpenAI最新的SSL证书日志显示&#xff0c;已经创建了search.chatgpt.c…

跨域初识--如何解决跨域

04 【跨域初识】 1.同源策略 同源策略(Same-Origin Policy)最早由Netscape 公司提出&#xff0c;是浏览器的一种安全策略同源&#xff1a; 协议、域名、端口号必须完全相同跨域&#xff1a; 违背同源策略就是跨域 2.如何解决跨域 2.1 JSONP jsonp只支持get请求不支持post请…

Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)

Flutter笔记 Widgets Easier组件库&#xff08;12&#xff09;使用消息吐丝&#xff08;Notify Toasts&#xff09; - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 29114848416…

Hyperledger Fabric:构建企业级区块链网络的利器

一、引言 在数字化浪潮中&#xff0c;区块链技术如同一颗璀璨的明珠&#xff0c;以其去中心化、数据不可篡改的特性&#xff0c;在金融、供应链、物联网等多个领域大放异彩。而在这个领域里&#xff0c;Hyperledger Fabric以其开源、灵活、安全的特点&#xff0c;成为企业级区…

ICode国际青少年编程竞赛- Python-1级训练场-基础训练2

ICode国际青少年编程竞赛- Python-1级训练场-基础训练2 1、 a 4 # 变量a存储的数字是4 Dev.step(a) # 因为变量a的值是4&#xff0c;所以Dev.step(a)就相当于Dev.step(4)2、 a 1 # 变量a的值为1 for i in range(4):Dev.step(a)Dev.turnLeft()a a 1 # 变量a的值变为…

C语言数据结构之队列

目录 1.队列的概念及结构2.队列的实现逻辑3.队列的代码实现4.相关例题选择题 •͈ᴗ•͈ 个人主页&#xff1a;御翮 •͈ᴗ•͈ 个人专栏&#xff1a;C语言数据结构 •͈ᴗ•͈ 欢迎大家关注和订阅!!! 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#x…

【Flask 系统教程 2】路由的使用

Flask 是一个轻量级的 Python Web 框架&#xff0c;其简洁的设计使得构建 Web 应用变得轻而易举。其中&#xff0c;路由是 Flask 中至关重要的一部分&#xff0c;它定义了 URL 与视图函数之间的映射关系&#xff0c;决定了用户请求的处理方式。在本文中&#xff0c;我们将深入探…

C++关联容器1——map,multimap,set,multiset介绍,pair类型

目录 关联容器 使用关联容器 使用map 使用set 关联容器概述 定义关联容器 初始化multimap或multiset 关键字类型的要求 有序容器的关键字类型 使用关键字类型的比较函数 pair 类型 创建pair 对象的函数 关联容器 关联容器支持高效的关键字查找和访问。 两个主要的关…

【阿里云服务器】ubuntu 22.04.1安装docker以及部署java环境

我的服务器配置是2GB CPU 2GB 内存 Ubuntu22.04 目录 一、阿里云 ubuntu 22.04.1安装docker 二、docker基础命令 三、Windows电脑访问云服务器 四、安装java环境 安装OpenJDK 8&#xff08;可以根据需要安装其他版本的JDK&#xff09; 安装java的依赖管理工具maven 一、…

Java | Spring框架 | BeanFactory与ApplicationContext

Spring容器&#xff1a;BeanFactory与ApplicationContext Spring容器是Spring框架的核心&#xff0c;负责实例化、配置和组装Bean。 Spring容器有两种主要类型&#xff1a;BeanFactory和ApplicationContext。 一、BeanFactory 基本功能&#xff1a;BeanFactory是Spring框架…