ORACLE数据库实验总集 实验七 Oracle 数据库安全管理

一、 实验目的
(1) 掌握 Oracle 数据库安全控制的实现。
(2) 掌握 Oracle 数据库用户管理。
(3) 掌握 Oracle 数据库权限管理。
(4) 掌握 Oracle 数据库角色管理。
(5) 了解 Oracle 数据库概要文件的管理。
(6) 了解 Oracle 数据库审计。
二、实验要求
(1) 为 BOOKSALES 数据库创建用户。
(2) 为 BOOKSALES 数据库用户进行权限授予与回收
(3) 为 BOOKSALES 数据库创建角色, 利用角色为用户授权。
(4) 为 BOOKSALES 数据库创建概要文件, 并指定给用户。
(5) 对 BOOKSALES 数据库中的用户操作进行审计。
三、 实验内容
(1) 创建一个名为 Tom 的用户, 采用口令认证方式, 口令为 Tom, 默认表空间为 USERS表空间, 默认临时表空间为 TEMP, 在 USERS 表空间上配额为 10M, 在 BOOKTBS1 表空间上的配额为 50M。
(2)创建一个名为 Joan 的用户, 采用口令认证方式, 口令为 Joan, 默认表空间为 BOOKTBS2表空间, 默认临时表空间为 TEMP, 在 USERS 表空间上配额为 10M, 在 BOOKTBS2 表空间上的配额为 20M。 该用户的初始状态为锁定状态。
( 3) 为方便数据库中用户 的登录, 为 BOOKSALES 数据库中所有用户授予 CREATESESSION 系统权限。
(4) 分别使用 Tom 用户和 Joan 用户登录 BOOKSALES 数据库, 测试是否成功。
(5) 为 Joan 用户帐户解锁, 并重新进行登录。
(6) Tom 用户和 Joan 用户登录成功后, 分别查询 Tom 表、 Joan 表中的数据。
(7) 为 Tom 用户授予 CREATE TABLE、 CREATE VIEW 系统权限, 并可以进行权限传递;
将图书销售系统中的各个表的 SELECT、 UPDATE、 DELETE、 INSERT 对象权限授予 Tom用户, 也具有传递性。
(8) Tom 用户将图书销售系统中的 customers 表、 publishers 表、 books 表的查询权限以及CREATE VIEW、 CREATE TABLE 的系统权限授予 Joan 用户。
(9) 利用 Joan 用户登录 BOOKSALES 数据库, 查询 customers 表、 publishers 表、 books 表中的数据。 创建一个包含出版社及其出版的图书信息的视图 publisher_book。
(10) Tom 用户回收其授予 Joan 用户的 CREATE VIEW 的系统权限。
(11) Tom 用户回收其授予 Joan 用户的在 customers 表上的 SELECT 权限。
(12)利用 system用户登录BOOKSALES数据库, 回收Tom用户所有具有的 CREATE TABLE系统权限以及在 customers 表、 publishers 表、 books 表上 SELECT 权限。
(13) 分别查询 Tom 用户、 Joan 用户所具有的对象权限和系统权限详细信息。
(14) 创建一个角色 bs_role, 将 BOOKSALES 数据库中 books 表的所有对象权限以及对customers 表、 publisher 表、 orders 表的 SELECT 权限授予该角色。
(15) 将 bs_role 角色授予 Joan 用户, 将 CREATE SESSION、 RESOURCE、 bs_role 角色授予 Tom 用户。
(16) 创建一个 bs_profile1 的概要文件, 限定该用户的最长会话时间为 30 分钟, 如果连续10 分钟空闲, 则结束会话。 同时, 限定其口令有效期为 20 天, 连续登录 2 次失败后将锁定账户, 10 天后自动解锁。
(17) 创建一个概要文件 bs_profile2, 要求每个用户的最多会话数为 3 个, 最长的连接时间为 60 分钟, 最大空闲时间为 20 分钟, 每个会话占用 CPU 的最大时间为 10 秒; 用户最多尝试登录次数为 3 次, 登录失败后账户锁定日期为 7 天。
(18) 将概要文件 bs_profile1 指定给 Tom 用户, 将概要文件 bs_profile2 指定给 Joan 用户。
(19) 利用 Tom 用户登录 BOOKSALES 数据库, 连续两次输入错误口令, 查看账户状态;利用 Joan 用户登录 BOOKSALES 数据库, 测试最多可以启动多少个会话。
四、问题解答及实验结果
这个实验中后续的查询我放在本地oracle去做了,因为我用服务器中的docker装的Oracle11g,我没设置字符集,导致插入的数据都是乱码,查起来不好看。
(1)创建一个名为Tom的用户,采用口令认证方式,口令为Tom,默认表空间为USERS表空间,默认临时表空间为TEMP,在USERS表空间上配额为10MB,在BOOKTBS1表空间上的配额为50MB。
SQL> create user Tom identified by Tom default tablespace users temporary tablespace temp quota 10m on users quota 50m on booktbs1;
在这里插入图片描述

