oracle 权限 策略,Oracle学习笔记(14)权限管理(

权限管理

1、Oracle两类型的用户权限:

System 使用户在数据库中完成部分行为

Object 使用户接触和操作一个特定的数据对象。只有owner(Object Schema才能授权)

2、系统权限(100多种)

其中,create table和create any table 的区别

any关键字指示用户在权限中可以操作任何schema. grant授权,revoke 取消权限

窗口1:

sql>create user testuser1

identified by kxf_001 default tablespace users

quota 10m on users;

sql>grant create table to testuser1; //此权限只能给到自己创建一个表,而不能操作多张表

窗口2:

sql>conn testuser1/kxf_001; //无法连接到Oracle

窗口1:

sql>grant create session to testuser1; //授权create session

窗口2:

sql>conn testuser1/kxf_001

sql>create table test1(id int) tablespace users; //创建表

sql>create table kong.tt1(id int) tablespace users; //权限不足

窗口1:

sql>grant create any table to testuser1; //将“可以创建任何表”的权限给testuser1

窗口2:

sql>create table kong.tt1(id int) tablespace users; //创建成功

窗口1:

sql>revoke create any table from testuser1; //撤销testuser1的权限create any table

INDEX:CREATE ANY INDEX \ ALTER ANY INDEX \ DROP ANY INDEX

TABLE:CREATE TABLE \ CREATE ANY TABLE\ALTER ANY TABLE\DROP ANY TABLE\ SELECT ANY TABLE\ UPDATE ANY TABLE \ DELETE ANY TABLE

SESSION:CREATE SESSION\ ALTER SESSION\ RESTRICTED SESSION

TABLESPACE:CREATE TABLESPACE\ ALTER TABLESPACE\ DROP TABLESPACE \ UNLIMITED TABLESPACE(无限空间资源的使用)

【注意】没有create index权限。如:

grant system_privs,[....] to [user/role/public],[....] with admin option

其中,with admin option 可以把权限授予第三个人

sql>grant create index to testuser1; //缺少或无效权限

sql>truncate table kong.sales; sql>grant truncate table to testuser1; //授予testuser1truncate table权限。

sql>grant truncate any table to testuser1;

sql>grant drop any table to testuser1;

sql>grant create table,create session,create view to kong,testuser1; //授予多个用户多个权限。

sql>grant create table to public; //授权create table给系统中所有用户

sql>create role testrole1 //创建角色1

sql>create role testrole2; //创建角色2

sql>grant create table to testrole2; //为角色2添加create table权限。

sql>create user testuser2 identified by kxf_001;

sql>conn testuser1/xkf_001;

sql>grant create table to testuser2; //权限不足,只允许testuser2创建表

窗口2:

sql>conn sys/admin1 as sysdba

sql>grant create table to testuser1 with admin option; //授权create table给testuser1带上管理权限。

窗口1:

sql>grant create table to testuser2; //授权成功

3、系统权限(System Privileges)

SYSDBA\SYSOPER 权限集合(特殊):实现database的管理和操作

SYSOPER:startup、shutdown、alter database open|mount、alter database backup controlfile to(数据库完整修复) 、recover database、alter database archivelog

SYSDBA:sysoper privileges with admin option、create database、alter database begin/end backup、restricted session、recover database until

注意:sysoper不能建立数据库,不能完成数据库的部分修复,没有受限(restricted)模式的权限,不具有备份权限。而sysdba具有sysoper所有的权限,同时带上了admin选项。

sql>grant sysdba to kong; //为kong用户授予管理员sysdba的权限

sql>select * from v$pwfile_users; //sysdba有权利查数据字典

sql>grant sysoper to kong with admin option //为kong授予sysoper权限并带上admin选项,其实kong已经是sysdba,而sysdba具有sysoper的所有权限带上了admin选项。

O7_DICTIONARY_ACCESSIBILITY 参数:数据字典表能不能存储或被改变。

sql>grant select any table to testuser1;

sql>select * from sys.aud$; //查询系统审计表

sql>show parameter O7 //O7_DICTIONARY_ACCESSIBILITY value=false

sql>show user //testuser1

sql>select * from sys.aud$; //审计记录表(不能)

sql>alter system set o7_dictionary_accessibility=true ;//设计对任意表操作的用户能不能访问到系统表的资料,一般来说系统默认将这个参数值设置为false,即系统审计记录表不对普通用户开放。

sql>startup force //强制重启,让数据库打开

窗口2:

sql>conn testuser1/kxf_001; //已经连接

sql>select * from sys.aud$; //审计记录表(可以访问)

窗口1:

sql>revoke create table,create any table from testuser1;//系统权限未授予testuser1

sql>show user //"sys"

sql>revoke create table from testuser1; //撤销create table权限成功

sql>revoke create any table from testuser1; //系统权限create any table未授予testuser1;

sql>grant create session to testuser2; //授予会话权限给testuser2

sql>alter user testuser2 quota 10m on users; //在表空间users上给testuser2分配10m限额资源。

sql>conn testuser2/kxf_001

sql>create table tt1(id int) tablespace users; //此时,testuser2仍然还有创建表的权限,在撤销基于admin传递出的权限时,它是不会级联的。

注意:对象权限带上admin option选项授予出去时是会级联的。

4、对象权限(Object Privileges)

ALTER(Table\Sequence\Procedure)、DELETE(Table\View)、EXECUTE(Procedure)、INDEX(Table\View)、INSERT(Table\View)、PEFERENCES(Table)、SELECT(Table\View\Sequence)、UPDATE(Table\View)

grant [object_privs(column,...)],[....]on object_name to user/role/public,....with grant option

其中with grant option可以将权限授予第三个人。默认owner可以授权第三个人。

GRANT EXECUTE ON dbms_output TO jeff; //授予执行某个存储过程的权限

GRANT UPDATE ON emi.customers TO jeff WITH GRANT OPTION;

窗口1:

sql>show user //"SYS"

sql>select * from kong.authors;

窗口2:

sql>conn sys/admin1 as sysdba

sql>set wrap off

sql>set linesize 800

sql>select * from kong.authors;

sql>grant select,update on kong.authors to testuser1; //默认不可以将权限授予第三个人

sql>conn kong/kxf_001

sql>grant select,update on kong.authors to testuser1; //授权成功

sql>grant select,update on kong.authors to sys with grant option; //sys也可以享有grant授予权限。

sql>conn sys/admin1 as sysdba

sql>grant select,update on kong.authors to testuser1; //授权成功

sql>conn kong/kxf_001

sql>grant select on authors(au_id,au_lname) to testuser1; //授予testuser1查询authors,缺少无效权限

取消权限:

REVOKE SELECT on emi.orders FROM jeff;

sql>revoke select on authors from testuser1;

注意:with grant option 取消权限应该是级联的。

sql>grant select on authors to testuser1 with grant option

sql>conn testuser1/kxf_001

sql>select * from kong.authors;

sql>grant select on kong.authors to testuser2; //testuser1也可以将这个权限授出给testuser2

sql>conn testuser2/kxf_001

sql>select * from kong.authors; //testuser2也可以使用这个权限

sql>conn kong/kxf_001

sql>revoke select on authors from testuser1; //取消testuser1的select权限。

sql>conn kong/kxf_001

sql>revoke select on authors from sys;// 取消sys的select 权限

sql>conn testuser2/kxf_001

sql>select * from kong.authors; //此时,无法访问testuser2的select 权限。

5、获取权限信息:

DBA_SYS_PRIVS dba系统权限

SESSION_PRIVS 会话权限

DBA_TAB_PRIVS

DBA_COL_PRIVS

sql>conn sys/admin1 as sysdba

sql>select * from dba_sys_privs ;//dba授了哪些权限给哪些人

sql>conn testuser2/kxf_001

sql>select * from session_privs; //当前开的session里用户拥有什么权限

sql>conn kong/kxf_001

sql>select * from user_tab_privs; //授予了哪些对象权限给哪些用户

sql>conn sys/admin1 as sysdba

sql>select * from dba_col_privs; // 授予了哪些栏位权限给哪些用户

6、审计Auditing

审计规则:审计用户、语句或对象;语句执行是否成功;

审计策略:默认审计(实例启动或关闭、Administrator权限)、Database审计(由DBA进行enable,不可以基于column值的记录)、Value-based基于值或应用程序审计:使用触发器。

Database审计(默认关闭):

启动database审计 >设定Audit option选项(表 AUDIT TABLE\触发器 AUDIT create any trigger\select选项 AUDIT SELECT ON emi.orders\进一步审计给予栏位的值则使用DBMS_FGA package) >一旦用户发出相应的command就会生成相关的审计记录,该审计记录可以记录在OS中也可以记录在Database中或默认(audit_trail=none)audit create table

select/update/insert[on object]

by session/by access

whenever successful/not successful //可选,只记录成功或失败的,若不指定,则全部记录

其中:by session 发出相同command,只记录一次

by access 每发出一次command,记录一次

sql>show parameter audit_trail 跟踪记录 // value=db/os/none

sql>audit select on kong.authors by session; //启动kong.authors表的审计,只审计select动作。

sql>audit create table; //审计create table动作

sql>audit update on kong.authors whenever not successful; //只记录不成功的update审计

sql>desc dbms_fga;

a.取消审计:noaudit

sql>noaudit select on kong.authors;

b.查看审计选项:ALL_DEF_AUDIT_OPTS 所有缺省的审计选项

DBA_STMT_AUDIT_OPTS 所有语句的审计选项

DBA_PRIV_AUDIT_OPTS 所有权限的审计选项

DBA_OBJ_AUDIT_OPTS 所有数据对象的审计选项

sql>select * from all_def_audit_opts;

sql>select * from dba_stmt_audit_opts;

sql>select * from dba_obj_audit_opts;

c.如何获取审计记录:DBA_AUDIT_TRAIL、DBA_AUDIT_EXISTS、DBA_AUDIT_OBJECT、DBA_AUDIT_SESSION、DBA_AUDIT_STATEMENT

sql>audit select on kong.authors /; sql>conn kong/kxf_001

sql>select * from authors;

sql>conn sys/admin1 as sysdba

sql>select * from dba_audit_trail; //对authors的审计操作都记录在该dba_audit_trail中。

sql>select * from dba_audit_object;

sql>select * from dba_audit_session;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值