Oracle安全管理

安全管理

oracle的数据安全控制机制包括以下6个方面:

  • 用户管理:为了保证只有合法身份的用户才能访问数据库,Oracle提供了3种用户机制,即数据库身份认证机制,即数据库身份认证、外部身份认证和全局身份认证。只有通过认证的用户才能访问数据库。
  • 权限管理:用户登陆数据库后,只能进行其权限范围内的操作。通过给用户授权或回收用户权限,可以达到控制用户对数据库的操作的目的。
  • 角色管理:通过角色方便地实现用户权限的授予与回收。
  • 表空间设置和配额:通过设置用户的默认表空间、临时表空间和在表空间上的使用配额,可以有效地控制用户对数据库存储空间的使用。
  • 用户资源限制:通过概要文件,限制用户对数据库资源的使用。
  • 数据库审计:监视和记录用户在数据库中的活动。
1、用户管理
  • 创建用户

    1. 基本语法

      CREATE USER user_name IDENTIFIED
      [BY password | EXTERNALLY | GLOBALLY AS 'external_name']
      [DEFAULT TABLESPACE tablesapce_name]
      [TEMPORARY TABLESPACE temp_tabelsapce_name]
      [QUOTA n K|M|UNLIMITED ON tablesapce_name]
      [PROFILE profile_name]
      [PASSWORD EXPIRE]
      [ACCOUNT LOCK|UNLOCK]
      
    2. 参数说明

      user_name:用于设置新建的用户名,在数据库中用户名必须是唯一的。

      IDENTIFIED:用于指明用户身份认证方式。

      BY passwd:用于设置用户的数据库身份认证,其中password为用户口令。

      EXTERNALLY

      GLOBALLY AS 'external_name'

      DEFAULT TABLESPACE tablesapce_name

      TEMPORARY TABLESPACE temp_tabelsapce_name

      PROFILE profile_name:用于为用户指定概要文件,默认值为DEFAULT,采用系统默认的概要文件。

      PASSWORD EXPIFX:用于设置用户口令的初始状态为国企,用户在首次登陆数据库时必须修改口令。

      ACCOUNT LOCK:用于设置用户初始状态为锁定,默认为不锁定。

      ACCOUNT UNLOCK:用于设置用户初始状态为不锁定或者解除用户的锁定状态。

    3. 实例

      --创建一个用户user3,口令为user3,默认表空间为USERS。
      CREATE USER user1 IDENTIFIED BY user1
      DEFAULT TABLESPACE USERS;
      
      --创建一个用户user4,口令为user4,默认表空间为USERS,在该表空间的配额为10MB。口令设置为过期状态,即首次连接数据库时需要修改口令。概要文件为example_profile。
      CREATE USER user4 IDETIFIED BY user4
      DEFAULT TABLESPACE USERS 
      PROFILE example_profile
      PASSWORD EXPIRE;
      
  • 修改用户

    1. 基本语法

      ALTER USER user_name IDENTIFIED
      [BY password | EXTERNALLY | GLOBALLY AS 'external_name']
      [DEFAULT TABLESPACE tablesapce_name]
      [TEMPORARY TABLESPACE temp_tabelsapce_name]
      [QUOTA n K|M|UNLIMITED ON tablesapce_name]
      [PROFILE profile_name]
      [PASSWORD EXPIFX]
      [ACCOUNT LOCK|UNLOCK]
      
    2. 参数说明

  • 删除用户

    DROP USER username [CASCADE]
    
2、权限管理

用户权限分类

  • 系统权限:系统权限是指在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。例如:CREATE SESSION权限、CREATE ANY TABLE权限
  • 对象权限:对象权限是指对某个特定的数据库对象执行某种操作的权限。例如:对特定表的插入、删除、修改、查询权限。

