【Oracle】第1天 安全管理

下面所有加粗的命令都是我按顺序执行过的命令

写在前面的

--Oracle使用两个横杠来表示单行注释注释,多行注释和Java一致为/** */

Oracle习惯使用单引号' '而非双引号" "

Oracle列名不区分大小写,但是列的内容区分大小写

sqlplus 显示的设置:

            linesize

                        【show linesize】  默认是80个字符

                        【set linesize 90

            pagesize

                        【show pagesize】  默认是每页显示14行

                        【set pagesize 15

 

第1天Oracle安全管理

1.1、用户管理

            Oracle数据库创建的时候会有四个特殊的用户

                        sys          ---董事长,拥有最最高权限

                        system       ---总经理,拥有最高权限

                        scott        ---普通用户

                        public       ---用户组,数据库中的任何一个用户都属于该组成员。要为数据库中每个用户都授予某个权限,只需要把权限授予public就可以了

1.1.1、用户的创建、修改密码与删除

     首先,【查看当前用户:show user;

然后,切换到dba(DataBaseAdministrator)用户,即sys或者system

                        【切换用户:conn 用户名/密码;

                        执行,【创建用户:create user 用户名 identified by 密码(必须英文开头);】

                        例如创建xiaoming、xiaohong两个用户,密码都是m123

                        【conn system/system;】

                        【create user xiaoming identified by m123;】

                        【create user xiaohong identified by m123;】

                        创建完之后,先把连接数据库的权限给这两个用户,先赋一下角色,否则无法登陆:

                        【grant connect to xiaoming;】

                        【grant connect to xiaohong;】

                        如果想【修改自己的密码:password 用户名】

                        如果想【修改别人的密码:alter user 用户名 identified by 新密码】,当然修改别人的密码需要具有dba的权限,或,拥有alter user 的系统权限。

                        最后,【删除用户:drop user 用户名 [cascade]】,删除用户也是需要以dba的身份去删除某个用户,如果想以普通用户删除其他用户,需要具有 drop user 的权限。如果执行了级联操作,那么就会先删除该用户的所有对象,再删除该用户。如果其他用户引用了该用户的对象(表、视图、存储过程,函数,包……),那些被引用的对象将会标记为Invalid。

1.2权限管理

1.2.1、用户权限的授予与撤销

            首先要了解的是:

系统权限(约140种):用户对数据库的相关权限(建立以及修改数据库、表之类的操作)

            对象权限(约25个):用户对其他用户的数据对象(用户创建的表,视图,触发器之类的)操作的权限

【赋权限: grant权限 on 表名 to 用户名】

例如,使用普通用户scott赋予普通用户xiaoming以select emp的权限而且with grant option ,也就是说运行xiaoming将select权限赋予别人。

     【conn scott/tiger;】

     【grant select on emp to xiaoming with grant option;

我们可以让用户xiaoming尝试使用select来查询一下scott的emp表

     【conn xiaoming/m123;】

     【select ename from scott.emp;】

xiaoming拥有了select权限之后还可以赋给xiaohong

     【grant select on scott.emp to xiaohong with grant option;】

如果这个时候scott用户撤销了xiaoming的权限,那么xiaoming赋给xiaohong的权限将会被级联撤回。

     【conn scott/tiger;

     【撤销权限:revoke select on emp from xiaoming;

此时再次尝试登陆xiaoming和xiaohong来查询scott.emp表就查不到了。会报错ORA-00942: 表或视图不存在

1.2.2、系统权限的授予与撤销

            系统权限的授予与撤销和对象权限的授予与撤销的区别有两点

  • 当授予的系统权限具有传递性时,使用的语法不再是with grant option,而是with admin option;
  • 当授予的系统权限具有传递性,并且传递给了其他用户,那么该用户系统权限被撤销时,其他用户的系统权限将不受影响,即不会执行级联操作。

相同点:

系统和对象权限如果想撤销传递性,都是必须先撤销权限,在用不带传递性的命令进行授权。

1.3角色管理

