### 实验5-数据库的安全性控制 #### 一、实验目的 1. **理解数据安全性**: 通过实际操作加深对数据库安全性的理解。 2. **掌握用户登录认证**: 学习如何在SQL Server中设置用户登录及认证方式,包括混合认证模式。 3. **熟悉权限管理**: 掌握如何通过自主存取控制进行权限管理,并了解SQL Server中的角色管理机制。 4. **应用视图机制**: 理解视图在自主存取控制中的作用。 #### 二、实验内容详解 ##### 1. 设置 SQL Server 的混合安全认证模式 - **步骤**: 在SQL Server的对象资源管理器中,找到服务器实例属性,选择安全性页签下的服务器身份验证选项卡,启用SQL Server和Windows身份验证模式。 - **目的**: 允许使用Windows身份验证或SQL Server身份验证的方式登录数据库服务器。 ##### 2. 创建登录用户 U1 - **创建登录用户**: 在SQL Server中,通过对象资源管理器创建一个名为“U1”的登录用户,设置密码为111,并允许其登录S-T数据库。 - **意义**: U1作为一个新用户,初始时只有登录权限,后续会对其进行权限分配。 ##### 3. 创建登录用户 U2 - **通过代码创建**: 使用T-SQL语句创建一个名为“U2”的登录用户,密码同样设置为111;同时创建一个名为lucky的数据库用户,并将其关联到U2登录账户,允许其登录S-T数据库。 - **代码示例**: ```sql CREATE LOGIN U2 WITH PASSWORD = '111'; CREATE USER lucky FOR LOGIN U2; ALTER ROLE db_datareader ADD MEMBER lucky; -- 示例:添加到默认角色db_datareader ``` ##### 4. U1用户的权限测试 - **测试**: 以U1用户名登录后,尝试对students表执行查询操作。 - **预期结果**: 由于未授予任何具体权限,U1仅能登录而无法执行查询等操作。 - **解释**: 在数据库安全性中,遵循最小权限原则,即用户只被授予完成任务所必需的最低权限。 ##### 5. 分配权限给 U1 - **分配权限**: 将students表的select和insert权限授予数据库用户u1,并允许其向其他用户授权。 - **T-SQL命令**: ```sql GRANT SELECT, INSERT ON students TO u1 WITH GRANT OPTION; ``` - **效果**: 此后,U1可以查询和插入students表的数据,并且能够将这些权限转授给其他用户。 ##### 6. U1用户权限测试 - **测试**: 以U1用户名登录后,分别执行对students和teacher表的查询操作。 - **预期结果**: U1现在可以成功查询students表,但对于teacher表则可能无法查询,因为未对其授予相应权限。 - **解释**: 权限分配是基于表的,因此必须明确指定哪些表具有特定权限。 ##### 7. 用户 U2 的权限分析 - **代码**: ```sql GRANT SELECT, INSERT, UPDATE ON student TO PUBLIC; GRANT ALL ON student TO lucky; REVOKE ALL ON student FROM lucky; DENY UPDATE ON student TO lucky; ``` - **分析**: 公共角色PUBLIC被授予了对学生表的SELECT、INSERT和UPDATE权限。尽管lucky(U2)最初获得了所有权限,但之后这些权限又被全部撤销,并特别拒绝了UPDATE权限。这意味着lucky仍然可以查询学生表,但无法更新它。 - **验证**: - 查询操作应该成功。 - 更新操作应该失败。 ##### 8. 创建视图并分配权限 - **创建视图**: 以sa身份登录数据库,针对s-t数据库中的stc表创建一个视图st_view,用于显示选修了课程B001的学生信息。 - **代码示例**: ```sql CREATE VIEW st_view AS SELECT * FROM stc WHERE course_id = 'B001'; GRANT SELECT ON st_view TO u1; GRANT UPDATE (score) ON st_view TO u1; ``` - **目的**: 视图提供了一层额外的安全性和灵活性,可以通过视图限制用户访问的数据范围,并控制他们可以执行的操作。 ##### 9. 修改视图中的数据 - **测试**: 以U1登录,尝试对学号为“0415123”的学生的成绩提高10分,并查看修改后的结果。 - **预期结果**: 如果之前正确地分配了UPDATE(score)权限,则此操作应成功执行。 ##### 10. 撤销 U2 账号 - **命令**: ```sql DROP USER lucky; DROP LOGIN U2; ``` - **目的**: 清理不再需要的用户账号,保持数据库环境整洁。 ##### 11. 创建角色 R1 - **创建角色**: 创建一个名为r1的角色,并向该角色授予teacher表的所有权限。 - **代码示例**: ```sql USE S_T; CREATE ROLE r1; GRANT ALL ON teacher TO r1; ``` - **目的**: 角色是权限管理的有效手段之一,通过向角色授予权限,然后将用户添加到该角色中,可以方便地管理多个用户的权限。 #### 总结 本实验涵盖了SQL Server数据库安全性控制的关键方面,包括但不限于用户登录认证、权限管理、视图机制的应用以及角色管理。通过实际操作加深了对数据库安全性的理解,并掌握了如何有效管理和控制数据库中的用户权限。这对于确保企业数据的安全性和完整性至关重要。
剩余10页未读,继续阅读
- 粉丝: 1578
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 多无人机协同决策与控制仿真平台matlab代码.rar
- 多无人机协同侦查、任务分配、智能决策Matlab仿真.rar
- 多智能体防撞问题的符号运动规划.rar
- 多智能体的一些Matlab程序.rar
- 多智能体集群算法Matlab代码.rar
- 多智能体系统纯方位编队控制的几种算法的Matlab仿真程序.rar
- 多智能体聚类和形成算法Matlab代码.rar
- 多智能体系统的协同群集运动控制Matlab代码.rar
- 非均匀网格上的二维时间无关薛定谔方程求解器 matlab代码.rar
- 二阶 ODE_s 的物理信息神经网络解决方案 matlab代码.rar
- 多智能体系统一致性协同演化控制Matlab代码.rar
- 非线性控制的强化学习,使用一种新的基于人工神经网络的强化学习方法控制非线性液位系统Matlab代码.rar
- 分布式多智能体平均共识Matlab代码.rar
- 高斯阶梯回归在《基于运动失调的抑郁症声像生物标志物》中的应用Matlab代码.rar
- 根据无人机相对于时间的运动方程设计天线跟踪系统 MATLAB matlab代码.rar
- 高斯扩散模型,大气模型,环境规划,最后能够出图Matlab代码.rar