电子科大刘心松郝尧
目标
●了解数据库系统面临的安全问题
●了解典型的入侵手段
●了解可用的防范措施
内容提要
●数据库安全概论
–概念、主要问题、主要安全机制
●数据库安全实施
–环境、攻击技术及防御措施
●主流数据库系统安全Solution
–Oracle
–Sybase
一、数据库安全概论
●什么是数据库安全?
●一些相关概念
●主要安全问题
●主要安全机制
什么是数据库安全?
数据库安全(Database Security)
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题,只是在数据库系统中大量数据集中存放,而且为许多.终用户直接共享,从而使安全性问题更为突出。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。
数据库的安全需求
●保密性:
–信息不泄露给非授权的用户、实体或过程,或供其利用的特性。
●完整性:
–数据未经授权不能进行改变的特性,即信息在存储或传输过程中保持不被修改、不被破坏和丢失的特性。
●可用性:
–可被授权实体访问并按需求使用的特性,即当需要时应能存取所需的信息。网络环境下拒绝服务、破坏网络和有关系统的正常运行等都属于对可用性的攻击。
●可控性:
–对信息的传播及内容具有控制能力。
相关概念
●数据库
–长期储存在计算机内的、有组织的、可共享的数据集合
●数据库管理系统
–Data Base Management System(DBMS)是一个专门负责数据库管理和维护的计算机软件系统。它是数据库系统的核心,对数据库系统的功能和性能有着决定性影响。
●数据库系统
主要安全问题
●信息泄露(disclosure of information):造成将有价值的和高度机密的信息暴露给
无权访问该信息的人的所有问题。
●数据篡改(unauthorized access):入侵者非法篡改数据,以获取利益或破坏数据
完整性。
●拒绝服务(denial of service):使得系统难以或不可能继续执行任务的所有问题。T C S E C/T D I标准
TCSEC又称桔皮书,即《DoD可信计算机系统评估标准》(Trusted Computer System Evaluation Criteria),1985年由美国国防部(DoD)正式颁布。
TCSEC/TDI,即《可信计算机系统评估标准在数据库管理系统的解释(Trusted Database Management System Interpretation of TCSEC)》,简称TCSEC/TDI,1991
年由美国NCSC(国家计算机安全中心)颁布。TDI又称紫皮书,是TCSEC在数据库管理系统方面的扩展。
TDI中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准。
安全级别
TCSEC/TDI将系统划分为四组(division)七个等级,依次是D;C (CI,C2);B(B1,B2,B3);A(A1),按系统可靠或可信程度逐渐增高。
●C2级实际是安全产品的最低档次,提供受控的存取保护,即将C1级的DAC进一
步细化,以个人身份注册负责,并实施审计和资源隔离。很多商业产品已得到该级别的认证。常见数据库产品大部分属于C2级。
●B1级标记安全保护。对系统的数据加以标记,并对标记的主体和客体实施强制存
取控制(MAC)以及审计等安全机制。B1级能够较好地满足大型企业或一般部门对于数据的安全需求,这一级别的产品才认为是真正意义上的安全产品。满足此级别的产品前一般多冠以“安全”(Secure)或“可信的”(Trusted)字样,作为区别于普通产品的安全产品出售。B1级数据库产品有:Oracle公司的Trusted Oracle 7, Sybase公司的Secure SQL Sever version 11.0.6 , Informix公司的Incorporated INFORMIX-Online/Secure 5.0等。
●目前没有B2级以上数据库产品。
主要安全机制
●认证(鉴别)
●访问控制
–自主访问控制
–强制访问控制
–基于角色的访问控制
–隔离控制技术
●隐通道控制
●推理控制
●审计
认证(鉴别)
确认实体(用户)所宣称的身份,系统登录控制
典型方法:
●基于知识、财产、特征等识别项或它们的组合。
–知识:个人已知的某些东西,如:口令、个人身份代码等。
–财产:个人具有的某些东西,如: ID 卡、钥匙等。
–特征:个人的生理特征,如:指纹、视网膜、面部特征和声音等。
生理特征不会轻易地被忘记、遗失和盗窃,而知识、财产项则可能被窃取和欺骗,从而使非法用户得以成为“合法”用户。
●相信可靠的第3方的鉴别(递推)
●环境:主机地址
访问控制
或存取控制(Access Control),对信息资源使用的
●主体、客体
–主体:访问的发起者,是试图访问某个目标的用户或者是用户行为的代理。
必须控制它对客体的访问。主体通常为进程、程序或用户。
–客体:可供访问的各种软硬件资源。
访问控制机制主要包括两部分:
●定义用户权限(授权)
–用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。系统必须提供适当的语言定义用户权限,这些定义经过编译后存放在数据字典中,被称作安全规则或授权规则。
●合法权限检查
–每当用户发出存取数据库的操作请求后(请求一般应.包括操作类型、操作对象和操作用户等信息),DBMS查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此操作。
自主访问控制
Discretionary Access Control(DAC)是基于主体或主体所在组的身份的,这种访问控制是自主的,也就是说,如果一个主体具有某种访问权,则它可以直接或间接地把这种控制权传递给别的主体(除非这种授权是被强制型控制所禁止的)。
强制性访问控制
Mandatory Access Control(MAC),MAC基于被访问信息的敏感性,其控制要强于自主访问控制。B1以上安全级必须实现MAC。
实现了MAC的DBMS又称多级安全保护数据库管理系统(Multi-Level Security Database Management System,MLS/DBMS)。
●BLP模型:Bell & La Padula,1974,最早的MAC模型,基于军事多级安全策略,
基础结构是关于―安全级‖(label,clearance)的线性关系,如非密、秘密、机密、绝密的密级依次增大,规定―不上读‖(简单安全特性)和―不下写‖特性(*-特性)。
●Denning模型:Denning,1987将BLP模型的线性关系推广到格结构,提出网格信
息流模型:流模型为安全的,当且仅当操作满足流关系。Denning模型的安全级由分层密级与非分层范围的二元组组成,形式为〈密级,分类集合〉。分层密级中的各种密级是可以相互比较的、有序的,如非密、秘密、机密、绝密的密级依次增大。非分层范围彼此是的、无序的,来源于部门概念。
多实例
●在BLP模型中,*-特性的―向上写‖为用户不恰当的重写数据库提供了机会,而且低
安全级的用户提供的信息并不一定可靠,这对数据库的完整性造成了影响。因而从完整性出发提出了―不上写‖的原则,同时为防止信息的向下流动提出了多实例(Poly-instantiation)。
●多实例是指同时存在多个名字(关键字等)相同而安全级不同的数据客体(如元
组,元素等)。在支持多实例的多级安全DBMS中,当一高安全级的主体在一个低安全级的数据域中插入/更新数据时,引入一个新的与主体同一安全级的元组,既保护原有安全级的信息不受破坏,又可以防止敏感的客体信息直接传播到低安全级上。
基于角色访问控制(R B A C)
●根据企业或机构组织视图中不同的职能岗位划分不同的角色,将数据库资源的访
问权限封装在角色中,用户通过被赋予不同的角色来间接地访问数据库资源。
●角色还可以划分成不同的等级,各级角色通过角色继承形成偏序关系,也可以引
入约束机制,对授权的各个环节进行相应的。最常见的约束是定义互斥角色和可被赋予某特定角色的数目。
RBAC能够能够描述复杂的安全策略,同时简化授权的管理。
若系统为企业每个职务建立一个角色,职务对应的权限发生了改变,只需修改角色的权限,而不必修改具有该职务的每个用户的权限;用户的职务发生改变,只需收回用户原角色,重新授予用户新职务所对应的角色。
隔离控制技术
隔离控制技术,是数据库系统常见且比较成熟的一种存取控制方法,即通过某种中间机构,将用户与存取对象隔离。用户不能直接对存取对象进行操作,而是通过中间机构间接进行。
常用的中间机构有视图和存储过程。
隐通道
●隐通道(Covert Channel)是指通过系统原本不用于数据传送的系统资源来发送信
息的通讯方式。存取控制机制不能检测和控制通过隐通道的传递的信息。尽管高安全级用户有可能利用隐通道给低安全级用户传送信息,但隐通道的主要威胁在于它有可能被特洛伊木马利用。
●隐通道主要有存储隐通道(Covert Storage Channel)和时间隐通道(Covert Timing
Channel)两种。存储隐通道指当一主体产生一个需写入的客体,另一主体监测其效果时采用的通信路径。存储隐通道常采用3种资源:客体属性(如文件的长度、时间等)、客体存在、共享资源。时间隐通道,指一个主体通过调整它自己的系统资源(如CPU时间)的使用,而影响了另一个主体的实际的响应时间,从而发送信息给另一主体的泄漏路径。隐通道中最重要的参数是带宽(信息在进程间交换的速度,用bit/s表示)。
●隐通道存在途径较多,而且难防范,目前主要的安全措施是隐通道分析、安全并
发控制以及审计。
推理控制
●推理(Inference)是指用户从对数据库的合法访问得到的信息推断出他所不应了
解的信息。这种信息泄漏由于系统不知道哪部分释放信息有助于推理而且入侵者具有何种推理规则而较难防范。目前主要是统计推理攻击。
●统计推理(Statistical Inference)基于统计信息的语义,从统计信息推知个人敏感
信息。对统计信息的攻击主要有:求和(Inference by Sum)、中值推理(Inference by Median)、追踪者攻击(Tracker Inference)、线性系统推理(Linear System Inference)。对统计推理的控制又称为统计泄密控制(Statistical Disclosure Control,SDC)。统计数据库和数据仓库由于其中大量统计结果的开放性需要,推理问题最为严重。
推理控制可分为响应技术和数据污染技术。
–响应技术指释放的统计数据的数目与类型。主要方法有:只释放如总数和平均等联系较弱的统计数、跟踪查询意图,决定给予或否定。
–数据污染(Clouding)技术,即在不破坏查询结果的统计意义下对结果进行随机的歪曲。
●一种方法是加入噪声,即在原始数据上将加上随机性的干扰,使输出偏离
真实数据。
●另一种方法称为微集技术(microaggregation),即将原始数据分为许多小
的集合,所有对原始数据的统计均转换为对微集合统计结果的统计,使入侵者无法推断个体的具体数据。
为保证系统的可用性,推理控制必须考虑如何在保证安全的前提下,尽可能的减少信息的丢失。
统计推理示例
假定下面两个查询都是合法的:
本公司共有多少女高级程序员?
本公司女高级程序员的工资总额是多少?
如果第1个查询的结果是―1‖,那么第2个查询的结果显然就是这个程序员的工资数。这样统计数据库的安全性机制就失效了。
为了解决这个问题,可以规定任何查询至少要涉及N个以上的记录(N足够大)。但是即使这样,还是存在另外的泄密途径,看下面的例子:
某个用户A想知道另一用户B的工资数额,他可以通过下列两个合法查询获取: 用户A和其他N个程序员的工资总额是多少?
用户B和其他N个程序员的工资总额是多少?
假设第1个查询的结果是X,第2个查询的结果是Y,由于用户A知道自己的工资是Z,那么他可以计算出用户B的工资=Y-(X-Z)。
审计
数据库审计提供用户使用数据库资源情况的记录。通过分析审计记录,可对影响系统安全的访问和访问企图进行事后分析和追查。从分析中还可以获得有关系统安全状况的信息,为改善和加强系统安全,发现和处理可疑事件提供决策信息。根据数据库系统特点,应实现选择性审计,对审计内容及粒度应可根据需要配置。
●审计功能就是DBMS达到C2以上安全级别必不可少的一项指标。
●审计通常是很费时间和空间的,所以DBMS往往都将其作为可选特征,允许DBA
根据应用对安全性的要求,灵活地打开或关闭审计功能。
●审计功能一般主要用于安全性要求较高的部门。
二、数据库安全实施
几种意识
●风险意识:
–百分之百的安全是不可能的;
–明确―干什么‖和―怕什么‖
–做到什么样的―度‖
●权衡意识:
–系统开销,经济承受力等综合权衡;
–准确定义业务要求;
●相对意识:
–理想的技术不适用,在用技术有缺点;
–准确定义安全保密要求;
●全局意识:
–要站在系统的角度来考虑
–每个环节安全不等于系统安全
–任何局部的不安全必然导致系统的不安全
典型数据库应用模型
●单机应用
●网络应用-C/S模型
●网络应用-W/S模型
●操作系统环境
●网络环境
W/S应用模型-J2E E
可能入侵环节
●应用、应用组件,如:ASP exec漏洞
●基础组件OS、文件系统、网络
●DBMS
●DBMS接口网络服务协议、API
●DBMS工具
●DBMS安全系统
数据库是信息系统的一个部分,数据库的安全问题必须放到全局下考虑
攻击目的
●数据窃取、猜测
●数据篡改
●拒绝服务攻击:崩溃、延迟相应
●中间目的:非法授权
●跳板:入侵OS和网络
数据库安全实施
●安全需求
–安全和代价的折衷
●安全策略
●系统配置
●数据库设计
●应用设计
安全策略
●网络用户的安全责任:该策略可以要求用户每隔一段时间改变其口令;使用符合
一定准则的口令;执行某些检查,以了解其账户是否被别人访问过等。重要的是,凡是要求用户做到的,都应明确地定义。
●系统管理员的安全责任:该策略可以要求在每台主机上使用专门的安全措施、登
录标题报文、监测和记录过程等,还可列出在连接网络的所有主机中不能运行的应用程序。
●检测到安全问题时的对策:当检测到安全问题时应该做什么?应该通知谁?这些都是在紧急的情况下容易忽视的事情。
攻击技术
●社会工程
–通过欺骗、偷窃等手段获取口令
●口令破解
●堆栈溢出攻击
●拒绝服务攻击
●推理攻击(Database-Specified)
口令破解
口令攻击方法
–穷举法尝试(尝试所有可能的口令)
–经验法尝试(最常用和可能的口令)
–搜索口令表(破译口令文件、口令数据区)
–询问用户(窃取口令、窥探口令输入)
–编程截取口令(信息查找、侦察程序)
口令所包含的信息位较少,作为一种保护机制是很有限的。一个短的和明显的口令很容易被识破。口令安全性依赖于特定系统的实现。
系统管理员,应该定期检查系统是否存在无口令的用户,其次应定期运行口令破译程序以检查系统中是否存在弱口令,这些措施可以显著地减少系统面临的通过口令入侵的威胁。另外,系统管理员应保护好自己的口令,并要求用户定期更换自己的口令。
设置安全的口令
●安全的口令是那些很难猜测的口令。难猜测的原因是因为同时有大小写字符,不
仅有字符,还有数字、标点符号、控制字符和空格,另外,还要容易记忆、至少有7到8个字符长和容易输入。
●不安全的口令往往是:任何名字,包括人名、软件名、计算机名甚至幻想中事物
的名字,电话号码或者某种执照的号码,社会保障号,任何人的生日,其它很容易得到的关于自己的信息,一些常用的词,任何形式的计算机中的用户名,在英语字典或者外语字典中的词,地点名称或者一些名词,键盘上的一些词,任何形式的上述词再加上一些数字。
缓冲区溢出
●Buffer Overflow,是最常用的攻击手段。通过向缓冲区(特别是堆栈)中分配的
局部数据块中写入超出其实际分配大小的数据,导致数据越界,结果覆盖相邻存储单元的数据。
●溢出的后果:
–覆盖相邻存储单元,导致系统崩溃
–使用特别设计的数据,利用栈数据溢出,转向执行攻击者设定的指令
造成溢出的原因:程序中没有仔细检查用户输入的参数。例:#include int main(){ char name[8]; printf(―Your Name:‖); gets(name); printf(―Hello,%s!‖,name); return 0; } //当输入字符超过8个时,溢出 拒绝服务攻击(D o S) ●拒绝服务的攻击是指一个用户占据了大量的共享资源,使系统没有剩余的资源给 其他用户可用的一种攻击方式。 ●拒绝服务的攻击降低了资源的可用性,这些资源可以是处理器、磁盘空间、CPU 使用的时间、打印机、调制解调器,甚至是系统管理员的时间,攻击的结果是减少或失去服务。 ●防御:入侵检测系统IDS 综合性防御机制 ●系统漏洞扫描 –扫描并发现系统已知漏洞,提供建议 ●入侵检测技术 –对非法使用系统资源的活动,以及对滥用系统资源的行为进行检测。 ●备份与恢复 –恢复因入侵或故障损失的数据 ●数据加密技术 系统漏洞扫描 ●系统漏洞 –任意的允许非法用户未经授权就获得访问或提高访问层次的硬件或者软件特征。这种特征是广义的,漏洞可以是任何东西。 –某些漏洞可能由系统管理员引起,如没有安装已知漏洞的安全补丁、系统配置不正确和没有建立和加强安全策略。 ●数据库扫描器 –数据库扫描器(Database Scanner)通过建立、依据、强制执行安全策略来保护数据库应用的安全。它可以自动识别数据库系统各种潜在的安全问题,产生通俗易懂的报告来表示安全风险和弱点,对违反和不遵循策略的配置提出修改建议 –产品:ISS 的Database Scanner 等 ●DBMS安装后的默认配置往往具有安全隐患 –默认帐号 –默认口令或空口令 ●对策:安装DBMS之后,应根据安全的要求修改其配置参数入侵检测 ●对非法使用系统资源的活动,以及对滥用系统资源的行为进行检测。 ●入侵检测对于及时发现攻击者具有重要意义,监控资源的使用和在特定事件发生 时通知系统管理员,包括基于主机和基于网络的入侵检测。 ●入侵检测工具通常要和审计工具及日志工具配合使用。 ●大多数数据库系统都提供了某种审计机制,但由于缺乏对于审计信息进行实时处 理的技术和能力,往往只是在通过其他途径发现入侵或犯罪迹象之后才来分析系统的审计信息,使审计信息仅仅作为一种事后的证据。因此,将审计跟踪与实时预警结合起来,实现实时的入侵检测是非常有意义的。 ●入侵检测的核心在于判别用户的行为是正常的还是入侵性的,可以采用的方法包 括模式识别、统计分析、专家系统和人工智能。 数据库备份与恢复 恢复因入侵或故障损失的数据 备份方案选择:备份成本评估和技术评估。 常用数据库备份方法 ●冷备份的思想是关闭数据库系统,在没有任何用户对它进行访问的情况下备份。 冷备份通常在系统无人使用的时候进行。 ●数据库正在运行时所进行的备份称为热备份。数据库的热备份依赖于系统的日志 文件。 ●逻辑备份是使用软件技术从数据库中提取数据并将结果写入一个输出文件。该输 出文件不是一个数据库表,而是表中的所有数据的一个映像。 数据加密 ●包括数据库加密和通信数据加密 ●数据库加密技术是将数据库中的原始数据(明文)转换成人们所不能识别的数据 (密文),达到防止信息泄漏的目的。 ●加密方案应保证对入侵者事实上不可破解,而合法用户存取数据时因加解密而付 出的空间和时间开销较小。譬如对于有次序关系而且多用于查询条件的属性采用同态加密算法,以保持数据之间的大小关系。 ●数据库加密通常需要大量的密钥,数据及其相应密钥的生命周期较长,因而密钥 管理是实现密文数据库的关键技术。密钥管理的包括密钥的产生、存储、分发、删除、获取和应用。现代密钥管理采取多级安全密钥管理 三、主流数据库系统 安全解决方案 主流数据库系统产品 –Oracle –IBM DB2 –Microsoft SQL Server –Sybase Adaptive Server Enterprise(ASE)Adaptive SQL Anywhere(ASA)。 –MySQL –Postgres数据库系统产品-按数据模型划分 ●网状:Web ●层次:目录服务 ●关系:主流 ●对象:XML ●关系-对象 数据库系统产品-按特性划分 ●单机数据库(桌面级)ACCESS ●网络数据库 ●分布式数据库 ●并行数据库 ●特殊数据库 –时空数据库 –数据仓库 –嵌入式数据库:innoDB –移动数据库:嵌入或带离线缓存功能的网络数据库客户端Sybase iAnywhere –文档数据库Notes/Domino ●广义数据库:Web O r a c l e数据库安全 O r a c l e数据库的安全性措施 ●用户标识和鉴定 ●授权和检查机制 ●审计技术(是否使用审计技术可由用户灵活选择); 除此之外,Oracle还允许用户通过触发器灵活定义自己的安全性措施. 1.用户标识和鉴定 在Oracle中,最外层的安全性措施是让用户标识自己的名字,然后由系统进行核实。Oracle允许用户重复标识三次,如果三次未通过,系统自动退出。 2.授权与检查机制 Oracle的授权和检查机制与前面讲的访问控制方法基本相同。 Oracle的权限包括系统权限和数据库对象的权限两类,采用非集中的授权机制,即DBA负责授予与回收系统权限,每个用户授予与回收自己创建的数据库对象的权限。 Oracle允许重复授权,即可将某一权限多次授予同一用户,系统不会出错。Oracle也允许无效回收,即用户没有某种权限,但回收此权限的操作仍算成功。 a.系统权限 Oracle提供了$0多种系统权限,如创建会话、创建表、创建视图、创建用户等。DBA在创建一个用户时需要将其中的一些权限授予该用户。 Oracle支持角色的概念。所谓角色就是一组系统权限的集合,目的在于简化权限管理。Oracle除允许DBA定义角色外,还提供了预定义的角色,如CONNECT, RESOURCE和DBA。 具有CONNECT角色的用户可以登录数据库,执行数据查询和操纵。即可以执行ALTER TABLE. CREATE VIEW, CREATE INDEX, DROP TABLE, DROP VIEW,DROP INDEX,GRANT,REVOKE,INSERT,SELECT, UPDATE, DELETE, AUDIT. NDAUDIT等操作。 RESOURCE角色可以创建表,即执行CREATE TABLE操作。创建表的用户将拥有对该表的所有权限。 DBA角色可以执行某些授权命令,创建表,对任何表的数据进行操纵。它涵盖了前两种角色,此外还可以执行一些管理操作,DBA角色拥有最高级别的权限。 b. 数据库对象的权限 在oracle中,可以授权的数据库对象包括基本表、视图、序列、同义词、存储过程、函数等,其中最重要的是基本表。 对于基本表Orac1e支持三个级别的安全性:表级、行级和列级。 3.O r a c l e的审计技术 在Oracle中,审计分为用户级审计和系统级审计。 用户级审计是任何Oracle用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。 系统级审计只能由DBA设置,用以监测成功或失败的登录要求、监侧GRANT和REVOKE操作以及其他数据库级权限下的操作。 Oracle的审计功能很灵活,是否使用审计,对哪些表进行审计,对哪些操作进行审计等都可以由用户选择。为此,Oracle提供了AUDIT语句设里审计功能,NOAUDIT 语句取消审计功能.设置审计时.可以详细指定对哪些SQL操作进行审计。例如, 对修改SC表结构或数据的操作进行审计可使用如下语句: AUDIT ALTER, UPDATE ON SC; 取消对SC表的一切审计可使用如下语句: NOAUDIT ALL ON SC; 在Oracle中,审计设置以及审计内容均存放在数据字典中。其中审计设置记录在数据字典表SYS.TABLES中,审计内容记录在数据字典表SYSAUDIT_TRAIL中。 4.用户定义的安全性措施 除了系统级的安全性措施外,Oracle还允许用户用数据库触发器定义特殊 的更复杂的用户级安全性措施。例如,规定只能在工作时间内更新student表, 可以定义如下触发器,其中sysdate为系统当前时间: CREATE OR REPLACE TRIGGER secure_student BEFORE INSERT OR UPDATE OR DELETE ON Student BEGIN IF (TO_CHAR(sysdate, ,'DY') IN('SAT', 'SUN')) OR (TO_NUMBER(sysdate. 'HH24') NOT BETWEEN 8 AND 17) THEN RAISE_APPLICATION_ERROR(-20506, 'You may only change data during normal business hours.') END IF: END; 触发器一经定义便存放在数据字典中。用户每次对Student表执行INSERT, UPDATE 或DELETE操作时都会自动触发该触发器,由系统检查当时的系统时间,如果是周六或周日,或者不是8点至17点,系统会拒绝执行用户的更新操作,并提示出错信息。S y b a s e数据库安全 安全性控制的层次结构 Sybase中的安全性是依靠分层解决的,它的安全措施也是一级一级层层设置的,真正做到了层层设防。 –第一层是注册和用户许可,保护对服务器的基本存取; –第二层是存取控制,对不同用户设定不同的权限,使数据库得到最大限度的保护; –第三层是增加数据存取的视图和存储过程,在数据库与用户之间建立一道屏障。 安全性问题的基本原则 Sybase基于上述层次结构的安全体系,提出以下几点实施安全的原则:–自主访问控制(Discretionary Access Controls DAC)-DAC用来决定用户是否有 权访问数据库对象; –验证-验证就是保证只有授权的合法用户才能注册和访问; –授权-对不同的用户访问数据库授予不同的权限; –审计-监视系统发生的一切事件。 安全机制 基于上述四点原则,Sybase提供了四种基本策略进行安全性控制。 在创建服务器时,Sybase将所有权限都分配给系统管理员,系统管理员可以在服务器上增加注册者(Logins)(只有系统管理员有此权限)。Logins可以登录服务器但不能访问数据库。数据库属主(DBO)有权增加用户(users),users可以使用分配给它的数据库。当users访数据库时,首先以Logins身份进入服务器,系统自动打开默认数据库,Logins身份转化为users身份。 在用户登录后,系统要通过口令进行验证,以防止非法用户盗用他人的用户名进行登录。这一验证步骤在登录时的注册对话框中出现,注册与验证同时进行,用户名与口令有一个不符,登录请求被拒绝。 权限使得用户在数据库中活动范围仅被容许在小范围内,大大提高了数据库的安全性。在Sybase系统中,对象的所有者或创建者自动被授予对对象的许可权。所有者则有权决定把许可权授予其他用户。Sybase提供了GRANT和REVOKE命令,以便授予或取消许可权。数据库所有者和系统管理员享有特殊许可权,包括数据库所有者(Database Owner,DBO)对自己所拥有的数据库中的一切对象具有全部许可权;系统管理员(System Administration,SA)享有服务器内的所有数据库的一切对象的许可权。 Sybase提供了Audit Server,它是能够全面审计跟踪服务器上一切活动的工具,在某些情况下,我们难以阻止非法操作的发生,但至少可以监视非法操作,并采取跟踪措施,找出非法执行操作的人。 除了以上四点基本策略,Sybase数据库中还提供了两种对象——视图和存储过程用于增强系统的安全性。 视图和存储过程像数据库中的其他对象,也要进行权限设定,这样用户只能取得对视图和存储过程的授权,而无法访问底层表。视图可以底层表的可见列,从而用户能查询的数据列的种类,还能通过应用Where子句表返回的行。 示例 下面以具体实例说明Sybase的安全性控制策略: 假设开发一个新项目,需要建一个服务器,命名为Server,系统自动产生SA,并要求输入口令(在此我们均假设口令为Null)。SA通过Logins对话框(或用SQL语句)为服务器增加注册Logins,则Logins有权访问Sybase,SA创建数据库DB(SA在数据库DB 中的身份为数据库所有者DBO),同时创建两个用户USER_1(设置登录名为Login,默认服务器为DB)和USER_2。这两个用户只能访问数据库DB。DB中有两张表TABLE_1(COLUMN_1 INT,COLUMN_2 CHAR(5))和TABLE_2。 USER_1要访问DB时,首先以Login登录服务器,默认数据库DB被打开,Login的身份就会化为USER_1。在完成了登录和验证后,我们可以通过授权进行安全性控制。授权命令要由数据库属主SA发出:GRANT ALL ON TABLE_1, TABLE_2 TO USER_1则USER_1拥有对TABLE_1,TABLE_2的所有权限。 当然,SA也可以收回权限:REVOKE DELETE ON TABLE_1 FROM USER_1,同样,USER_1就不能对TABLE_1进行删除操作。 视图和存储过程就象架设在用户与底层表之间的一道桥梁,用户只能对视图和存储过程进行操作,而无法直接访问底层表。下面创建一个视图为例子。 CREATE VIEW VIEW_1 AS SELECT COLUMN_1 FROM TABLE_1 GRANT ALL ON VIEW_1 TO USER_2 USER-2通过VIEW_1可以访问COLUMN_1而无法访问COLUMN_2,这就是 VIEW_1的屏蔽作用。 再用存储过程举一个屏蔽行的例子。 CREATE PROCEDURE PROC_1 AS SELECT FROM TABLE_1 WHERE (COLUMN_11) GRANT EXECUTE ON PROC_1 TO USER_2 当用户查询时,只能看到COLUMN_1列值为1的行,其他行已经被PROC_1屏蔽掉了。总结 ●离开数据库的环境谈数据库的安全是无意义的,数据库安全必须与操作系统安全 及网络安全配套。 ●安全包含多个层面的内容,不能仅仅考虑技术问题,安全策略和管理意义重大。主要攻击技术 ●社会工程 ●口令破解 ●堆栈溢出攻击 ●拒绝服务攻击 ●推理攻击(Database-Specified) 主要安全机制 ●认证(鉴别) ●访问控制 ●隐通道控制 ●推理控制 ●审计 ●系统漏洞扫描 ●入侵检测技术 ●备份与恢复 ●数据加密技术