Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

用户安全管理

$
0
0

一、创建和管理数据库用户帐户

 1、每个数据库用户帐户都具有以下项目:

   (1)唯一的用户名:不能超过30个字节,不能包含特珠字母,而且必须字母开头。

   (2)验证方法:口令、外部验证、全局验证

   (3)默认表空间:注意创建对象和设置空间限额要另外单独授权。

   (4)临时表空间:用户可在其中创建临时对象(于排序和临时表)的表空间

   (5)用户概要文件:分配给用户的一组资源与口令的限制。

   (6)使用户组:由资源管理器使用。

   (7)锁定状态:用户只能访问"未锁定"帐户。

 

  2、创建用户帐户

   CREATE USER gyj3

   IDENTIFIED BY gyj3

   DEFAULT TABLESPACE tp1

   QUOTA 10M ON tp1

   TEMPORARY TABLESPACE temp

   --PROFILE app_user

    --PASSWORDEXPIRE

--ACCOUNT LOCK;

 

建一个最简单的用户操作命令如下:

  sys@OCM>CREATE USER gyj3

 2      IDENTIFIED BY gyj3

 3      DEFAULT TABLESPACE tp1

 4      QUOTA 10M ON tp1

 5      TEMPORARY TABLESPACE temp;

 

User created.

 

 3、查询用户信息

 sys@OCM>col username for a30

sys@OCM> col default_tablespace for a10

sys@OCM> col temporary_tablespace fora10

sys@OCM> selectusername,default_tablespace,temporary_tablespace,to_char(created,'yyyy-mm-dd:hh24:mi:ss'),account_statusfrom dba_users;

 

