Oracle数据库安全性有关的对象

1、用户管理

    用户管理分为创建用户、修改用户信息、删除用户。

1.1、创建用户

    创建用户语法:

CREATE USER username IDENTIFIED BY password 
                   OR EXTERNALLY AS cetificate_CN  
                   OR GLOBALLY AS directory_DN  
                   [DEFAULT TABLESPACE tablespace]  
                   [TEMPORARY  TABLESPACE tablespace|tablespace_group_name] 
                   [QUOTA size|UNLIMITED ON tablespace]
                   [PROFILE profile]
                   [PASSWORD EXPIRE]
                   [ACCOUNT LOCK|UNLOCK]

IDENTIFIED BY password :以密码的方式验证

EXTERNALLY AS cetificate_CN:以外部作为验证的 方式

GLOBALLY AS directory_DN :以全局作为验证的方式

[DEFAULT TABLESPACE tablespace] :设置默认表空间

[TEMPORARY TABLESPACE tablespace|tablespace_group_name] :设置临时表空间或表空间组

[QUOTA size|UNLIMITED ON tablespace]:设置用户在该表空间使用的最大值,UNLIMITED表示不限制。

[PROFILE profile]:当前用户使用的概要文件的名称。省略表示使用当前数据库默认的概要文件。

[PASSWORD EXPIRE]:设置当前用户的 密码处于立即过期状态。要登陆就要修改密码。

[ACCOUNT LOCK|UNLOCK]:表示该用户的状态是否处于锁定状态。


1.2、修改用户信息

    修改用户信息语法:

ALTER USER username IDENTIFIED 
                   { BY password [REPLACE old_password]
                     | EXTERNALLY [AS 'cetificate_CN' ]  
                     | GLOBALLY   [AS 'directory_DN'  ]
                    }
                     [DEFAULT TABLESPACE tablespace]  
                     [TEMPORARY  TABLESPACE tablespace|tablespace_group_name] 
                     [QUOTA size|UNLIMITED ON tablespace]
                     [PROFILE profile]
                     [PASSWORD EXPIRE]
                     [ACCOUNT {LOCK|UNLOCK}]

1.3、删除用户

    删除用户语法:

DROP USER user CASCADE

2、权限管理

    在Oracle数据库中,权限分为两种:系统权限、对象权限
    系统权限:SESSION权限、USER权限,对数据库系统级别的操作称为系统权限。
    对象权限:对表对象、序列、触发器等操作的权限。
###2.1、授予用户系统权限
    授予用户系统权限语法:

GRANT system_privilege|ALL PRIVILEGE 
TO {user IDENTIFIED BY password |role| }  [WITH ADMIN OPTION]

    语法说明:

system_privilege:创建的系统权限名称
ALL PRIVILEGE:表示可以设置除了SELECT ANY DICTIONARY权限之外的所有权限。
{user IDENTIFIED BY password |role| } :设置指定用户的权限,role代表的是设置角色的权限。
[WITH ADMIN OPTION]:表示当前进行授权的用户可以给其他用户进行系统授权。

    实例:

GRANT create session to USER1 WITH ADMIN OPTION

2.2、授予用户对象权限

    授予用户对象权限语法:

GRANT object_privilege|ALL  ON schema.object
TO user|role  [WITH ADMIN OPTION]  [WITH THE GRANT ANY OBJECT]

    语法说明:

object_privilege:对象权限的名称
ALL :授予用户所有的对象权限。
schema.object:为用户授予的对象权限使用的对象
user|role:user是用户、role是角色
WITH ADMIN OPTION:给当前用户授权后,该用户还可以给其他用户进行系统授权
WITH THE GRANT ANY OBJECT:给当前用户授权后,该用户还可以给其他用户进行对象授权

    示例:

GRANT DELETE ON AA TO USER1

2.3、撤销权限:

    撤销权限也叫收回权限;也就是删除用户的系统权限或者对象权限。

