zoukankan      html  css  js  c++  java
  • 一次delete基表回收DBA权限的危险性操作

    1.0事件还原:
    测试库某个对象,使用具有DBA角色用户导出,生产环境普通用户无法导入数据,因此需要回收测试库dba角色,revoke无法回收

    2.0操作流程

    回收角色报错

    测试环境测试,delete删除基表是否回收角色

    实际测试库进行操作

    3.0实际操作
    3,1回收角色报错信息:
    revoke dba from xxx;
    ORA-08103: object no longer exists;对象不存在;

    --查询对象名称:
    select * from dba_users where username='xxx';
    发现用户名称,状态Open;

    --查询用户拥有的角色:---登陆查询的用户
    select * from user_role_privs;


    3,2测试 delete删除记录
    delete删除DBA角色;
    ---创建测试用户:
    create user a_b identified by a_b;
    grant connect to a_b;
    查询用户具有的角色;
    SQL> select * from user_role_privs;
    USERNAME             GRANTED_ROLE         
    ------------------------------ -----------------------
    A_B                            CONNECT                    

    --查询用户ID;
    select user#,name from user$ where name='A_B';
      99 A_B
    --查询用户低层权限;
    select grantee#,privilege#,option$,sequence# from sysauth$,user$ where user$.user#=
    grantee# and user$.user#=99;    xx号;
            99          2  ( CONNECT    )   1519 

    授予第二个角色,再次查询视图记录grant resource to a_b;

            99        -15                  1520
            99          2                  1519
            99          3                  1521
    授予第三个DBA角色,再次查询视图记录
    grant dba to a_b;
    --查询;
            99        -15                  1520
            99          2                  1519
            99          3                  1521
            99          4                  1523
    --以上,查询验证了基表的相关记录

    --如下,进行delete测试

    删除:UID查询,DBA,经测试PRIVILEGE为:4;
    delete from sysauth$ where grantee#=  UID and privilege#= xx;
    commit;            ---此时发现失误可以回滚:rollback;
    --从底层删除角色;
    --commit后,如果被回收的用户需要exit,重新登陆才生效;
    --如何查询是否验证,回收DBA角色是否生效;
    使用视图:select * from user_role_privs;  查询角色
       connect / resource
    使用视图:select * from user_sys_privs; 查询用户拥有的系统权限;
    --需要关注的是否有:UNLIMITED TABLESPACE (无限使用表空间存储)
    --如果没有,需要重新授予:
    grant unlimited tablespace to xxx;

    验证!!!
    使用视图:select * from session_privs;  
        !!!查询的当前会话拥有的权限:如果有DBA,200多,此时回收后查询正常10多项;

    -----------------------------------------------------------------题外一:如果用户没有unlimited tablespace--------------------------------------
    (指定给予了限额除外:alter user abc quota 38m on users)

    SQL> create table t1(id int,name varchar2(20));
    SQL> insert into t1 values(1,'aa');
    insert into t1 values(1,'aa')
                *
    ERROR at line 1:
    ORA-01950: no privileges on tablespace 'TS_A'
    SQL> show user;
    USER is "SCOTT"
    SQL> select * from user_sys_privs;
    ------------------------------ ---------------------------------------- ---
    SCOTT                          CREATE VIEW                              NO

    SQL> select * from user_role_privs;
    ------------------------------ ------------------------------ --- --- ---
    SCOTT                          CONNECT                        NO  YES NO
    SCOTT                          RESOURCE                       NO  YES NO

    SQL> conn / as sysdba
    SQL> grant unlimited tablespace to scott;
    SQL> conn scott/tiger
    SQL> select * from user_sys_privs;
    USERNAME                       PRIVILEGE                                ADM
    ------------------------------ ---------------------------------------- ---
    SCOTT                          CREATE VIEW                              NO
    SCOTT                          UNLIMITED TABLESPACE                     NO

    *特点一
    ADM~代表是否允许联级授予:如果需要的话:
    grant unlimited tablespace to scott with admin option;
    *特点二、unlimited tablespace这个权限是在授予resource角色附带的;
    此次情况是授予了DBA角色,然后回收,附带也把这个权限回收了;

    3.3测试库进行delete操作

    delete from sysauth$ where grantee#=233 and privilege#=4;

    commit;

  • 相关阅读:
    85. Maximal Rectangle
    120. Triangle
    72. Edit Distance
    39. Combination Sum
    44. Wildcard Matching
    138. Copy List with Random Pointer
    91. Decode Ways
    142. Linked List Cycle II
    异或的性质及应用
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/lvcha001/p/7663532.html
Copyright © 2011-2022 走看看