将权限授予用户有两种办法:

  • 直接授权:利用GRANT命令直接为用户授权。
  • 间接授权:先将权限授予角色,然后再将角色授予用户。
  • 系统权限

    1. 系统权限的授权

      只有DBA才应当拥有ALTER DATABASE系统权限;

      应用程序开发者一般只需要拥有CREATE TABLE,CREATE VIEW和CREATE INDEX等系统权限;

      普通用户一般只需要有CREATE SESSION的权限;

      只有授权时带有WITH ADMIN OPTION子句时,用户才可以将获得的系统权限再授予其它用户,即系统权限的传递性。

      基本格式:

      GRANT sys_priv_list TO user_list |role_list|PUBLIC [WITH ADMIN OPTION];

      其中:

      • sys_priv_list表示用户权限列表,以逗号分割;
      • user_list表示用户列表,以逗号分割;
      • role_list表示角色列表,以逗号分割;
      • WITH ADMIN OPTION表示允许系统权限接受者再把此权限授予其它用户。

      范例:

      --为public组用户收取CREATE SESSION权限
      GRANT CREATE SESSION TO PUBLIC;
      --为用户user2授予CREATE SESSION,CREATE TABLE,CREATE VIEW系统权限。user2获得权限后,为用户user3授予CREATE TABLE 的权限
      conn system/manager;
      GRANT CREATE SESSION,CREATE TABLE,CREATE VIEW TO user2 WITH ADMIN OPTION;
      conn user2/user2;
      GRANT CREATE TABLE TO user3;
      
    2. 系统权限的回收

      基本语法:

      REVOKE sys_priv_list FROM user_list |role_list | PUBLIUC;

      • 多个管理员授予用户同一个系统权限后,其中一个管理员后手其授予该用户的系统权限时,该用户将不再拥有相应的系统权限。
      • 为了回收用户系统权限的传递性(授权时使用了WITH ADMIN OPTION子句),必须先回收其系统权限,然后再重新授予其相应的系统权限。
      • 如果一个用户获得的系统权限具有传递性(授权时使用了WITH ADMIN OPTION子句),并且给其他用户授权,那么该用户系统权限被回收后,洽谈瀛湖的系统权限并不受影响。
  • 对象权限

    1. 对象权限的分类

      对象权限适合对象功能说明
      SELECT表、视图、序列查询收据操作
      UPDATE表、视图更新收据操作
      DELETE表、视图删除收据操作
      INSERT表、视图插入收据操作
      REFERENCES在其它表中创建外键时可以引用该表
      EXECUTE存储过程、函数、包执行PL/SQL存储过程、函数和包
      READ目录读取目录
      ALTER表、序列修改表或者序列结构
      INDEX为表创建索引
      ALL表、视图、序列某个对象所有对象权限操作集合
    2. 对象权限的授权

      基本语法:

      GRANT obj_priv_list|ALL ON [schema.]object TO user_list|role_list [WITH GRANT OPTION];

      范例:

      --将scott模式下的emp表的SELECT,INSERT,UPDATE,DELETE权限授予user2用户。user2用户再将emp表的SELECT,UODATE权限授予user3用户。
      conn system/manager;
      GRANT SELECT,INSERT,UPDATE,DELETE ON scott.emp TO user2 WITH ADMIN OPTION;
      conn user2/user2;
      GRANT SELECT.UPDATE ON scott.emp TO user3;
      
    3. 对象权限的回收

      REVOKE obj_priv_list|ALL ON [schema.]object TO user_list|role_list;

3、角色管理
  • 自定义角色

    1. 创建角色

      CREATE ROLE role_name [NOT IDETIFIED][IDENTIFIED BY PASSWOD];

      • role_name:自定义角色的名称
      • NOT IDENTIFIED:用于指定该角色有数据库授权,角色生效时不需要口令。
      • IDENTIFIED BY PASSWORD:用于设置角色生效时的认证口令。
    2. 角色权限的授予和回收

      角色权限的授予和回收于用户权限的授予和回收类似,但是要注意,给角色授权时,一个角色可以授权给另一个角色,但是不能授权给其本身,不能产生循环授权。

    3. 修改角色

      ALTER ROLE role_name [NOT IDETIFIED][IDENTIFIED BY PASSWOD];

    4. 角色的生效于失效

      SET ROLE [role_name [IDENTIFIED BY password]]|[ALL [EXCEPT role_name]] |[NONE]

    5. 删除角色

      DROP ROLE role_name;

  • 利用角色进行权限管理

    1. 给用户或角色授予角色

      GRANT role_list TO user_list | role_list;

    2. 从用户或角色回收角色

      REVOKE role_list FROM user_list | role_list;

4、概要文件管理
  • 创建概要文件

    CREATE PROFILE profile_name LIMIT resource_paramaters | password_parameters;

    • profile_name:用于指定要创建的概要文件的名称

    • resource_parameters:用于设置资源的限制参数,表达形式为:

      resource_parameters_name  integer|UNLIMITED|DEFAULT
      
    • password_parameters:用于设置口令参数,表达形式为:

      password_parameters_name  integer|UNLIMITED|DEFAULT
      

    范例:

    --创建一个名为res_profile的概要文件,要求每个用户最多可以创建4个并发会话;每个会话持续时间最长为60分钟;如果会话在连续20分钟内空闲,则接受会话;每个会话的私有SQL区为100KB;每个SQL语句占用CPU的时间总量不超过10秒。
    CREATE PROFILE res_profile LIMIT
    SESSIONS_PER_USER 4	CONNECT_TIME 60 IDLE_TIME 20 PRIVATE_SGA 100K CPU_PER_CALL 1000;
    
    --创建一个名为pwd_profile的概要文件,如果用户连续4次登陆失败,则锁定该账户,10天后该账户自动解封。
    CREATE PROFILE pwd_profile LIMIT FAILED_LOGIN_ATTEMPS 4 PASSWORD_LOCK_TIME 10;
    
  • 将概要文件分配给用户

    CREATE USER user5 IDENTIFIED BY user5 PROFILE res_profile;
    ALTER USER user5 PROFILE pwd_pofile;
    
  • 修改概要文件

  • 删除概要文件

    DROP PROFILE res_profile CASCADE;
    
  • 查询概要文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值