2.3.1、撤销系统权限

    撤销系统权限前提是当前的用户已存在需要撤销的权限,另外撤销权限只有数据管理员才能操作:
    撤销系统权限语法:

REVOKE system_privilege FROM user|role

    示例:

REVOKE create session  FROM user1

2.3.2、撤销对象权限

    撤销对象权限语法:

REVOKE system_privilege|ALL ON schma.object 
       FROM user|role
       [CASCADE CONTRAINTS]

    示例:

REVOKE DELETE ON AA  FROM user1

说明:
撤销用户的系统权限,该用户授予的其他用户的系统权限仍然存在;
撤销用户的对象权限,该用户授予的其他用户对象权限也被撤销了。

2.4、查询用户的权限

    数据字典DBA_SYS_PRIVS:存放用户的 系统权限
    数据字典DBA_TAB_PRIVS :存放用户的 对象权限

    示例:查询ANONYMOUS用户的系统权限。

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='ANONYMOUS'

3、角色管理

    角色:一组权限的集合(使用角色后可以方便管理员对用户的权限进行管理)。
    用户是数据库的使用者,角色是数据库权限授予的对象。给用户授予一个角色可以理解成给用户授予一组权限。一个角色可以被多个用户所拥有,一个用户也可以具有多个角色。

3.1、创建角色

    创建角色分成两个步骤:创建角色、授予角色权限

3.1.1、创建角色语法:

CREATE ROLE role 
             [NOT IDENTIFIED|
             IDENTIFIED BY [password]| 
             IDENTIFIED BY EXETERNALLY|IDENTIFIED GLOBALLY]

    语法说明:

NOT IDENTIFIED:不需要验证
IDENTIFIED BY [password]:密码验证
IDENTIFIED BY EXETERNALL:外部验证
IDENTIFIED GLOBALLY:全局验证

3.1.2、授予角色权限语法:

GRANT system_tem_privilege | ALL PRIVILEGES TO role  [WITH ADMIN OPTION]

3.2、设置角色

    角色创建之后还没有生效,当角色赋予用户之后才能生效:
    角色赋予用户的语法:

GRANT role TO user

    设置用户的角色生效:

SET ROLE  role
SET ROLE  ALL
SET ROLE  ALL EXCEPT
SET ROLE  NONE

    语法说明:

SET ROLE role : 指定的角色生效
SET ROLE ALL:使所以角色都生效
SET ROLE ALL EXCEPT role:除了role角色,其他的生效
SET ROLE NONE :设置所有角色失效

3.3、修改角色

    修改角色的语法:

ALTER  ROLE  role 
       [NOT IDENTIFIED|
       IDENTIFIED BY [password]| 
       IDENTIFIED BY EXETERNALLY|IDENTIFIED GLOBALLY]

3.4、删除角色

    删除角色的语法:

DROP.ROLE  rolename

###3.5、查询角色
    在数据字典(DBA_ROLE_PRIVS)中查询角色:

SELECT * FROM DBA_ROLE_PRIVS WHERE  GRANTEE='SYSTEM'

查询SYSTEM角色。

4、概要文件PROFILE

    PROFILE概要文件:存放数据库中的系统资源、数据库中使用限制的一些内容。

4.1、创建PROFILE

    创建概要文件的语法:

CREATE PROFILE profile LIMIT {resource_parameters | password_parameters}

    语法说明:

resource_parameters:资源参数
         CPU_PER_SESSION一个会话占用整个CPU的总量
         CPU_PER_CALL一个调用占用CPU最大值
         CONNECT_TIME一个持续的会话的最大值
password_parameters:口令参数
         PASSWORD_LIFE_TIME口令多少天后失效
         PASSWORD_REUSE_TIME密码保留的时间

4.2、删除PROFILE

    删除概要文件的语法:

DROP PROFILE profile [CASCADE]

CASCADE : 当概要文件已经被使用,就加上该关键字。

4.3、查询PROFILE

    查询概要文件使用DBA_PROFILES数据字典:

SELECT * FROM DBA_PROFILES