(2)创建一个名为Joan的用户,采用口令认证方式,口令为Joan,默认表空间为BOOKTBS2表空间,默认临时表空间为TEMP,在USERS表空间上配额为10MB,在BOOKTBS2表空间上的配额为20MB。该用户的初始状态为锁定状态。
SQL> create user Joan identified by Joan default tablespace booktbs2 temporary tablespace temp quota 10m on users quota 20m on booktbs2 account lock;
在这里插入图片描述

(3)为方便数据库中用户的登录,为BOOKSALES数据库中所有用户授予CREATE SESSION系统权限。
SQL> grant create session to public;
在这里插入图片描述

(4)分别使用Tom用户和Joan用户登录BOOKSALES数据库,测试是否成功。
SQL> conn Tom/Tom;
SQL> conn Joan/Joan;
在这里插入图片描述

(5)为Joan用户账户解锁,并重新进行登录。
SQL> alter user Joan account unlock;
SQL> conn Joan/Joan;
在这里插入图片描述

(6)Tom用户和Joan用户登录成功后,分别查询books表、customers表中的数据。
SQL> conn Joan/Joan;
SQL> select * from bs.books;
SQL> select * from bs.customers;
SQL> conn Tom/Tom;
SQL> select * from bs.books;
SQL> select * from bs.customers;

这里当时写了,漏截了。

(7)为Tom用户授予CREATE TABLE、CREATE VIEW系统权限,并可以进行权限传递;将图书销售系统中的各个表的SELECT、UPDATE、DELETE、INSERT对象权限授予Tom用户,也具有传递性。
SQL> Grant create table,create view to Tom with admin option;
SQL> Grant select,update,delete,insert on bs.customers to Tom with grant option;
SQL> Grant select,update,delete,insert on bs.publishers to Tom with grant option;
SQL> Grant select,update,delete,insert on bs.books to Tom with grant option;
SQL> Grant select,update,delete,insert on bs.orders to Tom with grant option;
SQL> Grant select,update,delete,insert on bs.orderitem to Tom with grant option;
SQL> Grant select,update,delete,insert on bs.promotion to Tom with grant option;
在这里插入图片描述

(8)Tom用户将图书销售系统中的customers表、publishers表、books表的查询权限以及CREATE VIEW、CREATE TABLE的系统权限授予Joan用户。
SQL> conn Tom/Tom ;
SQL> grant select on bs.customers to Joan;
SQL> grant select on bs.publishers to Joan;
SQL> grant select on bs.books to Joan;
SQL> grant create table,create view to Joan;
在这里插入图片描述

(9)利用Joan用户登录BOOKSALES数据库,查询customers表、publishers表、books表中的数据。创建一个包含出版社及其出版的图书信息的视图publisher_book。
SQL> conn Joan/Joan;
SQL> select * from bs.customers;
SQL> select * from bs.publishers;
SQL> select * from bs.books;
在这里插入图片描述

