数据库——实验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.mfbz.cn/a/592620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity 性能优化之数据面板(Statistics)(一)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、unity 统计数据面板(Statistics)1.Audio属性2.Graphics属性 二、什么是Draw Call?三、Unity3D stats也可以通过代…

分享一篇关于AGI的短文:苦涩的教训

学习强化学习之父、加拿大计算机科学家理查德萨顿( Richard S. Sutton )2019年的经典文章《The Bitter Lesson(苦涩的教训)》。 文章指出,过去70年来AI研究走过的最大弯路,就是过于重视人类既有经验和知识&…

Photoshop中图像编辑的基本操作

Photoshop中图像编辑的基本操作 Photoshop中调整图像窗口大小Photoshop中辅助工具的使用网格的使用标尺的使用注释工具的使用 Photoshop中置入嵌入式对象Photoshop中图像与画布的调整画布大小的修改画布的旋转图像尺寸的修改 Photoshop中撤销与还原采用快捷键进行撤销与还原采用…

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

HTML_CSS学习:浮动

一、浮动简介 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>浮动_简介</title><style>div{width: 600px;height: 400px;background-color: #1c80d9;}img{float:…

c++多线程基础

简介 c多线程基础需要掌握这三个标准库&#xff1a;std::thread, std::mutex, and std::async。 1. Hello, world #include <iostream> #include <thread>void hello() { std::cout << "Hello Concurrent World!\n"; }int main() {std::thread…

如何获得 FHE Circuit Privacy

参考文献&#xff1a; [AJL12] Asharov G, Jain A, Lpez-Alt A, et al. Multiparty computation with low communication, computation and interaction via threshold FHE[C]. EUROCRYPT 2012: 483-501[DS16] Ducas L, Stehl D. Sanitization of FHE Ciphertexts[C]. EUROCRY…

连接和使用vCenter Server嵌入式vPostgres数据库

vCenter Server 早期支持内嵌(embedded)和外部(external)数据库,内嵌数据库就是vPostgres,基于VMware Postgres数据库(PostgreSQL数据库),外部数据库用的多的是Oracle数据库和SQL Server数据库。因为早期使用内嵌的PostgreSQL数据库只能用于小型环境,比如仅支持几十台…

EPAI手绘建模APP颜色、贴图、材质、样式

⑦ 颜色选择页面 1) 颜色环选色。 图 65 颜色选择器-颜色环 2) RGB选色。 图 66 颜色选择器-RGB 3) HSL选色。 图 67 颜色选择器-HSL 4) 国风颜色库选色。 图 68 颜色选择器-国风 5) CSS颜色库选色。 图 69 颜色选择器-CSS 6) 历史颜色&#xff1a;保存最近使用的多个颜色&…

Python设计模式 - 单例模式

定义 单例模式是一种创建型设计模式&#xff0c; 其主要目的是确保一个类只有一个实例&#xff0c; 并提供一个全局访问点来访问该实例。 结构 应用场景 资源管理&#xff1a;当需要共享某个资源时&#xff0c;例如数据库连接、线程池、日志对象等&#xff0c;可以使用单例模…

电路板/硬件---器件

电阻 电阻作用 电阻在电路中扮演着重要的角色&#xff0c;其作用包括&#xff1a; 限制电流&#xff1a;电阻通过阻碍电子流动的自由而限制电流。这是电阻最基本的功能之一。根据欧姆定律&#xff0c;电流与电阻成正比&#xff0c;电阻越大&#xff0c;通过电阻的电流就越小。…

OpenCV(六) —— Android 下的人脸识别

本篇我们来介绍在 Android 下如何实现人脸识别。 上一篇我们介绍了如何在 Windows 下通过 OpenCV 实现人脸识别&#xff0c;实际上&#xff0c;在 Android 下的实现的核心原理是非常相似的&#xff0c;因为 OpenCV 部分的代码改动不大&#xff0c;绝大部分代码可以直接移植到 …

Pytorch: nn.Embedding

文章目录 1. 本质2. 用Embedding产生一个10 x 5 的随机词典3. 用这个词典编码两个简单单词4. Embedding的词典是可以学习的5. 例子完整代码 1. 本质 P y t o r c h \mathrm{Pytorch} Pytorch 的 E m b e d d i n g \mathrm{Embedding} Embedding 模块是一个简单的查找表&#…

【多变量控制系统 Multivariable Control System】(3)系统的状态空间模型至转换方程模型(使用Python)【新加坡南洋理工大学】

一、转换式 二、系统的状态空间模型 由矩阵A, B, C, D给出&#xff1a; 三、由状态空间模型转化为转换方程模型 函数原型&#xff08;版权所有&#xff1a;scipy&#xff09;&#xff1a; def ss2tf(A, B, C, D, input0):r"""State-space to transfer functi…

【netty系列-03】深入理解NIO的基本原理和底层实现(详解)

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478【三】深入理解NIO的基本原理和底层…

SpringCloud Alibaba Nacos简单应用(三)

文章目录 SpringCloud Alibaba Nacos创建Nacos 的服务消费者需求说明/图解创建member-service-nacos-consumer-80 并注册到NacosServer8848创建member-service-nacos-consumer-80修改pom.xml创建application.yml创建主启动类业务类测试 SpringCloud Alibaba Nacos 创建Nacos 的…

鸿蒙通用组件Image简介

鸿蒙通用组件Image简介 图片----Image图片支持三种引用方式设置图片宽高设置图片缩放模式设置图片占位图设置图片重复样式设置图片插值效果 图片----Image Image主要用于在应用中展示图片 Image($r(app.media.app_icon)).width(150) // 设置宽.height(150) // 设置高.objectF…

使用docker-compose编排lnmp(dockerfile)完成wordpress

文章目录 使用docker-compose编排lnmp&#xff08;dockerfile&#xff09;完成wordpress1、服务器环境2、Docker、Docker-Compose环境安装2.1 安装Docker环境2.2 安装Docker-Compose 3、nginx3.1 新建目录&#xff0c;上传安装包3.2 编辑Dockerfile脚本3.3 准备nginx.conf配置文…

redis集群-主从机连接过程

首先从机需要发送自身携带的replid和offset向主机请求连接 replid&#xff1a;replid是所有主机在启动时会生成的一个固定标识&#xff0c;它表示当前复制流的id&#xff0c;当从机第一次请求连接时&#xff0c;主机会将自己的replid发送给从机&#xff0c;从机在接下来的请求…

docker部署nginx并配置https

1.准备SSL证书&#xff1a; 生成私钥&#xff1a;运行以下命令生成一个私钥文件。 生成证书请求&#xff08;CSR&#xff09;&#xff1a;运行以下命令生成证书请求文件。 生成自签名证书&#xff1a;使用以下命令生成自签名证书。 openssl genrsa -out example.com.key 2048 …
最新文章