1.3.1、角色授予与撤销

Oracle所有权限共165多个,可以看到,Oracle里面的权限非常多,一个一个的赋肯定是麻烦的,所以就有了角色这个概念,一个角色就是一组权限,常用的三个角色就是connect、resource和dba,一般情况下,只需要给普通用户connect和resource两个角色即可满足大部分需求

【赋角色: grant 角色 to 用户名】

例如上面刚创建xiaoming和小红的时候给他俩赋予connect的角色

            【grant connect to xiaoming

            【grant connect to xiaohong】

当然也可以自定义角色,比如有个需求一个用户需要有creat session,select on scott.emp, insert on scott.emp, update on scott.emp 的权限,那么我们可以先来登陆dba用户,然后创建角色(只有dba才能创建角色)

【conn system/system;】

【创建一个角色:create role 角色名;】

然后登陆dba用户,将create session的系统权限授予角色,然后再登陆scott,将其它对表操作的权限授予角色,最后登陆dba用户将角色授予用户即可。

【conn system/system;】

【grant create session to 角色名 with admin option】

【conn scott/tiger;】

【grant select,insert,update on emp to 角色名 with grant option;】

【conn system/system;】

【grant 角色名 to 用户名;】

可以发现,一个角色和一个用户非常类似,所以说如果撤销角色的话,会执行级联操作。

1.4、用户登陆口令管理

            使用profile管理用户口令

            需求一、3次密码错误,封号2天(使用system或sys用户)

                        create profile aaa limit failed_login_attempts 3 password_lock_time 2;

                       

                        alter user xiaoming profile aaa;

            解释:

                        create profile 规则名称 limit failed_login_attempts 尝试次数 password_lock_time 封禁天数;

           

            需求二、解锁(使用system或sys用户)

                        alter user xiaoming account unlock;

            解释:

                        alter user 用户名 account unlock;

           

            需求三、终止口令,要求用户每隔10天强制要求修改密码,宽限期为2天。

                        create profile bbb limit password_life_time 10 password_grace_time 2;

            解释:

                        create profile 规则名称 limit password_life_time 间隔时间 password_grace_time 宽限时间;

 

            需求四、口令历史,指定口令10天后即可使用

                        create profile ccc limit password_life_time 10 password_grace_time 2 password_reuse_time 10;

            需求五、删除profile

                        drop profile 规则名称 【cascade】

《Oracle10g数据库基础教程》孙风栋主编的课后作业:

1.简答题

(1)Oracle数据库的安全控制机制有哪些?

答:Oracle数据库的安全控制机制包括以下6个方面:

①、用户管理

②、权限管理    

③、角色管理

④、表空间设置和配额    

⑤、用户资源限制    

⑥、数据库审计

(2)Oracle数据库用户的认证方式有哪几种?

答:Oracle数据库用户的认证方式有以下3种:

①、数据库身份认证 (最常用的方式)

②、外部身份认证  

③、全局身份认证

(3)Oracle数据库中的权限有哪几种?

答:Oracle数据库中的权限有以下2种:

①、系统权限

②、对象权限

(4)Oracle数据库中给用户授权的方法有哪几种,如何实现?

答:Oracle数据库中给用户授权的方法大致有以下4种:

①、授予系统或对象权限    grant 权限名1,权限名2,.... to 用户名1,用户名2,...;

②、授予系统权限并附带传递性    grant 权限名1,权限名2,.... to 用户名1,用户名2,... with admin option;

③、授予对象权限并附带传递性    grant 权限名1,权限名2,.... to 用户名1,用户名2,... with grant option;

④、先授予角色权限再将角色授予用户    grant 角色名 to 用户名;

(5)简述Oracle数据库角色的种类、作用及如何利用角色为用户授权。

答:在Oracle中分系统预定义角色和用户自定义角色两种;

系统角色由系统创建,并由系统进行授权;

用户角色由用户创建,并由用户进行授权;

角色的作用就是为了简化数据库权限管理。

(6)Oracle数据库系统权限的授予与回收和对象权限的授予与回收的区别是什么?

