从逻辑上考虑,一个安全的数据库应当允许用户只访问对其授权的数据。数据库通过不同安全级别的权限管理,对用户的权利进行限制,保证系统的安全。同时为了权限管理的方便,系统允许设定不同的角色,通过角色管理,实现权限的授予与回收。从逻辑上保证数据安全主要采用以下方法:
1.数据库的存取控制
系统中的数据种类繁多,而整个系统又分为四个相对独立的应用子系统,这些子系统通过数据库进行数据交换与存储,每个子系统都从数据库中获取数据,因此,系统设计时首先按子系统进行数据存取权限的划分,将子系统作为用户级对待,为每个子系统设定数据访问权限,通过定义不同的用户连接使每个子系统在连接到数据库时就划分了对数据库表的访问权限。当子系统级用户使用ORACLE数据库时执行用户鉴别。每个用户在建立时有一个口令,用户口令在建立对数据库连接时使用,以防止对数据库非授权的使用。用户的口令以密码的格式存储在数据库用户信息表中。在此基础上各应用子系统内部再根据访问要求划分多个用户级别,通过建立用户权限表限制各级用户对数据的增、删、浏览等 *** 作权限。
2.对用户使用资源进行限制
对用户可用的各种系统资源总量的限制是用户安全的一部分。通过显式地设置资源限制,安全管理员可防止用户无控制地消耗宝贵的系统资源。资源限制由环境文件进行管理。一个环境文件是命名的一组赋给用户的资源限制。
主要考虑限制下列几种类型的系统资源的使用:
(1)为了防止无控制地使用CPU时间,可限制每次ORACLE调用的CPU时间和在一次会话期间ORACLE调用所使用的CPU的时间
(2)为了防止过多的I/O,应限制每次调用和每次会话的逻辑数据块读的数目
(3)对每个用户的并行会话数进行限制
(4)每次会话可消逝时间的限制,如果一次会话期间超过可消逝时间的限制,当前事务被回滚,会话被删除,该会话的资源被释放。
3.进行审计记录
审计是对选定的用户动作的监控和记录,主要用于审查可疑的活动和数据库连接。本系统审计项有以下几项:
(1)对数据被非授权用户所删除进行审计
(2)对数据库的所有表的成功地或不成功地删除进行审计
(3)监视和收集关于指定数据库活动的数据。
ORACLE支持三种审计类型:语句审计、特权审计和对象审计。
审计记录将存放在SYS模式的AUD$表中,内容包含有审计的 *** 作、用户执行的 *** 作、 *** 作的日期和时间等信息。
4.用户口令表加密
对数据库中的敏感数据项(如用户口令表等)进行加密,确保存放信息的机密性。凡经本系统加密存放的信息,应具有很强的机密性,可以抵抗集团攻击。
5.数据备份与恢复
在数据库系统中,计算机软硬件故障、应用软件故障、 *** 作员的失误 *** 作、甚至病毒、人为破坏等总是不可避免的,另外数据本身在应用过程中不断地被更新变动以及出于调整的必要,需要在不同服务器、甚至不同数据库管理系统之间进行空间数据、属性数据的移植和转换,因此数据备份恢复是数据管理最重要的工作环节之一,也是保障数据安全的重要方式(朱春,2005)。
本系统中的空间数据通过ArcSDE存储在Oracle数据库中,数据的备份更多地依赖于关系型数据库的备份和恢复技术,当然也不能缺少ArcSDE所提供的备份工具。按照备份的方式和对象,ArcSDE中空间数据的备份和恢复可分为如下两类:指定空间数据对象的备份恢复,和整体空间数据库的备份恢复。
1.指定空间数据对象的备份和恢复
该种方式主要用于备份指定空间数据对象,如某个图层和要素类、其中某些满足制定条件的记录、甚至特定的版本。实现这种备份方式的方法主要是利用ArcSDE所提供的管理工具:sdeexport和sdeimport命令,其中sdeexport用于将空间数据从ArcSDE Server上备份为单独的数据文件,而sdeimport用于将经由sdeexport备份的数据文件恢复到ArcSDEServer中。
2.整体空间数据库的备份和恢复
ArcSDE空间数据库的整体备份和恢复,实质上很大程度上是其所在的数据库或者数据库对象的备份和恢复问题。当然完整的ArcSDE数据备份还包括dbtune.sde,giomer.defs,dbinit.sde和servicse.sde等文件。
数据库的备份和恢复大体上分为静态转储和动态转储两种类型。静态转储是在系统中无事务处理时进行的转储 *** 作,因而这种方式得到一定是一个数据一致性的副本。静态数据转储的优点是 *** 作简单、保证数据一致性,但其缺点是必须等到用户事务结束才能进行,而新的事务必须等待转储结束后才能进行,因而会降低数据库的可用性。动态转储是指转储 *** 作与用户事务并发进行,转储期间允许数据库进行存取和修改 *** 作,它不必等待所有运行的事务结束,也不会影响新事务的运行,但是无法保证副本中的数据正确、有效、完整,因此在动态转储期间,往往会建立日志文件,后备文件加上日志文件就可以把数据库恢复到正确的状态。
数据备份策略是基于数据恢复的需要而制订的,备份的频率和范围依赖于应用和业务的要求。使用哪种备份方案或计划最好没有一个固定的样式,应视具体情况而定,要重点考虑的是可用性、可接受的停工时间和可接受的数据损失。
在实际的Oracle备份系统中,应集成使用物理备份和逻辑备份,对备份计划要进行不断的测试,确保它们没有错误,以保证数据库能从各种故障中及时有效地恢复,把企业的损失降低到最小。
本系统数据库备份策略设计如下:
(1)每月第一天进行一次数据库全库备份
(2)周日0时进行一次全数据库的0级热备份
(3)周一至周六每天进行一次1级累积增量热备份。
1、什么是审计审计(Audit)用于监视用户所执行的数据库 *** 作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ ORACLE_BASE/admin/$ORACLE_SID/adump/)或数据库(存储在system表空间中的SYS.AUD$表中,可通过视图 dba_audit_trail查看)中。默认情况下审计是没有开启的。
不管你是否打开数据库的审计功能,以下这些 *** 作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭数据库。
2、和审计相关的两个主要参数
Audit_sys_operations:
默认为false,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的 *** 作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。
Audit_trail:
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在 *** 作系统文件中,文件名由audit_file_dest参数指定;
XML:10g里新增的。
注:这两个参数是static参数,需要重新启动数据库才能生效。
3、审计级别
当开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)、Privilege(权限)、object(对象)。
Statement:
按语句来审计,比如audit table 会审计数据库中所有的create table,drop table,truncate table语句,alter session by cmy会审计cmy用户所有的数据库连接。
Privilege:
按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了audit select any table语句后,当用户a 访问了用户b的表时(如select * from b.t)会用到select any table权限,故会被审计。注意用户是自己表的所有者,所以用户访问自己的表不会被审计。
Object:
按对象审计,只审计on关键字指定对象的相关 *** 作,如aduit alter,delete,drop,insert on cmy.t by scott这里会对cmy用户的t表进行审计,但同时使用了by子句,所以只会对scott用户发起的 *** 作进行审计。注意Oracle没有提供对schema中所有对象的审计功能,只能一个一个对象审计,对于后面创建的对象,Oracle则提供on default子句来实现自动审计,比如执行audit drop on default by access后,对于随后创建的对象的drop *** 作都会审计。但这个default会对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,想比 trigger可以对schema的DDL进行“审计”,这个功能稍显不足。
在oracle11g中,数据库的审计功能是默认开启的(这和oracle10g的不一样,10g默认是关闭的),oracle11gr2的官方文档上写的是错的,当上说default是none,而且是审计到db级别的,这样就会
往aud$表里记录统计信息。
1.如果审计不是必须的,可以关掉审计功能;
sql>
show
parameter
audit_trail
name
type
value
------------------------------------
-----------
------------------------------
audit_trail
string
db
sql>
alter
system
set
audit_trail=none
scope=spfile
sql>
shut
immediate
sql>startup
2.删除已有的审计信息
可以直接truncate表aud$,
truncate
table
sys.aud$
3.或者将aud$表移到另外一个表空间下,以减少system表空间的压力和被撑爆的风险。
附:11g中有关audit_trail参数的设置说明:
audit_trail
property
description
parameter
type
string
syntax
audit_trail
=
{
none
|
os
|
db
[,
extended]
|
xml
[,
extended]
}
default
value
none
modifiable
no
basic
no
audit_trail
enables
or
disables
database
auditing.
values:
none
disables
standard
auditing.
this
value
is
the
default
if
the
audit_trail
parameter
was
not
set
in
the
initialization
parameter
file
or
if
you
created
the
database
using
a
method
other
than
database
configuration
assistant.
if
you
created
the
database
using
database
configuration
assistant,
then
the
default
is
db.
os
directs
all
audit
records
to
an
operating
system
file.
oracle
recommends
that
you
use
the
os
setting,
particularly
if
you
are
using
an
ultra-secure
database
configuration.
db
directs
audit
records
to
the
database
audit
trail
(the
sys.aud$
table),
except
for
records
that
are
always
written
to
the
operating
system
audit
trail.
use
this
setting
for
a
general
database
for
manageability.
if
the
database
was
started
in
read-only
mode
with
audit_trail
set
to
db,
then
oracle
database
internally
sets
audit_trail
to
os.
check
the
alert
log
for
details.
db,
extended
performs
all
actions
of
audit_trail=db,
and
also
populates
the
sql
bind
and
sql
text
clob-type
columns
of
the
sys.aud$
table,
when
available.
these
two
columns
are
populated
only
when
this
parameter
is
specified.
if
the
database
was
started
in
read-only
mode
with
audit_trail
set
to
db,
extended,
then
oracle
database
internally
sets
audit_trail
to
os.
check
the
alert
log
for
details.
xml
writes
to
the
operating
system
audit
record
file
in
xml
format.
records
all
elements
of
the
auditrecord
node
except
sql_text
and
sql_bind
to
the
operating
system
xml
audit
file.
xml,
extended
performs
all
actions
of
audit_trail=xml,
and
populates
the
sql
bind
and
sql
text
clob-type
columns
of
the
sys.aud$
table,
wherever
possible.
these
columns
are
populated
only
when
this
parameter
is
specified.
you
can
use
the
sql
audit
statement
to
set
auditing
options
regardless
of
the
setting
of
this
parameter.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)