Oracle数据库安全管理

Author Avatar
Euan 9月 30, 2019
  • 在其它设备中阅读本文章

Oracle数据库安全管理

一、实验目的

1 掌握Oracle安全控制的实现;

2 掌握Oracle用户管理;权限管理;

3 掌握Oracle数据库角色管理;

4 了解Oracle数据库概要文件的管理;

5 了解Oracle数据库审计;

二、实验要求(具体步骤进行截屏展示并配以文字说明)

1创建一个名为Tom的用户,采用口令认证方式,口令为Tom,默认表空间为USERS,默认临时空间为TEMP。(与创建Tom类似,继续创建用户Jack,Bob);创建完三个用户后,授予相应权限使他们都能连接到数据库;

由于之前的win10oracle和imac中docker两个oracle镜像崩溃,本想再安个虚拟机再装,后来嫌太麻烦于是在林宇靖同学的VM上进行了这次实验

下面的TOM,JACK, BOB的用户名将用TOM_zyh, Jack_zyh, Bob_zyh用户名进行代替,由于该VM没有之前作也的HR表导致一些命令无法实现,但原理经过学习已经掌握大概

CREATE TABLESPACE TEMP_zyh DATAFILE ‘C:\1759116\TEMP_1.DBF’ SIZE 50M;

V11BJx.png

CREATE USER Tom_zyh IDENTIFIED BY Tom DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;

CREATE USER Jack_zyh IDENTIFIED BY Jack DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;

CREATE USER Bob_zyh IDENTIFIED BY Bob DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;

创建用户Tom_zyh,Jack_zyh,Bob_zyh

V110F1.png

V116yD.png

GRANT CREATE SESSION TO Tom_zyh;

GRANT CREATE SESSION TO Jack_zyh;

GRANT CREATE SESSION TO Bob_zyh;

V11doR.png

给Tom_zyh、Jack_zyh、Bob_zyh授权连接数据库

2 为Tom授予CREATE TABLE, CREATE VIEW系统权限,并可以进行权限传递;将HR方案中EMPLOYEES对象的SELECT, UPDATE, INSERT, DELETE权限授予TOM,并允许对象权限的传递;

GRANT CREATE TABLE,CREATE VIEW TO Tom_zyh WITH ADMIN OPTION;

授予Tom_zyh系统权限,用WITH ADMIN OPTION可以进行权限传递

V11aw9.png

GRANT SELECT,UPDATE,INSERT,DELETE ON HR.EMPLOYEES TO Tom_zyh WITH GRANT OPTION;

授予Tom_zyh HR方案中EMPLOYEES对象的权限,使用WITH GRANT OPTION 可以进行对象权限的传递
用于没有该原始表,依旧错误

V112eH.png

3 查看Tom, Jack, Bob用户所具有的对象权限和系统权限的详细信息;

这里没有系统和对象权限应该跟原始表确实有关,跟王金峰同学代码运行依旧报错

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’TOM’;
没有对象权限

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’TOM_zyh’;
没有系统权限

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’JACK_zyh’;

没有对象权限

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’JACK_zyh’;

没有系统权限

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’Bob_zyh’;

没有对象权限

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’Bob_zyh’;

没有系统权限

V11sSK.png

4 以Tom用户登录系统,将CREATE TABLE, CREATE VIEW系统权限,HR方案中EMPLOYEES对象的SELECT, UPDATE, INSERT, DELETE权限授予Jack和Bob,并查看Tom, Jack, Bob用户所具有的对象权限和系统权限的详细信息;

退出系统用户,用Tom_zyh用户登录系统

GRANT CREATE TABLE,CREATE VIEW TO JACK WITH ADMIN OPTION;

GRANT SELECT,UPDATE,INSERT,DELETE ON HR.EMPLOYEES TO JACK WITH GRANT OPTION;

GRANT CREATE TABLE,CREATE VIEW TO BOB WITH ADMIN OPTION;

GRANT SELECT,UPDATE,INSERT,DELETE ON HR.EMPLOYEES TO BOB WITH GRANT OPTION;

V11DW6.png

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’TOM_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’TOM_zyh’;

V11yQO.png

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’Jack_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’Jack_zyh’;

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’Bob_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’Bob_zyh’;

V11cOe.png