USERNAME                       DEFAULT_TA TEMPORARY_TO_CHAR(CREATED,'YY ACCOUNT_STATUS

------------------------------ -------------------- ------------------- --------------------------------

MGMT_VIEW                      SYSTEM     TEMP      2009-08-13:23:24:58 OPEN

SYS                            SYSTEM     TEMP      2009-08-13:23:00:59 OPEN

SYSTEM                         SYSTEM    TEMP       2009-08-13:23:00:59OPEN

DBSNMP                         SYSAUX     TEMP      2009-08-13:23:06:35 OPEN

SYSMAN                         SYSAUX     TEMP      2009-08-13:23:22:32 OPEN

GYJ3                           TP1        TEMP       2013-03-01:10:51:33 OPEN

GYJ                            TP1        TEMP       2013-02-28:15:21:03 OPEN

OUTLN                          SYSTEM     TEMP      2009-08-13:23:01:00 EXPIRED & LOCKED

FLOWS_FILES                    SYSAUX     TEMP      2009-08-13:23:26:08 EXPIRED & LOCKED

MDSYS                          SYSAUX     TEMP      2009-08-13:23:12:05 EXPIRED & LOCKED

ORDSYS                         SYSAUX     TEMP      2009-08-13:23:12:05 EXPIRED & LOCKED

EXFSYS                         SYSAUX     TEMP      2009-08-13:23:09:35 EXPIRED& LOCKED

WMSYS                          SYSAUX     TEMP      2009-08-13:23:07:30 EXPIRED & LOCKED

APPQOSSYS                      SYSAUX     TEMP      2009-08-13:23:06:36 EXPIRED & LOCKED

APEX_030200                    SYSAUX     TEMP      2009-08-13:23:26:09 EXPIRED & LOCKED

OWBSYS_AUDIT                   SYSAUX     TEMP      2009-08-13:23:35:05 EXPIRED & LOCKED

ORDDATA                        SYSAUX     TEMP      2009-08-13:23:12:05 EXPIRED & LOCKED

CTXSYS                         SYSAUX     TEMP      2009-08-13:23:09:45 EXPIRED & LOCKED

ANONYMOUS                      SYSAUX     TEMP      2009-08-13:23:10:12 EXPIRED & LOCKED

XDB                            SYSAUX     TEMP      2009-08-13:23:10:12 EXPIRED & LOCKED

ORDPLUGINS                     SYSAUX     TEMP      2009-08-13:23:12:05 EXPIRED & LOCKED

OWBSYS                         SYSAUX     TEMP      2009-08-13:23:35:03 EXPIRED & LOCKED

SI_INFORMTN_SCHEMA             SYSAUX     TEMP      2009-08-13:23:12:05 EXPIRED & LOCKED

OLAPSYS                        SYSAUX     TEMP      2009-08-13:23:18:04 EXPIRED & LOCKED

SCOTT                          USERS      TEMP      2009-08-13:23:35:44 EXPIRED & LOCKED

ORACLE_OCM                     USERS      TEMP      2009-08-13:23:02:20 EXPIRED & LOCKED

XS$NULL                        USERS      TEMP      2009-08-13:23:11:44 EXPIRED & LOCKED

BI                             USERS      TEMP      2013-02-27:23:11:56 EXPIRED & LOCKED

PM                             USERS      TEMP      2013-02-27:23:11:56 EXPIRED & LOCKED

MDDATA                         USERS      TEMP      2009-08-13:23:19:11 EXPIRED & LOCKED

IX                             USERS      TEMP      2013-02-27:23:11:56 EXPIRED & LOCKED

SH                             USERS      TEMP      2013-02-27:23:11:56 EXPIRED & LOCKED

DIP                            USERS      TEMP      2009-08-13:23:01:49 EXPIRED & LOCKED

OE                             USERS      TEMP      2013-02-27:23:11:56 EXPIRED & LOCKED

APEX_PUBLIC_USER               USERS     TEMP       2009-08-13:23:26:09EXPIRED & LOCKED

HR                             USERS      TEMP      2013-02-27:23:11:56 EXPIRED & LOCKED

SPATIAL_CSW_ADMIN_USR          USERS      TEMP      2009-08-13:23:22:20 EXPIRED & LOCKED

SPATIAL_WFS_ADMIN_USR          USERS      TEMP      2009-08-13:23:22:15 EXPIRED & LOCKED

 

二、授予和撤销权限

 1、权限分为两大类,系统权限和对象权限

(1)系统权限:允许用户在数据库中执行特定的操作

A、SYSDBA/SYSOPER这两个权限比较特殊

gyj@OCM> select * from dba_sys_privs where granteein('SYSDBA','SYSOPER');

 

no rows selected

 

B、DBA的系统权限是可以查到的

gyj@OCM> select * from dba_sys_privs where grantee='DBA';

 

GRANTEE                       PRIVILEGE                               ADM

---------------------------------------------------------------------- ---

DBA                            DROP ANY CUBE BUILD PROCESS              YES

DBA                           CREATE CUBE                             YES

DBA                           ALTER ANY CUBE DIMENSION                YES

DBA                           ALTER ANY MINING MODEL                   YES

 (中间结果省略)

…………………………..

202 rows selected.

 

C、普通用户的系统权限

 gyj@OCM> select * fromdba_sys_privs where grantee='GYJ';

 

GRANTEE                       PRIVILEGE                               ADM

------------------------------ -------------------------------------------

GYJ                           UNLIMITED TABLESPACE                    NO

 

D、 当前会话上的系统权限

gyj@OCM> select * from session_privs;

 

PRIVILEGE

----------------------------------------

ALTER SYSTEM

AUDIT SYSTEM

CREATE SESSION

ALTER SESSION

RESTRICTED SESSION

(中间结果省略)

……………………………

202 rows selected.

 

 (2)对象权限:允许用户访问和操纵特定的对象

   A、查对象权限    

gyj@OCM> select *  fromdba_tab_privs where grantee='GYJ';

 

no rows selected

 

B、查对象上列的权限

         gyj@OCM>select *  from dba_col_privs wheregrantee='GYJ';

 

no rows selected

 

  为什么没显示对象的权限和对象上列的权限呢,用户GYJ明明有对象的呀:

gyj@OCM> show user;

USER is "GYJ"

gyj@OCM> select table_name from tabs;

 

TABLE_NAME

------------------------------

T10

 

好,我登录到HR用户下给GYJ用户授对象权限

sys@OCM> conn hr/hr

Connected.

hr@OCM> grant select on employees togyj;

 

Grant succeeded.

 

hr@OCM> grant update (department_id) onemployees to gyj;

 

Grant succeeded.

 

再次查对象权限就有结果了,这下明白这个意思了吧,好!这个就不多说了。

 

hr@OCM> select *  from dba_tab_privs wheregrantee='GYJ';

 

GRANTEE                        OWNER                          TABLE_NAME                     GRANTOR                 PRIVILEGE                                 GRA HIE

------------------------------------------------------------ ------------------------------------------------------------ ---------------------------------------- --- ---

GYJ                            HR                             EMPLOYEES                      HR                      SELECT                                    NO  NO

 

hr@OCM> select *  from dba_col_privs where grantee='GYJ';

 

GRANTEE                        OWNER                          TABLE_NAME                     COLUMN_NAME             GRANTOR                         PRIVILEGE                                GRA

------------------------------ ------------------------------------------------------------ ------------------------------------------------------------ ---------------------------------------- ---

GYJ                            HR                             EMPLOYEES                      DEPARTMENT_ID           HR                              UPDATE                                   NO

 

 

2、with admin option与with grantoption区别

(级联的意思就是第一个用户的权限再授予其他用户,如果第一个用户被取消了该权限,那么通过其他通过第一个用户授予该权限的用户也被波及到,权限同时被取消,不级联的话其他用户就不会被波及。)

(1)    with admin option系统权限赋予级联,取消是不级联的,如下图所示:

                                               

with admin option的意思是被授予该权限的用户有权将某个权限(如create any table)授予其他用户或角色,取消是不级联的。

     如管理员DBA授予Jeff系统权限create session with admin option,然后Jeff又把createsession权限授予Emi,但DBA收回Jeff的create session权限时,Emi依然拥有create session的权限。但管理员DBA可以显式收回Emi的 create session权限,即直接revoke create session from Emi;

好!我们来做个测试:

A、 先建两用户Jeff和Emi

hr@OCM> conn / as sysdba

Connected.

sys@OCM> create user Jeff identified byJeff;

 

User created.

 

sys@OCM> create user Emi identified byEmi;

 

User created.

 

B、 管理员给Jeff系统权限createsession with admin option;

sys@OCM> grant create session to Jeff with admin option ;

 

Grant succeeded.

 

C、 Jeff又把create session权限授予Emi

sys@OCM> conn Jeff/Jeff

Connected.

jeff@OCM> grant create session to Emi;

 

Grant succeeded.

   

 D、最后用Emi登录

jeff@OCM> conn Emi/Emi

Connected.

 

Emi登录成功,说明用with adminoption权限级联授权成功。

 

E、  管理员收加Jeff的grant createsession 权限。

emi@OCM> conn / as sysdba

Connected.

sys@OCM> revoke  createsession from Jeff;

 

Revoke succeeded.

 

F、Jeff用户登录

sys@OCM> conn Jeff/Jeff

ERROR:

ORA-01045: user JEFF lacks CREATE SESSIONprivilege; logon denied

 

 

Warning: You are no longer connected toORACLE.

报错,说明权限回收成功

 

G、 最后我们看看用Emi用户登录

sys@OCM> conn Emi/Emi

Connected.

登录成功,说明权限回收不级联。

 

 

(2)with grant option对象权限赋予级联,取消也是级联的,如下图所示:

                                                                  

 不同的是管理员收回用withgrant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to Jeff,Jeff用户把此权限授予Emi,但管理员Bob收回Jeff的权限时,Emi的权限也会失效,但管理员不可以直接收回Emi的SELECT ON TABLE 权限。

 

好这个测试跟上面一样,很简单,我就不来做了。没明白的自己测试一把就明白了。

 

3、授予权限

    grant create any table to gyj;

    grant select any table to gyj; --gyj用户无法访问SYS用户中的DBA_系列视图、数据字典表

    grant update on t10 to gyj with grant option;

    grant update(id) on t10 to gyj with grant option;

 

 4、撤销权限

     revoke create any table from gyj;

     revoke update on t10 from gyj;

 

三、创建和管理角色

 1、角色的作用

   (1)简化权限管理:将一些权限授予给某个角色,然后将该角色授予给各个用户,而不是将同一组权限授予给多个用户。

 

   (2)动态地管理权限:修改了角色关联的权限,则授予该角色所有的用户都会立即自动获得修过的权限。

   (3)有选择性地应用权限:启用或禁用角色可以暂时打开或关闭权限。

 

 2、角色的特性

   (1)角色就像用户,可以将权限授予给角色,也可以撤销角色的权限。

 

   (2)角色就像系统权限,可以将其授予给用户或其它角色,也可以撤销用户或其它角色的角色。

 

   (3)角色可以由系统权限和对象权限组成。

 

   (4)可以针对授予某一角色的每个用户启用或禁用该角色。

 

   (5)可能需要口令才能启用角色。

 

   (6)角色不由任可用户拥有,角色也不属于任可方案。

 

 3、预定义角色

  (1)CONNECT:

CREATE SESSION

 

(2)RESOURCE:

CREATE CLUSTER/CREATE INDEXTYPE/CREATE OPERATOR/CREATEPROCEDURE/CREATE SEQUENCE/CREATE TABLE/CREATE TRIGGER/ CREATE TYPE

 

   (3)DBA:具有大多数系统权限和其它若干个角色。不要将其授予给管理员之外的人员

 

 4、创建角色,操作如下命令:(注意红色字体)

(1)先做一系列的查询

gyj@OCM> select * from dba_role_privs where grantee='Emi';

 

no rows selected

 

gyj@OCM> select * from role_sys_privs where role='ROLE_GYJ1';

 

no rows selected

 

gyj@OCM> select * from role_tab_privswhere role='ROLE_GYJ1';

 

no rows selected  select * from session_privs;

 

gyj@OCM> conn Emi/Emi

Connected.

emi@OCM> select * from session_privs;

 

PRIVILEGE

----------------------------------------

CREATE SESSION

 

(2)开始建角色及授权

gyj@OCM> create role role_gyj1;

 

Role created.

 

gyj@OCM> grant select any table torole_gyj1;

 

Grant succeeded.

 

gyj@OCM> grant role_gyj1 to Emi;

 

Grant succeeded.

 

emi@OCM> conn Emi/Emi

Connected.

emi@OCM> select * from gyj.t10;

 

       ID NAME

--------------------------------------------------------------------------------------------------------------

        1 gyj1

 

emi@OCM> select * from session_privs;

 

PRIVILEGE

----------------------------------------

CREATE SESSION

SELECT ANY TABLE

 

 

四、创建和管理概要文件

 1、创建概要文件

 CREATE PROFILE app_user LIMIT

  SESSIONS_PER_USER         UNLIMITED

  CPU_PER_SESSION           UNLIMITED

  CPU_PER_CALL               3000

  CONNECT_TIME               45

  LOGICAL_READS_PER_SESSION  DEFAULT

  LOGICAL_READS_PER_CALL     1000

  PRIVATE_SGA                15K

  COMPOSITE_LIMIT            5000000

  FAILED_LOGIN_ATTEMPTS 5

  PASSWORD_LIFE_TIME 60

  PASSWORD_REUSE_TIME 60

  PASSWORD_REUSE_MAX 5

  PASSWORD_LOCK_TIME 1/24

  PASSWORD_GRACE_TIME 10;

 

 

2、口令管理

 (1)用户的锁定

   FAILED_LOGIN_ATTEMPTS n :当用户登录N次后仍没有输入正确的密码,用户被自动的锁定。

   PASSWORD_LOCK_TIME n :当达到上面参数的限制,用户被锁定后,用户被锁定的天数。

   createprofile pro2 limit failed_login_attempts 3 PASSWORD_LOCK_TIME 1;

   select *from dba_profiles where PROFILE='PRO2';

 

 (2)口令的有效期

   PASSWORD_LIFE_TIME n :设置口令的有效期,单位是天数。

    PASSWORD_GRACE_TIMEn :宽限期。

    口令无效后,用户应该即时的更换口令。在指定的宽限期内,如果用户仍没有更换口令,用户将无法登录。在宽限期内每登录一次,都会收到一条警告信息。

 

 (3)历史口令限制

    PASSWORD_REUSE_TIME:可以重复使用以前用过的口令前的天数。也就是当设置新口令后,在N天内,不能使用以前用过的老口令再

 

 (4)新口令。

    PASSWORD_REUSE_MAX某一口令最多被使用的次数。

         如果将PASSWORD_REUSE_MAX设置为3,在更改用户口令时,某一串符号被三次设置为口令后,这串符号将不能再被设为口令。

 

3、资源管理

 (1)启用资源限制

show parameterresource_limit

 

 (2)会话级资源限制,主要针对会话,在配置文件中,有下面几个会话级资源限制参数:

     CPU_PER_SESSION :会话所能使用的CPU时间总量。单位是百分之一秒。

     SESSIONS_PER_USER :同一用户所能的开的最多会话数

     CONNECT_TIME :以分钟计算的会话持续连接时间

     IDLE_TIME :以分钟计算的空闲时间

     LOGICAL_READS_PER_SESSION :会话所能读取的数据块数。

     PRIVATE_SGA :在共享服务器模式下,每个用户连接所能使用的SGA中的空间,单位是字节。

          如果开启了资源限制的会话,超出了上面这些限制,将会报出ORA-02391错误,ORACLE将同时断开会话的连接。

 

 (3)调用级资源限制

     调用级别的资源限制,主要针对每条命令的执行。每条命令的执行都是一次调用,调用级资源限制决定了每次调用所能使用的CPU时间和I/O数。调用级资源限制参数有上面两个:

     CPU_PER_CALL :每次调用所能占用的CPU时间,单位百分之一秒

     LOGICAL_READS_PER_CALL :每次调用所能读取的数据块数

 

  4、查概要文件的信息

  select * from dba_profiles;


作者:guoyJoe 发表于2013-3-4 23:23:41 原文链接
阅读:48 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>