仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 873|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL教程之实际中的细粒度审计(2)

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:49:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。
实际中的细粒度审计(2)

办理FGA战略

在前文中您看到了怎样增加FGA战略。要删除战略,您可使用以下语句:


begindbms_fga.drop_policy(object_schema=>BANK,object_name=>ACCOUNTS,policy_name=>ACCOUNTS_ACCESS);end;



关于变动战略而言,没有随取随用的办理计划。要变动战略中的任何参数,必需删除战略,再利用变动后的参数增加战略。

偶然您大概必要一时禁用审计搜集―比方,假如您但愿将线索表挪动到分歧的表空间大概要删除线索表。您能够按以下办法禁用FGA战略:


begindbms_fga.enable_policy(object_schema=>BANK,object_name=>ACCOUNTS,policy_name=>ACCOUNTS_ACCESS,enable=>FALSE);end;



要从头启用它,可以使用统一函数,可是将参数enable设置为TRUE。

处置器模块

FGA的功效不但是纪录审计线索中的事务;FGA还能够恣意实行历程。历程能够实行一项操纵,好比当用户从表当选择特定行时向审计者发送电子邮件告诫,大概能够写到分歧的审计线索中。这类存储代码段能够是自力的历程大概是程序包中的历程,称为战略的处置器模块。实践上因为平安性缘故原由,它不用与基表自己处于统一形式中,您大概但愿特地将它安排在分歧的形式中。因为只需SELECT呈现时历程就会实行,十分相似于DML语句启动的触发器,您还能够将其看做SELECT语句触发器。以下参数指定将一个处置器模块指定给战略:

handler_schema具有数据历程的形式
handler_module历程称号

处置器模块还能够接纳程序包的称号来取代历程称号。在这类情形下,参数handler_module在package.procedure的格局中指定。

FGA数据字典视图

FGA战略的界说位于数据字典视图DBA_AUDIT_POLICIES中。表2包括该视图中一些主要列的冗长形貌。

审计线索搜集在SYS具有的表FGA_LOG$中。关于SYS具有的任何原始表,此表上的某些视图以对用户友爱的体例显现信息。DBA_FGA_AUDIT_TRAIL是该表上的一个视图。表3包括该视图中主要列的冗长形貌。

一个主要的列是SQL_BIND,它指定查询中利用的绑定变量的值―这是明显加强该工具功效的一项信息。

另外一个主要的列是SCN,当产生特定的查询时,它纪录体系变动号。此信息用于辨认用户在特准时间看到了甚么,而不是如今的值,它利用了闪回查询,这类查询可以显现在指定的SCN值时的数据。我将在本系列的第2部分中具体申明这类功效壮大的特征。

视图和FGA

到今朝为止我已会商了在表上使用FGA;如今让我们来看怎样在视图上利用FGA。假定在ACCOUNTS表上界说视图VW_ACCOUNTS以下:


createviewvw_accountsasselect*fromaccounts;



如今,假如用户从视图中而不是从表中举行选择:


select*fromvw_accounts;



您将看到以下审计线索:


selectobject_name,sql_textfromdba_fga_audit_trail;OBJECT_NAMESQL_TEXT------------------------------------------------------------ACCOUNTSselect*fromvw_accounts



注重,是基表称号而不是视图称号呈现在OBJECT_NAME列中,由于视图中的选择是从基表中举行选择。可是,SQL_TEXT列纪录了用户提交
的实践语句,而这恰是您但愿懂得的。接上去的步骤


浏览有关DBMS_FGA程序包的更多信息

会见Oracle数据库主页

会见Oracle平台平安性主页




假如您只但愿审计对视图的查询而不是对表的查询,能够对视图自己创建战略。经由过程将视图称号而不是表的称号传送给打包的历程dbms_fga.add_policy中的参数object_name,能够完成这项事情。随后DBA_FGA_AUDIT_TRAIL中的OBJECT_NAME列将显现视图的称号,而且不会呈现有关表会见的附加纪录。

别的用处

除纪录对表的选择会见,FGA还可用于某些别的情形:

您能够对数据堆栈利用FGA,以捕捉特定的表、视图或物化视图上产生的一切语句,这有助于企图索引。您不必要到V$SQL视图往猎取这些信息。即便SQL语句已超越了V$SQL的刻日,在FGA审计线索中将会一直供应它。