SQL> create view publisher_view as select ISBN,title,author,pubdate,books.publisher_id,cost,retail,category,name from system.publishers,system.books where books.publisher_id=publishers.publisher_id;
在这里插入图片描述

(10)Tom用户回收其授予Joan用户的CREATE VIEW的系统权限。
SQL> conn Tom/Tom;
SQL> revoke create view from Joan;
在这里插入图片描述

(11)Tom用户回收其授予Joan用户的在customers表上的SELECT权限。
SQL> revoke select on bs.customers from Joan;
在这里插入图片描述

(12)利用system用户登录BOOKSALES数据库,回收Tom用户所有具有的CREATE TABLE系统权限以及在customers表、publishers表、books表上SELECT权限。
SQL> conn system/system;
SQL> revoke create table from Tom;
SQL> revoke select on bs.customers from Tom;
SQL> revoke select on bs.publishers from Tom;
SQL> revoke select on bs.books from Tom;
在这里插入图片描述

(13)分别查询Tom用户、Joan用户所具有的对象权限和系统权限详细信息。
SQL> conn Tom/Tom;
SQL> select * from user_sys_privs;
SQL> select * from user_sys_privs;
SQL> conn Joan/Joan;
SQL> select * from user_sys_privs;
SQL> select * from user_sys_privs;
在这里插入图片描述

(14)创建一个角色bs_role,将BOOKSALES数据库中books表的所有对象权限以及对customers表、publishers表、orders表的SELECT权限授予该角色。
SQL> conn system/system;
SQL> create role bs_role not identified;
SQL> grant select,update,delete,insert on bs.books to bs_role;
SQL> grant select on bs.customers to bs_role;
SQL> grant select on bs.publishers to bs_role;
SQL> grant select on bs.orders to bs_role;
在这里插入图片描述

(15)将bs_role角色授予Joan用户,将CREATE SESSION、RESOURCE、bs_role角色授予Tom用户。
SQL> grant bs_role to Joan;
SQL> grant create session,resource,bs_role to Tom;
在这里插入图片描述

(16)创建一个bs_profile1的概要文件,限定该用户的最长会话时间为30分钟,如果连续10分钟空闲,则结束会话。同时,限定其口令有效期为20天,连续登录2次失败后将锁定账户,10天后自动解锁。
SQL> create profile bs_profile1 limit connect_time 30 idle_time 10 password_life_time 20 failed_login_attempts 2 password_lock_time 10;
在这里插入图片描述

(17)创建一个概要文件bs_profile2,要求每个用户的最多会话数为3个,最长的连接时间为60分钟,最大空闲时间为20分钟,每个会话占用CPU的最大时间为10秒;用户最多尝试登录次数为3次,登录失败后账户锁定日期为7天。
SQL> create profile bs_profile2 limit sessions_per_user 3 connect_time 60 idle_time 20 cpu_per_call 10 failed_login_attempts 3 password_lock_time 7;
在这里插入图片描述

(18)将概要文件bs_profile1指定给Tom用户,将概要文件bs_profile2指定给Joan用户。
SQL> alter user Tom profile bs_profile1;
SQL> alter user Joan profile bs_profile2;
在这里插入图片描述

(19)利用Tom用户登录BOOKSALES数据库,连续两次输入错误口令,查看账户状态;利用Joan用户登录BOOKSALES数据库,测试最多可以启动多少个会话。
SQL> conn Tom/1;
SQL> conn Tom/1;
在这里插入图片描述

五、实验体会与收获
通过进行Oracle数据库安全管理的实验,我全面了解了数据库安全控制的重要性以及实现方法。在实验中,我学习了创建用户、授予权限、管理角色和配置文件等操作,以确保数据库中的敏感信息得到妥善保护。实验中我重点掌握了用户管理和权限控制的方法,包括创建用户并赋予不同权限、进行账户锁定以及审计操作等。这些知识对于确保数据库安全和保护数据的完整性至关重要,让我更加了解如何有效管理数据库安全,并为今后在实际工作中提供了有力支持。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值