### 实验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页未读,继续阅读
- 粉丝: 1380
- 资源: 7530
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助