因为FGA捕捉绑定变量,它能够匡助您懂得绑定变量值的形式,这有助于计划直方图汇合等。



前文已提到,处置器模块能够向审计者或DBA发送告诫,这有助于跟踪歹意使用程序。



因为FGA能够作为SELECT语句的触发器,您能够在必要这类功效的任什么时候候利用它。


结论

FGA使您在Oracle数据库中撑持隐私和本能机能战略。由于审计产生在数据库外部而不是使用程序中,以是不管用户利用的会见办法是甚么(经由过程诸如SQL*Plus等工具大概使用程序),都对操纵举行审计,同意举行十分复杂的设置。

下一次我将会商初级FGA手艺和OracleDatabase10g中的新特征,这些特征使FGA的功效极其壮大,合用于一切范例的审计情形。

ArupNanda(arup@proligence.com)是IntelliClaim的首席数据库计划职员,该公司位于Connecticut的Norwalk,供应对卫生保健保险索赔办理高度平安和基于划定规矩的优化。他是2003年度OracleDBA奖的取得者,并与别人互助编著了行将出书的Oracle隐私平安性审计(RampantTechPress出书,2003)。

表1:演示什么时候审计操纵和什么时候不审计操纵的各类情形SQL语句审计形态selectbalancefromaccounts;举行审计。用户选择了在增加战略时所指定的审计列BALANCE。select*fromaccounts;举行审计。即便用户没有明白指定列BALANCE,*也隐含地选择了它。selectcust_idfromaccountswherebalance<10000;举行审计。即便用户没有明白指定列BALANCE,where子句也隐含地选择了它。selectcust_idfromaccounts;不举行审计。用户没有选择列BALANCE。selectcount(*)fromaccounts;不举行审计。用户没有明白或隐含地选择列BALANCE。



表2:数据字典视图DBA_AUDIT_POLICIES中主要的列OBJECT_SCHEMA对其界说了FGA战略的表或视图的一切者OBJECT_NAME表或视图的称号POLICY_NAME战略的称号―比方,ACCOUNTS_ACCESSPOLICY_TEXT在增加战略时指定的审计前提―比方,BALANCE>=11000POLICY_COLUMN审计列―比方,BALANCEENABLED假如启用则为YES,不然为NOPF_SCHEMA具有战略处置器模块的形式(假如存在)PF_PACKAGE处置器模块的程序包称号(假如存在)PF_FUNCTION处置器模块的历程称号(假如存在)


表3:DBA_FGA_AUDIT_TRAIL视图中主要的列SESSION_ID审计会话标识符;与V$SESSION视图中的会话标识符分歧TIMESTAMP审计纪录天生时的工夫标志DB_USER收回查询的数据库用户OS_USER操纵体系用户USERHOST用户毗连的呆板的主机名CLIENT_ID客户标识符(假如由对打包历程dbms_session.set_identifier的挪用所设置)EXT_NAME内部认证的客户称号,如LDAP用户OBJECT_SCHEMA对该表的会见触发了审计的表一切者OBJECT_NAME对该表的SELECT操纵触发了审计的表称号POLICY_NAME触发审计的战略称号(假如对表界说了多个战略,则每一个战略将拔出一笔记录。在此情形下,该列显现哪些行是由哪一个战略拔出的。)SCN纪录了审计的Oracle体系变动号SQL_TEXT由用户提交的SQL语句SQL_BIND由SQL语句利用的绑定变量(假如存在)


你不用花费很多时间和金钱来培训现有的职工,或者去花大价钱雇用那些拥有各种证书的开发者。因为MySQL的维护和管理在很大程度上是“傻瓜型”的。
海妖 该用户已被删除
沙发
发表于 2015-1-20 05:07:42 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
admin 该用户已被删除
板凳
发表于 2015-1-28 16:27:49 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
蒙在股里 该用户已被删除
地板
发表于 2015-2-5 22:14:28 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-13 22:02:24 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
活着的死人 该用户已被删除
6#
发表于 2015-3-4 02:06:20 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
山那边是海 该用户已被删除
7#
发表于 2015-3-11 15:23:47 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
若天明 该用户已被删除
8#
发表于 2015-3-19 01:10:47 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
飘飘悠悠 该用户已被删除
9#
发表于 2015-3-27 00:19:22 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 13:06

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表