看到TOM_zyh授权给Jack_zyh和Bob_zyh的对象权限和系统权限

5 以SYSTEM用户登录系统,收回用户Tom的CREATE TABLE, CREATE VIEW系统权限,HR方案中EMPLOYEES对象的SELECT, UPDATE, INSERT, DELETE权限,查看Tom_zyh, Jack_zyh, Bob_zyh用户所具有的对象权限和系统权限的详细信息;讨论在收回具有权限传递的系统权限和对象权限的级联效应。

REVOKE CREATE TABLE,CREATE VIEW FROM TOM_zyh;

REVOKE SELECT,UPDATE,INSERT,DELETE ON HR.EMPLOYEES FROM TOM_zyh;

回收系统权限和对象权限

V11Rwd.png

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’TOM_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’TOM_zyh’;

V11WTA.png

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’JACK_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’JACK_zyh’;

V115fP.png

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’BOB_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’BOB_zyh’;

V114Yt.png

讨论在收回具有权限传递的系统权限和对象权限的级联效应。

TOM_zyh的权限被收回,由TOM_zyh授予Jack_zyh和Bob_zyh的权限同样也被收回

6 创建一个角色(名字自拟),授予该角色CREATE TABLE, CREATE VIEW系统权限,HR方案中EMPLOYEES对象的SELECT, UPDATE, INSERT, DELETE权限,并将该角色指派给Tom,查看Tom用户所具有的对象权限和系统权限的详细信息;

CREATE USER ZYH IDENTIFIED BY ZYH DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
GRANT CREATE SESSION TO ZYH;

GRANT CREATE TABLE,CREATE VIEW TO ZYH WITH ADMIN OPTION;

GRANT SELECT,UPDATE,INSERT,DELETE ON HR.EMPLOYEES TO ZYH WITH GRANT OPTION;

重复之前的操作,创建用户ZYH

V11hFI.png

登录ZYH,授予TOM权限

GRANT CREATE TABLE,CREATE VIEW TO TOM_zyh WITH ADMIN OPTION;

GRANT SELECT,UPDATE,INSERT,DELETE ON HR.EMPLOYEES TO TOM_zyh WITH GRANT OPTION;

V1176S.png

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’TOM_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’TOM_zyh’;

V11oSf.png

To_zyh的权限来自ZYH

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’JACK_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’JACK_zyh’;

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE=’Bob_zyh’;

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE=’Bob_zyh’;

V11Tl8.png

JACK_zyh和Bob_zyh的权限随着TOM的权限被收回而消失,ZYH授予TOM_zyh的权限不能进行权限传递,JACK_zyh和Bob_zyh没有获得权限

7 创建一个概要文件,DEMO。要求每个用户的最多会话数为3个,最长的连接时间为60分钟,最大空闲时间为20分钟,每个会话占用CPU的最大时间为10秒;用户使用口令登录系统的最大尝试次数为3次,登录失败后账户锁定7天。

CREATE PROFILE DEMO_zyh LIMIT

SESSIONS_PER_USER 3 CONNECT_TIME 60 IDLE_TIME 20

CPU_PER_CALL 100 FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 7;

创建概要文件DEMO:create profile demo

限制:limit

最多会话数3个:sessions_per_user 3

最长的连接时间为60分钟:connect_time 60

最大空闲时间20分钟:idle_time 20

每个会话占用CPU的最大时间为10秒:cpu_per_call 100

用户使用口令登录系统的最大尝试次数为3次:failed_login_attempts 3

登陆失败后账户锁定7天:password_lock_time 7

V11OTs.png

8 将概要文件指派给用户Jack,然后以Jack账户登录系统并连续三次输入错误口令,查看账户状态。

ALTER USER JACK PROFILE DEMO_zyh;

V11Lwj.png

连续输入三次错误口令后闪退

V11HOg.png

查看账号状态

SELECT ACCOUNT_STATUS FROM DBA_USERS WHERE USERNAME=’Jack_zyh’;

V11qmQ.png

用户Jack_zyh被锁定LOCKED(TIMED)

本文使用 CC BY-NC-SA 3.0 中国大陆 协议许可
具体请参见 知识共享协议

本文链接:https://zyhang8.github.io/2019/10/01/oracle-exp4/