答:区别:

①、系统权限只能由dba用户进行授予,而dba和普通用户都能进行对象权限授予;

②、系统权限的回收不会执行级联操作;对象权限的回收会执行级联操作;

特别注意一点,带有传递性的权限若想回收传递性,都是必须先回收整个权限,再赋予不带传递性的权限。

(7)简述Oracle数据库概要文件(即profile文件)的作用。

答:概要文件的作用:

①、可以限制用户对数据库和系统资源的使用

②、可以对用户口令进行管理

(8)分别列举5种常用的系统权限、对象权限和3个角色,并说明其功能。

答:常用的5种系统权限:

①、create procedure;

②、create table;

③、create view;

④、create index;

⑤、create session;

常用的5种对象权限:

①、select

②、insert

③、update

④、alter

⑤、delete

常用的3种角色:

①、connect     可以创建会话,连接数据库等

②、resource   可以创建表、过程、触发器等

③、dba            可以拥有dba的权限

(9)列举概要文件中控制资源使用的参数,并说明如何设置。

答:资源控制有如下9种参数:CPU_PER_SESSION、CPU_PER_CALL、CONNECT_TIME、IDLE_TIME、SESSION_PER_USER、LOGICAL_READS_PER_SESSION、LOGICAL_READS_PER_CALL、PRIVATE_SGA、COMPOSITE_LIMIT

设置方式:create profile 概要文件名称 limit 参数1 参数1值 参数2 参数2值

(10)列举概要文件中口令管理的参数,并说明如何设置。

答:口令管理有如下7种参数:FAILED_LOGIN_ATTEMPTS、PASSWORD_LOCK_TIME、PASSWORD_LIFE_TIME、PASSWORD_GRACE_TIME、PASSWORD_REUSE_TIME、PASSWORD_REUSE_MAX、PASSWORD_VERIFY_FUNCTION

设置方式:和资源控制参数设置方式完全相同:create profile 概要文件名称 limit 参数1 参数1值 参数2 参数2值

2.实训题

(1) 创建一个口令认证的数据库用户usera_exer,口令为usera,默认表空间为USERS,配额为10MB,初始账户为锁定状态。

CREATE USER usera_exer IDENTIFIED BY usera DEFAULT TABLESPACE users QUOTA 10m ON users ACCOUNT LOCK;

(2)创建一个口令认证的数据库用户userb_exer,口令为userb。

CREATE USER userb_exer IDENTIFIED BY userb;

(3)为usera_exer用户授予 create session 权限、scott.emp 的select和update权限,并允许将权限授予其他用户。

GRANT create session TO usera_exer WITH ADMIN OPTION;

GRANT select,update on scott.emp TO usera_exer WITH GRANT OPTION;

(4)将用户usera_exer的账户解锁

ALTER usera_exer ACCOUNT UNLOCK;

(5)用usera_exer登录数据库。将scott.emp的select和update的权限授予userb_exer

CONN usera_exer/usera;

GRANT  select,update on scott.emp TO userb_exer;

(6)禁止用户usera_exer将获得的create session权限再授予其他用户(此题考查了如何撤销带传递性的权限)

REVOKE create session FROM usera_exer;

GRANT create session TO usera_exer;

(7)类似(6)

(8)创建rolea,roleb,将create table 、insert,delete on scott.emp 的权限授予rolea,将connect、resource角色授予roleb

CREATE ROLE rolea;

CREATE ROLE roleb;

GRANT create table TO rolea;

GRANT insert,delete on scott.emp TO rolea;

GRANT connect,resource TO roleb;

(9)将角色rolea,roleb授予用户usera_exer

GRANT rolea,roleb TO usera_exer;

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

CREATE PROFILE usera_profile LIMIT connect_time 30 idle_time 10 password_life_time 20 failed_login_attempts 4 password_lock_time 10;

 

.


看完如果觉得不错,留个赞再走。


.

你可能感兴趣的:(我信仰自由与共享,数据库,数据库笔记,Oracle安全管理)