黑帽联盟

标题: oracle用户安全管理及基础语法 [打印本页]

作者: yun    时间: 2016-11-28 23:43
标题: oracle用户安全管理及基础语法
Oracle用户管理
创建用户:
语法:create user 用户名 identified by 密码

修改密码:
语法:passw 用户
Alter user 用户名 identified by 新密码;
mysql不同,mysql修改密码方式:
Set password for 用户名=password(‘密码‘)

用新用户登录oracle数据库
Conn 新用户/密码
ERROR:
ORA-01045: user CBH lacks CREATE SESSION privilege; logon denied
不允许登录数据库,需要授权才可。
mysql不同,新建的用户可以直接登录mysql数据库

用户授权
一般都是用管理员进行授权
Grant
语法:grant 权限 to 用户;

用户权限
权限可分为系统权限和对象权限
系统权限:create usercreate tablecreate viewcreate sequence等等
对象权限:insertdeleteupdateselect等等

用户角色
可分为:预定义角色和自定义角色
角色包括权限

预定义角色:dbaconnectresource
自定义角色:crud(即增删改查)

授予角色
语法:grant 角色 to 用户

回收角色
语法:revoke 角色 from 用户

删除用户
语法:drop user 用户
前提:此用户没有创建任何对象。否则不能删除,要想删除,需在后面加上cascade参数
如:drop user 用户 cascade(删除此用户的时候,此用户所创建的数据对象也会被一并删除)
如果想紧紧删除用户,不删除数据对象,可以先备份一下数据,然后在删除用户,接着再恢复数据。

Oracle方案
每当创建一个用户的额时候,并且用这个用户创建了数据对象,也就产生了相应的方案,方案名称和用户的名称一样
mysql不同,在里面没有方案概念,刚创建的用户,授予他all权限,就可以查看当前数据库下的所有表,而oracle不同,它需要被授予查看某个方案里表的权限才可

案例:
Dingwei用户想查看scott方案里面的emp表,则需要管理员或者scott用户给dingwei用户进行授权,才可进行相应的操作。
Grant select on scott.emp to dingwei;

系统权限和对象权限的继承
系统权限继承:with admin option
对象对象继承:with grant option

案例:
1、  通过系统管理员system新建用户dingwei并授权可以查看scott方案里面的emp表,再通过dingwei用户授权给其它用户stu用户可以查看scott方案里面的emp表。
Conn scott/admin或者conn system/admin
Grant select on scott.emp to dingwei with grant option;
Conn dingwei/dingwei
Grant select on scott.emp to stu;

用户口令管理
Profile文件profile是口令限制,资源限制的命令集合,当建立数据时,oracle会自动建立名称为defaultprofile,当建立用户没有指定profile选项,那oracle就会将default分配给用户。
Mysql没有profile口令历史管理文件

创建profile
语法:create profile profile文件名 limit failed_login_attempts 登录的次数 password_lock_time 天数;

分配profile文件给某个用户
语法:alter user 用户 profile profile文件;

案例(账户锁定)
例如:指定scott用户最多只能尝试3次登录,失败过后,锁定用户2天。
Create profile myprofle1 limit failed_login_attempts 3password_lock_time 2;
Alter user scott profile myprofile1

为用户解锁
Alter user scott account unlock

终止口令
用途:为了让用户定期修改密码可以使用终止口令来完成,同样这个命令需要dba身份来操作
语法:create profile profile文件 limit password_life_time 天数 password_grace_time 宽限日;

案例:
给所创建的用户dingwei创建一个profile文件,要求该用户每隔10天需修改登录密码,宽限期为2天。
Create profile myprofile2 limit password_life_time 10password_grace_time 2;
Alter user digwei profile myprofile2
切记:一个用户只要被分配了一次profile,要想再次分配的话,会在原有的基础上进行累加天数。和想要的结果不一样,即使删除之前分配过的profile

口令历史
概述:当要求用户修改密码时,不能使用原有的旧密码,可使用口令历史。
语法:create profile profile文件 password_life_time 5 password_grace_time 2password_reuse_time 1;

删除profile
语法:drop profile profile文件;

Oracle登录认证方式
分为操作系统认证和数据库认证

操作系统认证(默认的认证方式)
Conn 不存在用户/随机密码 as sysdba(可以登录进去,并且是以超级用户登录进去)
Conn 存在的普通用户/随机密码 as sysdba(可以登录进去,并且是以超级用户登录进去)
原因:系统用户组ora_dba里面有当前用户,所以才会导致如此
解决方式:删除ora_dba组里面的用户即可。

数据库验证
对于普通用户验证,默认的是数据库验证
对于特权用户,如sys,是通过操作系统认证的,在这里可以修改数据库的认证登录方式,即修改sqlnet.ora文件
SQLNET.AUTHENTICATION_SERVICES= (NTS) 注:是通过操作系统认证的
SQLNET.AUTHENTICATION_SERVICES= (NONE) 注:是通过数据库验证的
SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS) 注:也可两者结合
再通过数据库验证的额时候,使用如下方式是登录不进去的。
Conn 不存在用户/随机密码 as sysdba
Conn 存在的普通用户/随机密码 as sysdba

Oracle管理员密码丢失
解决方法:
1、  在安装目录下找PWDorcl.ora文件,备份一下,再删除此文件
2、  在dos环境下,前提必须是操作系统管理员用户administrator,执行以下命令:
a)        Orapwd file=PWDorcl.ora所在的全路径\PWDorcl.ora password=新的密码 entries=10。会生成一个新的PWDorcl.ora文件
注:entries是针对多个超级用户可以同时登录数据库。






欢迎光临 黑帽联盟 (https://bbs.cnblackhat.com/) Powered by Discuz! X2.5