a6266318 发表于 2018-9-26 08:22:13

oracle用户的角色与权限管理

  oracle用户的角色与权限管理
  一、权限分类:
  系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
  实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。
  二、系统权限管理:
  1、系统权限分类(通过角色来进行管理):
  DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
  RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
  CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
  对于普通用户:授予connect, resource权限。
  1.1,具有connect权限的用户,只能够登陆;
  1.2,具有resource权限的用户可以:
  A:create session
  B:create cluster
  C:create indextype
  D:create operator
  E:create procedure
  F:create sequence
  G:create table
  H:create trigger
  I:create type
  对于DBA管理用户:授予connect,resource, dba权限。
  系统权限授权命令:【系统权限只能由DBA用户授出:sys,system(最开始只能是这两个用户)】
  授权命令:grant connect ,resource,dba to USER1
  [普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收]
  查看角色所拥有的权限:
  select * fromrole_sys_privs;
  查询结果:ROLE:角色名; PRIVILEGE:角色拥有的权限;ADMIN_OPTION:角色被授权时,是否带有with ADMIN option。
  系统权限传递:grant connect,resource to USER1 with admin option;
  with admin option 用于系统权限授权,with grant option 用于对象授权。
  给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限,但管理员可以显式收回B create session的权限,即直接revoke create session from B.
  而with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to A,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。
  查看用户所属于的角色
  select * from dba_sys_privs;
  查看用户拥有的权限
  select * from dba_role_privs;
  删除用户:drop user USER1 cascade; //加上cascade则将用户连同其创建的实体全部删除
  *:当前正连接的用户不得删除
  系统权限回收:系统权限只能由DBA用户回收
  Revoke connect,resource from USER1;
  2、实体权限分类:

  select , update , insert ,>  execute //执行存储过程权限;
  2.1,将表TABLE上的select,update,insert权限给TEST用户;
  grant select , update , insert on TABLE to TEST;
  查看对表所拥有的权限;
  select * from dba_tab_privs where TABLE_NAME='TABLE'; //TABLE_NAME=‘必须大写’
  授予用户所有的权限;
  gramt all on TABLE to TEST;
  被赋予all的权限后,所拥有的操作

  PRIVILEGE:>  将表的操作权授予全体用户:
  grant all on TABLE to public; //public 表示是所有的用户,这里的all权限不包括drop;
  [实体权限数据字典]:
  select owner,table_name from all_tables; //用户可以查询的表
  select table_name from user_tables; //用户创建的表
  select grantor,table_schema,table_name,privilege from all_tab_privs; //获取可以存取的表(被授权的)
  select grantoe,owner,table_name,privilege from user_tab_privs; //授出权限的表(授出的权限)
  实体权限传递(with grant option)
  grant select,update on product to USER1 with grant option; //USER1 得到权限,并可以传递
  实体权限收回:
  Revoke select,update on product from USER1; //传递的权限将全部丢失
  3、用户profile文件
  Oracle系统中的profile 可以用来对用户所能使用的数据库资源进行限制,使用Create Profile 命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该prifile分配给用户,则该用户所能使用的数据库资源都在该prifile的限制之内。
  3.1、创建profile必须要有CREATE PROFILE 的系统权限。
  创建用户的Profile 文件
  create profile STUDENT limit //STUDENT 为资源文件名;
  failed_login_attempts 3 //指定锁定用户的登录失败次数;
  password_lock_time 5 //指定用户被锁定天数;
  password_life_time 30 //指定口令可用天数;
  select * from dba_profiles;
  创建用户:
  create user USER1
  identified by PASSWORD //如果密码是数字,请用双引号括起来
  default tablespace TABLESPACE
  temporary tablespace TABLESPACE
  profile PROFILE
  quota INTEGER/UNLIMITED on TABLESPACE;
  查询用户缺省表空间、临时表空间
  select username,default_tablespace,temporary_tablespace from dba_users;
  查询系统资源文件名:
  select * from dba_profiles;
  资源文件类似表,一旦创建就会保存在数据库中
  select username,profile,default_tablespace,temporary_tablespace from dba_users;
  create profile COMMON limit
  failed_login_attempts 5
  idle_time 5;
  alter user USER1 profile COMMON;
  3.2、修改用户:
  alter user USER1
  identified PASSWORD
  temporary tablespace TABLESPACE
  profile PROFILE
  quota INTEGER/UNLIMITED on TABLESPACE;
  A、修改口令字

  alter user USER1>  B、修改用户缺省空间
  alter user USER1 default tablespace USER1;
  C、修改用户临时表空间
  alter user USER1 temporary tablespace TEMP_DATA;
  D、强制用户修改口令字
  alter user USER1 password EXPIRE;
  E、将用户加/解锁
  alter user USER1 acount lock; //加锁
  alter user USER1 acount unlock; //解锁
  3.3、监视用户
  A、查询用户会话信息
  select username,sid,serial#,machine from v$session;
  B、删除用户会话信息
  alter system kill session 'sid,serial#';
  C、查询用户
  select user_name,sql_text from v$open_cursor;
  3.4、查询权限分配情况
  ROLE_SYS_PRIVS : 角色拥有的系统权限
  ROLE_TAB_PRIVS : 角色拥有的对象权限
  USER_TAB_PRIVS_MADE : 查询授出去的对象权限
  USER_TAB_PRIVS_RECD : 用户拥有的对象权限
  USER_COL_PRIVS_MADE : 用户分配出去的列的对象权限
  USER_COL_PRIVS_RECD : 用户拥有的关于列的对象权限
  DBA_SYS_PRIVS : 数据库中用户和角色拥有的系统权限
  DBA_TAB_PRIVS : 数据库中所有的对象权限
  DBA_COL_PRIVS : 数据库中所有的列对象权限
  DBA_ROLE_PRIVS : 数据库中所有的用户和角色拥有的角色
  三、管理角色
  1、建角色
  create role ROLE1;
  2、授权给角色
  grant create any table,create procedure to ROLE1;
  3、授予角色给用户
  grant ROLE1 to USER1;
  4、查看角色所包含的权限
  select * from role_sys_privs;
  5、创建带有口令的角色(在生效带有口令的角色时必须提供口令)

  create role ROLE1>  6、修改角色是否需要口令

  alter role ROLE1 not>
  alter role ROLE1>  7、设置当前用户要生效的角色
  (注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来说是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有 直接赋给用户的权限和用户默认角色中的权限赋给用户。)
  set role ROLE1; //使ROLE1生效
  set role ROLE1,ROLE2 ; //使ROLE1,ROLE2 生效

  set role ROLE1>  set role all; //使用该用户的所有角色生效
  set role none; //设置所有角色失效
  set role all except ROLE1; //除ROLE1外的该用户的所有其他角色生效
  select * from SESSION_ROLES; //查看当前用户的生效的角色
  8、修改指定用户,设置其默认角色
  alter user USER1 default role ROLE1;
  alter user USER1 default role all except ROLE1;
  9、删除角色
  drop role ROLE1;
  角色删除后,原来拥有该角色的用户就不再拥有该角色了,相应的权限也就没有了;
  说明:A、无法使用 with grant option 为角色授予对象权限
  B、可以使用 with admin option 为角色授予系统权限,取消时不是级联

页: [1]
查看完整版本: oracle用户的角色与权限管理