实验一数据库安全管理实验内容1、创建用户、角色根据下表的要求1)建立角色;2)为角色分配权限;3)建立密码管理和资源限制Profile文件;4)建立用户;5)为用户分配角色;6)用户登录,执行相应的SQL操作。
由系统管理员(admin)创建以下数据表:课程信息表CourseInfo,排课信息表ClassInfo,部门代码表DepartmentInfo,教师信息表TeacherInfo,学生信息表StudentInfo,选课信息表SelectiveInfo,保存在系统管理员的schema中。
请按照文档lab1_DataModel.doc的表结构创建表。
三次登录失败,锁定账户;使用30天后需要更改密码;旧密码过期后100天内不SESSION S_PER_USER=UNLIMI TEDCPU_PER _SESSION=UNLIMITE D角色:CONNECT对象权限:查看学生信息查看教师信息更新教师信息查看排课记录更新和查看选课信息中成绩列,学号列以及班级列记录查看院系代码信息登录时修改密码;SESSIONS_PER_USER=2IDLE_TIME=30CONNECT_TIME=60角色:CONNECT对象权限:查看学生信登录时修改密码;SESSIONS_PER_USER=1IDLE_TIME=20CONNECT_TIME=30息看课程信息看选课信息实验步骤如下:运行SQL*Plus工具,sys用户以SYSDBA特权登录,输入口令abc123。
1、ADMIN操作步骤一:创建表空间ADMIN指定该表空间内的表在加载数据时是否产生日志,默认为产生日志(LOGGING),指明数据文件的路径与名字,表空间的大小,最后指定表空间的扩展方式是本地化管理EXTENTMANAGEMENTLOCAL,段空间的管理方式为自动SEGMENTSPACEMANAGEMENTAUTO。
操作步骤二:创建概要文件ADMINPROFILE来对数据库用户进行资源限制和密码管理限制用户在一次数据库会话期间可以使用的CPU时间为UNLIMITED,用户可打开的并发会话的最大数目为UNLIMITED,指定用户三次登录失败后锁定账户,设置使用一个特定密码的时间限制为30天,指定可重新使用密码前要经过100天。
操作步骤三:创建ADMIN用户设置ADMIN用户密码为admin,指定其概要文件为ADMINPROFILE,标志用户所创建对象的默认表空间为admin,用户的临时段表空间为temp,限制表空间存储对象为1M。
并授予ADMIN用户DBA权限。
操作步骤四:以AMDIN身份登录,执行lab1.sql脚本文件创建数据表。
2、TEACHER操作步骤一:创建表空间TEACHER操作步骤二:创建角色TEACHER该角色使用非验证方式。
将CONNECT角色授予TEACHER,给TEACHER角色授予查看学生信息,查看更新教师信息,查看排课记录,查看选课信息,更新选课信息中的成绩列、学号列和班级列记录,查看院系代码信息的权限。
操作步骤三:创建概要文件TEACHERPROFILE操作步骤四:创建用户teacher1,并将TEACHER权限授予teacher13、STUDENT操作步骤一:创建表空间STUDENT操作步骤二:创建概要文件STUDENT操作步骤三:创建角色STUDENT操作步骤四:创建用户CHENWEIXIAO(陈伟晓),并将STUDENT权限授予CHENWEIXIAO3.2、权限管理及安全信息查询1)系统管理员admin登录选课系统数据库,登录三次失败,第四次输入正确的密码进行登录,会出现什么情况?为什么?答:系统管理员admin登录三次失败,系统会提示“在3次尝试之后无法连接到ORACLE,退出SQL*PLUS”,第四次输入正确的密码进行登录,系统提示“theaccountislocked”,即账户被锁定,无法登录。
可以用sysassysdba登录,输入alteruseradminaccountunlock;命令对admin 进行解锁。
2)使teacher1具有创建数据表系统权限,以用户teacher1登录,创建一个部门代码表DepartmentInfo作为系统管理员创建的部门代码表的备份;答:以管理员admin登录,将创建表权限授予teacher1登录teacher1用户,系统提示密码过期,更改teacher1密码为sir后重新登录。
输入命令createtableDepartmentInfoasselect*fromadmin.DepartmentInfo;来创建表(当使用CREATETABLE…ASSELECT语句创建表时,Oracle将通过从admin.DepartmentInfo表中复制列来建立表。
在创建表后,Oracle就会使用从SELECT语句中返回的行来填充新表)。
3)用户teacher1登录,分配学生用户(你的名字的拼音)查看teacher1.DepartmentInfo记录的权限;学生用户登录,查看teacher1.DepartmentInfo中的记录;答:用teacher1登录,输入grantselectonteacher1.DepartmentInfotochenweixiao分配给我查看teacher1.DepartmentInfo记录的权限,再用chenweixiao登录,系统提示密码过期,修改密码为cwx后登录,输入selece*fromteacher1.DepartmentInfo;来查看记录4)取消用户teacher1创建数据表权限;取消学生用户查看teacher1.DepartmentInfo记录的权限;答:用系统管理员admin登录,用REVOKEsystem_privilegeFROMuser|role|public收回系统权限5)从数据库中删除用户teacher1。
答:用DROPUSERuser_name[CASCADE]语句即可删除用户,CASCADE选项可以删除该用户模式中的所有对象。
6)创建密码验证函数,要求密码至少包含大小写字母、数字和特殊字符(@#$%)中的一个,并且不少于8位。
然后将该密码验证函数应用于学生用户并验证效果(可选)SQL语句如下:CREATEORREPLACEFUNCTIONxiao_verify_function(usernamevarchar2,passwordvarchar2,old_passwordvarchar2)RETURNbooleanISnboolean;minteger;isdigitboolean;ischarboolean;ispunctboolean;digitarrayvarchar2(20);punctarrayvarchar2(25);chararrayvarchar2(52);BEGINdigitarray:='0123456789';chararray:='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';punctarray:='@#$%';--CheckfortheminimumlengthofthepasswordIFlength(password)<8THENraise_application_error(-20002,'Passwordlengthlessthan8');ENDIF;--Checkifthepasswordcontainsatleastoneletter,onedigitandone--punctuationmark.--1.Checkforthedigitisdigit:=FALSE;m:=length(password);FORiIN1..10LOOPFORjIN1..mLOOPIFsubstr(password,j,1)=substr(digitarray,i,1)THENisdigit:=TRUE;GOTOfindchar;ENDIF;ENDLOOP;ENDLOOP;IFisdigit=FALSETHENraise_application_error(-20003,'Passwordshouldcontainatleastonedigit,onecharactera ndonepunctuation');ENDIF;--2.Checkforthecharacter<<findchar>>ischar:=FALSE;FORiIN1..length(chararray)LOOPFORjIN1..mLOOPIFsubstr(password,j,1)=substr(chararray,i,1)THENischar:=TRUE;GOTOfindpunct;ENDIF;ENDLOOP;ENDLOOP;IFischar=FALSETHENraise_application_error(-20003,'Passwordshouldcontainatleastone\ digit,onecharacterandonepunctuation');ENDIF;--3.Checkforthepunctuation<<findpunct>>ispunct:=FALSE;FORiIN1..length(punctarray)LOOPFORjIN1..mLOOPIFsubstr(password,j,1)=substr(punctarray,i,1)THENispunct:=TRUE;GOTOendsearch;ENDIF;ENDLOOP;ENDLOOP;IFispunct=FALSETHENraise_application_error(-20003,'Passwordshouldcontainatleastone\ digit,onecharacterandonepunctuation');ENDIF;--Everythingisfine;returnTRUE;RETURN(TRUE);END;/将该密码验证函数应用于学生用户alterprofilestudentlimitpassword_verify_functionxiao_verify_function;3、数据库审计1)审计所有查询选课消息表(admin.selectiveInfo)的操作;AUDITSELECTONADMIN.SELECTIVEINFO;2)审计用ADMIN创建数据表的操作;AUDITCREATETABLEBYADMIN;3)审计所有数据更新操作;AUDITUPDATEANYTABLE;执行结果截图:。