Oracle权限安全管理

实验内容

本次实验先使用system用户连接

温馨提示:题目要求切换账户登录的时候自己记得切换,本文章只提供相应的SQL语句

在表空间BOOKTBS1(实验4第1题已创建)创建一张表BOOKS,其字段如下::

SQL> create table BOOKS

2 (ISBN varchar(50) primary key,

3 title varchar(50),

4 author varchar(50),

5 cost number(12)) tablespace BOOKTBS1;

表已创建。

在其中插入一条数据('20240101','Oracle数据库管理与开发','李真',48)。

SQL> insert into BOOKS(ISBN,title,author, cost)

2 values ('20240101','Oracle数据库管理与开发','李真',48);

已创建 1 行。

创建一张表CUSTOMERS,其字段如下:

SQL> CREATE TABLE CUSTOMERS (

2 customer_id NUMBER(4) PRIMARY KEY,

3 name VARCHAR2(20) NOT NULL,

4 phone VARCHAR2(50) NOT NULL

5 ) TABLESPACE BOOKTBS1;

表已创建。


1、用户创建与修改

(1)以自己名字首字母创建一个用户(后文称为本人用户),采用口令认证方式,口令自己定义,默认表空间为 USERS表空间,临时表空间为 TEMP,在 USERS 表空间上配额为 10M,在 BOOKTBS1 表空间上的配额为 50M。(下划线填自己名字首字母,下文也是)

SQL> create user _____

2 identified by 000000

3 default tablespace USERS

4 temporary tablespace TEMP

5 quota 10M on USERS

6 quota 50M on BOOKTBS1;

用户已创建。

(2)创建一个名为Tom的用户,采用口令认证方式,口令为Tom,默认表空间为BOOKTBS1表空间,默认临时表空间为TEMP,在USERS表空间上配额为10MB,在BOOKTBS1表空间上的配额为20MB。该用户的初始状态为锁定状态。

SQL> create user Tom

2 identified by Tom

3 default tablespace BOOKTBS1

4 temporary tablespace TEMP

5 account lock

6 quota 10M on USERS

7 quota 20M on BOOKTBS1;

用户已创建。

(3)为方便数据库中用户的登录,为 ORCL 数据库中所有用户授予 CREATE SESSION系统权限。

SQL> grant create session to public;

授权成功。

(4)分别使用 本人用户和 Tom 用户登录 ORCL 数据库,测试是否成功。

使用 SQLPlus 链接数据库,以本人用户和 Tom 用户的身份登录 ORCL 数据库,测试是否成功。

(5)为 Tom 用户帐户解锁,并重新进行登录。

SQL> alter user Tom account UNLOCK;


2、授权与回收操作

(6)切回SYSTEM用户,为本人用户授予 CREATE TABLE、 CREATE VIEW 系统权限,并可以进行权限传递转授;授予books表和customer表上的所有对象权限给本人用户。

SQL> grant create table,create view to ____ with admin option;

授权成功。

SQL> grant all privileges on BOOKS to ____with grant option;

授权成功。

SQL> grant all privileges on CUSTOMERS to ____ with grant option;

授权成功。

(7)切换到本人用户,将 books、customer 表的查询、插入权限以及CREATE VIEW、 CREATE TABLE 的系统权限授予 Tom 用户。

SQL> grant select,insert on system.BOOKS to Tom;

授权成功。

SQL> grant create table,create view to Tom;

授权成功。

(8)使用 Tom 用户连接数据库, 查询 books表中的数据,新增一条书籍数据(自拟)。

SQL> insert into system.books

2 (ISBN,TITLE,AUTHOR,COST)

3 values (20240202,'javac程序设计','张三',52);

已创建 1 行。

(9)使用本人用户回收其授予 Tom 用户的 CREATE VIEW 的系统权限,以及其授予 Tom 用户的在 books 表上的 INSERT 权限。

SQL> revoke create view from Tom;

撤销成功。

SQL> revoke insert on system.BOOKS from Tom;

撤销成功。

(10)使用 system用户登录数据库, 回收本人用户所有具有的 CREATE TABLE系统权限以及在 books 表上 SELECT 权限,思考这时Tom用户的这两项权限是否受影响。

此时,Tom用户的CREATE VIEW权限和在books表上的INSERT权限应该受到影响。

SQL> revoke create table from ____;

撤销成功。

SQL> revoke select on system.BOOKS from ____;

撤销成功。

(11)分别查询 本人用户、Tom 用户所具有的对象权限和系统权限详细信息。

SQL> select * from dba_tab_privs where grantee='____';

SQL> select * from dba_sys_privs where grantee='____';

SQL> select * from dba_tab_privs where grantee='TOM';

SQL> select * from dba_sys_privs where grantee='TOM';


3、角色的创建与授予

(12)使用system用户登录,创建一个角色 seller,不使用口令验证,将 books 表的所有对象权限以及对customers 表的 SELECT 权限授予该角色。

SQL> create role seller;

角色已创建。

SQL> grant all privileges on system.BOOKS to seller;

授权成功。

SQL> grant select on system.CUSTOMERS to seller;

授权成功。

(13)将seller角色授予 Tom 用户,在dba_role_privs中查看当前Tom被授予的角色,在dba_tab_privs中查看seller角色所具有的对象属性。思考此时Tom拥有哪些权限。

此时,Tom拥有的权限将包括:对books表的所有权限(SELECT, INSERT, UPDATE, DELETE等);对customers表的SELECT权限。

SQL> grant seller to Tom;

授权成功。

SQL> select * from dba_role_privs where grantee='TOM';

(14)使用Tom用户,通过SET ROLE 角色名语句启用seller角色,并查询books表中的数据。

SQL> set role seller;

角色集

SQL> select * from system.BOOKS;


4、概要文件使用

(15) 创建一个 bs_profile1 的概要文件, 限定用户的最长会话时间为 30 分钟, 如果连续10 分钟空闲,则结束会话。同时, 限定其口令有效期为 20 天, 连续登录 2 次失败后将锁定账户,10 天后自动解锁。

SQL> create profile bs_profile1 limit

2 CONNECT_TIME 30

3 IDLE_TIME 10

4 PASSWORD_LIFE_TIME 20

5 FAILED_LOGIN_ATTEMPTS 2

6 PASSWORD_LOCK_TIME 10;

配置文件已创建

(16) 将概要文件bs_profile1指定给Tom用户。

SQL> alter user Tom profile bs_profile1;

用户已更改。

(17)利用Tom用户登录ORCL数据库,连续两次输入错误口令,查看执行结果,并使用system查看Tom用户的锁定状态。

SQL> select username,account_status from dba_users where username = 'TOM';

相关推荐
十叶知秋几秒前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
瓜牛_gn2 小时前
mysql特性
数据库·mysql
奶糖趣多多3 小时前
Redis知识点
数据库·redis·缓存
CoderIsArt4 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
师太,答应老衲吧6 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
Channing Lewis7 小时前
salesforce case可以新建一个roll up 字段,统计出这个case下的email数量吗
数据库·salesforce
毕业设计制作和分享8 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
ketil278 小时前
Redis - String 字符串
数据库·redis·缓存
Hsu_kk9 小时前
MySQL 批量删除海量数据的几种方法
数据库·mysql
编程学无止境9 小时前
第02章 MySQL环境搭建
数据库·mysql