Oracle基本安全之用户、角色和权限操作

学习Oracle离不开用户、角色和权限这三个概念,下面首先解释一下这三个概念:

用户:对数据库的访问需要以适当的身份通过验证,这就是用户的作用;每个Oracle用户都有自己的用户名和密码,并且拥有他们所创建的任意表、视图和其他资源,需要注意的是新创建的用户连最基本的访问登入Oracle的权限都没有,所以后续需要授予不同的权限和角色来达成不同的操作目的;

权限:权限一般分为系统权限和对象权限,系统权限可以通俗地理解为将数据库对象从无到有或从有到无的创建操作,比如说创建和删除表、视图、存储过程、session等这些操作都可以认为是系统权限;对象权限赋予了你在不同的数据库对象上操作的能力,比如DELETE权限允许你对表和视图删除行,SELETE权限允许你对表、视图、序列等进行查询操作!至于系统权限和对象权限分别有哪些,具体请参照Oracle官网,这里不再详细解释!

角色:如果多个新建用户需要后续赋予10不等的不同权限,一般方法是需要将10个不等的权限分别列出来进行授予,不但麻烦而且重用性不高,角色的出现就是为了解决这个问题。Oracle角色是一组权限的集合。正常情况下我们可以授予角色一些权限,然后将角色分配给适当的用户;

概念大致介绍如上,下面依次开始介绍具体操作:

一、用户操作,包括创建新用户、密码变更以及失效等

oracle系统本身自带了好多已经创建的用户,其中包括SYSTEM和SYS用户,SYS用户包含用来管理数据库的核心内部表,而SYSTEM用来包含其他的表和视图。在此,我们可以使用SYSTEM用户来进行用户操作!

-- 创建了一个user01的账户,密码为root
CREATE USER user01 IDENTIFIED BY root;
-- 更改user01的密码,改为root1
ALTER USER user01 IDENTIFIED BY root1;
需要注意的是虽然上述过程中创建了一个账户,并不代表该账户可以直接登录到Oracle中,除非它具有CREATE SESSION的权限;

再说说密码的修改,除了DBA用户可以使用ALTER USER的命令修改密码之外,还可以使用PASSWORD命令来修改密码,普通用户只能用来修改自己的密码,管理员可以修改任意用户的密码,下面首先演示user01用户如何修改自己的密码,从root修改为root1:


接下来演示管理员sys修改user01用户的密码,从root1修改为root:


密码过期与锁定机制:比如当一个用户5次登陆失败后,该账户即变为锁定状态,无法继续使用,比如强制每30天修改一次密码等,这些操作都可以通过配置文件来实现。你需要做的就是编写一个配置文件,然后指定要修改配置的属性,最后跟用户相关联,这样就给用户增加了这个功能,如下:

首先创建一个PROFILE配置文件,代码如下:


第2行表示登录失败次数5次,即五次登录失败则锁定账户;第3行表示一旦账户被锁定,被锁定的时间(以天为单位),一天过后,账户自动解锁;第4行表示密码过期的时间,也是以天为单位,即30天后,则必须在下一次登录时更新密码;

接着将这个配置文件与用户相关联,如下:


这样一来,刚刚的配置就在这个user01账户上生效,5次登录失败后,账户即被锁定,如下:


可以看到账户被锁定后,要么采用1天后自动解锁,要么DBA使用ALTER命令解锁账号;

过期账户与锁定账户不同,锁定的账户可在一段时间后自动解锁,但是过期的账户需要有DBA手动设置才会生效,下面演示一个例子,用DBA账户给user01过期,然后user01登录,最后改密码的过程:


密码的重用限制

Oracle中为了防止密码被重复使用可以在配置文件中配置两个参数:PASSWORD_REUSE_MAX和PASSWORD_REUSE_TIME,需要注意的是这两个属性如果设置其中一个另外一个一定要设置为UNLIMITED


二、权限角色的授予(GRANT)与剥夺(REVOKE)

GRANT命令的通用格式如下:


可以将任何权限、角色赋予给其他用户和其他角色,甚至也可以通过with admin option子句保证被授予者将权限或角色授予给其他用户或角色,ALL的作用是授予用户或角色除了部门系统权限以外的所有权限;

REVOKE命令的作用是撤销已经授予的权限,通用格式如下:


具有DBA角色的账户可以撤销任何人权限或角色,这就是为什么除了几个DBA角色的账户外,一般不授予DBA的原因;

好了,先介绍这么多,后续会继续针对这块添加新内容!!

猜你喜欢

转载自blog.csdn.net/yu102655/article/details/53301363