zoukankan      html  css  js  c++  java
  • Oracle如何管理权限和角色

    =========================
    系统权限
    =========================
    指对数据库管理的操作以及对数据对象的操作[创建、删除、修改]

    如何查询有哪些系统权限?
    select * from system_privilege_map order by name;
    创建用户?
    create user tangtao identified by tangtao;
    授予权限[重要]?
    grant create session to tangtao with admin option; --登录权限
    grant create table to tangtao with admin option; --创建表权限
    grant create view to tangtao with admin option; --创建视图权限
    说明:
    [with admin option]: 可以让用户tangtao继续把得到的两个权限继续向别的用户转发
    回收系统权限[重要]?
    回收系统权限是dba完成的
    如果其它用户会搜系统权限,要求该用户必须具有响应系统权限及转授系统权限的选项[with admin option]
    --系统权限级联回收问题?
    system------------->ken--------------->tom[不级联回收]
    回收系统权限:
    revoke create view from tangtao;


    =========================
    对象权限
    =========================
    对数据对象的操作[select, update, delete, insert]

    指访问其它方案对象的权利,用户可以直接访问自己方案的对象
    但是如果访问别的方案的对象,则必须具有对象的权限

    查看所有的对象权限[dba用户可以查看]?
    select distinct privilege from dba_tab_privs;
    比如smith用户要访问scott.emp表?
    grant select on scott.emp to tangtao;
    grant insert on scott.emp to tangtao;
    grant update on scott.emp to tangtao;
    grant delete on scott.emp to tangtao;
    或者 一句话搞定---
    grant all on scott.emp to tangtao;

    授予对象权限[重要]?
    grant 对象权限 on 方案.数据对象 to 用户名[,角色] [with grant option];
    grant all on 方案.数据对象 to 用户名[,角色] [with grant option];
    [with grant option] : 只能授予用户,不能授予角色

    授予alter权限?
    如果black用户要修改scott.emp表的结构,则必须授予alter对象权限
    grant alter on scott.emp to black;

    授予execute权限?
    如果用户想要执行其它方案的包/过程/函数,则必须有execute权限

    授予index权限?
    如果用户想要其它方案的表建立索引
    让tangtao用户在scott.emp上建立索引。则scott则必须授予tangtao用户index权限
    SQL> conn scott/tiger
    SQL> grant index on scott.emp to tangtao; --授权
    SQL>revoke index on scott.emp from tangtao; --回收

    回收对象权限?
    --对象权限级联回收问题?
    system------------->ken--------------->tom[级联回收]
    回收对象权限:
    revoke 对象权限 on 方案.数据对象 from 用户名[,角色];


    角色:
    角色是一组权限的集合,目的是为了简化对权限的管理,从而达到简单对用户的管理
    =========================
    预定义角色
    =========================
    connect
    resource
    dba[dba角色不具备(启动和关闭数据库)]

    查看角色?
    SQL> conn system/manager;
    SQL> select * from dba_roles;

    查看角色具有[系统]权限?
    select * from role_sys_privs where role='角色名';
    select * from role_sys_privs where role='RESOURCE';

    查看角色具有[对象]权限?
    select * from dba_tab_privs where grantee='角色名';
    select * from dba_tab_privs where grantee='RESOURCE';

    如何查看某个用户具有什么角色?
    select * from dba_role_privs where grantee='用户名';
    select * from dba_role_privs where grantee='SCOTT';

    授予角色?
    grant 角色名 to 用户名;
    grant RESOURCE to tangtao;

    =========================
    自定义角色
    =========================
    创建角色?--[具有create role权限的用户建立]
    如果角色是[公用的角色],可以采用不验证的方式建立角色
    create role 角色名 not identified;

    [数据库验证]
    采用这样的方式时,角色名、口令存放在数据库中
    当激活该角色时,必须提供口令,在建立这种角色时,需要为其提供口令
    create role 角色名 identified by 口令;


    授予角色权限?
    grant 权限 to 角色名;
    SQL>create role myrole not identified;
    SQL> grant create session to myrole;
    SQL> grant select on scott.emp to myrole;
    SQL> grant insert on scott.emp to myrole;
    SQL> grant update on scott.emp to myrole;
    或者
    grant select,insert,update,delete on scott.emp to myrole;

    使用角色?
    grant 角色名 to 用户名[with admin option]
    SQL> grant myrole to tangtao;

    回收角色?
    revoke 角色名 from 用户名;
    SQL> revoke myrole from tangtao;

    删除角色?
    drop role 角色名;
    SQL> drop role myrole;


    =========================
    精细访问控制
    =========================
    是指用户可以使用函数、策略实现更加细微的安全访问控制。
    如果使用精细访问控制,则当在客户端发出sql语句(select, insert, update, delete)时
    oracle会自动在sql语句后追加谓词(where 子句),并执行新的sql语句
    通过这样的控制,可以使得不同的数据库用户在访问相同表时,返回不同的数据信息

  • 相关阅读:
    聚类算法学习-kmeans,kmedoids,GMM
    hdu
    高仿精仿微信应用ios源码下载
    UVA 116 Unidirectional TSP 经典dp题
    [置顶] 动态规划之切割钢条
    poj
    求解printf函数?
    实现多文件上传在iOS开发中
    开源DirectShow分析器和解码器: LAV Filter
    <Win32_20>纯c语言版的打飞机游戏出炉了^_^
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2746700.html
Copyright © 2011-2022 走看看