数据库安全目录•一、数据库安全技术•二、Oracle数据库安全•三、SQLInjection安全问题一、数据库安全数据库安全是指保护数据库以防止非法用户的越权使用、窃取、更改或破坏数据。数据库的安全性含义•防止非法用户对数据库的访问•防止用户的非法操作数据库安全的内容物理层:重要的计算机系统必须在物理上受到保护,以防止入侵者强行进入或暗中潜入。人员层:数据库系统的建立、应用和维护等工作,一定要由政治思想上过硬的合法用户来治理。操作系统层:要进入数据库系统,首先要经过操作系统,假如操作系统的安全性差,数据库将面临着重大的威胁。网络层:由于几乎所有网络上的数据库系统都答应通过终端或网络进行远程访问,所以网络的安全和操作系统的安全一样重要,网络安全了,无疑对数据的安全提供了保障。数据库系统层:数据库系统应该有完善的访问控制机制,以防止非法用户的非法操作。为了保证数据库的安全,必须在以上所有层次上进行安全性控制。数据库系统安全的主要风险1、来自操作系统的风险:病毒、后门、数据库系统和操作系统的关联2、来自管理的风险:安全意识薄弱,安全管理措施不落实。3、来自用户的风险:用户帐号、作用和对特定数据库目标的操作许可4、来自数据库系统内部的风险:数据库安全的主要技术1、数据库加密对数据库中存储的重要数据进行加密处理,以实现数据存储的安全保护。2、存取管理技术(1).用户认证技术a.用户身份验证b.用户身份识别(2).访问控制a.按功能模块对用户授权b.将数据库系统权限赋予用户数据库安全的主要技术3、备份与恢复数据库备份常用的备份方法有:静态备份、动态备份和逻辑备份等;而数据库恢复则可以通过磁盘镜像、数据库备份文件和数据库日志三种方式来完成。4、建立安全的审计机制审计就是对指定用户在数据库中的操作进行监控和记录的一种数据库功能。二、oracle数据库安全ORACEL概述Oracle是关系型数据库管理系统。从总体上而言,Oracle数据库是业界安全性方面最完备的数据库产品。在数据库安全性的国际标准中,Oracle通过了14项标准的测试,是所有数据库产品中通过安全性标准最多、最全面的产品。Oracle在C2级的操作系统上(如商用UNIX,VMS操作系统),不仅满足NCSCC2级安全标准,而且已经正式通过了NCSCC2标准的测试。在B1级的操作系统上不仅满足NCSCB1级安全标准,而且已经通过了NCSCB1级标准的测试。Oracle数据安全控制机制用户管理权限管理角色管理表空间设置和配额用户资源限制数据库审计数据库的备份和恢复用户管理数据库初始用户SYS数据库中具有最高权限的DBA,可以启动、修改和关闭数据库,拥有数据字典SYSTEM一个辅助的DBA,不能启动和关闭数据库,但可以进行其他一些管理工作SCOTT口令tiger,用于测试网络的连接PUBLIC用户组为数据库中所有用户设定必需的对象权限和系统权限用户属性认证方式数据库身份认证外部身份认证全局身份认证默认表空间•DEFAULTTABLESPACE临时表空间TEMPORARYTABLESPACE表空间配额QUOTA…ON…概要文件限制用户对数据库系统资源的使用设置用户的口令管理策略账户状态是否过期是否锁定用户属性权限管理所谓权限就是执行特定类型SQL命令或访问其他用户的对象的权利。Oracle中用户权限的分类系统权限在数据库级别执行某种操作的权限,或针对某一类对象执行某种操作的权限。对象权限对某个特定的数据库对象执行某种操作的权限获取途径的权限直接授权间接授权系统权限管理系统权限分类对数据库某一类对象的操作能力,通常带有ANY关键字数据库级别的某种操作能力系统权限的授予语法结构:GRANTsys_list|role_list|PUBLIC[WITHADMINOPTION];示例:为PUBLIC用户组授予CREATESESSION系统权限GRANTCREATESESSIONTOPUBLIC;系统权限管理系统权限授予时需要注意的几点:只有DBA才应当拥有ALTERDATABASE系统权限。应用程序开发者一般需要拥有CREATETABLE、CREATEVIEW和CREATEINDEX等系统权限。普通用户一般只具有CREATESESSION系统权限。只有授权时带有WITHADMINOPTION子句时,用户才可以将获得的系统权限再授予其他用户,即系统权限的传递性。系统权限的回收语法结构REVOKEsys_priv_listFROMuser_list|role_list;注意事项多个管理员者授予用户同一个系统权限后,其中一个管理员回收其授予该用户的系统权限时,该用户不再拥有该系统权限。为了回收用户系统权限的传递性(授权时使用了WITHADMINOPTION子句),必须先回收其系统权限,然后再授予其相应的系统权限。如果一个用户获得的系统权限具有传递性(授权时使用了WITHADMINOPTION子句),并且给其他用户授权,那么该用户系统权限被回收后,其他用户的系统权限并不受影响。系统权限管理对象权限分类:对象权限的授权语法结构GRANTobj_priv_list|ALLON[schema.]objectTOuser_list|role_list[WITHGRANTOPTION示例:将scott模式下的emp表的SELECT、UPDATE、INSERT权限授予user1用户。GRANTSELECT,INSERT,UPDATEONscott.empTOuser1;对象权限管理对象权限的回收语法结构REVOKEobj_priv_list|ALLON[schema.]objectFROMuser_list|role_list;需要注意的几点多个管理员者授予用户同一个对象权限后,其中一个管理员回收其授予该用户的对象权限时,不影响该用户从其他管理员处获得的对象权限。为了回收用户对象权限的传递性(授权时使用了WITHGRANTOPTION子句),必须先回收其对象权限,然后再授予其相应的对象权限。如果一个用户获得的对象权限具有传递性(授权时使用了WITHGRANTOPTION子句),并且给其他用户授权,那么该用户的对象权限被回收后,其他用户的对象权限也被回收。对象权限管理角色管理角色:一系列相关权限的集合。角色的分类数据库系统预定义角色用户自定义角色角色的管理•定义、授权、修改、生效与失效、删除、查询利用角色对用户间接授权概要文件的作用限制用户对数据库和系统资源的使用以及进行用户口令管理资源限制级别会话级限制调用级限制资源限制类型CPU使用时间逻辑读每个用户的并发会话数用户连接数据库的空闲时间用户连接数据库的时间私有SQL区和PL/SQL区的使用概要文件管理启用或停用资源限制在数据库启动前启用或停用资源限制将数据库初始化参数文件中的参数RESOURCE_LIMIT的值设置为TRUE或FALSE在数据库启动后启用或停用资源限制使用ALTERSYSTEM语句修改RESOURCE_LIMIT参数值为TRUE或FALSE概要文件管理概要文件中参数资源限制参数•CPU_PER_SESSION•CPU_PER_CALL•CONNECT_TIME•IDLE_TIME•SESSIONS_PER_USER•LOGICAL_READS_PER_SESSION•LOGICAL_READS_PER_CALL•PRIVATE_SGA•COMPOSITE_LIMIT口令管理参数•FAILED_LOGIN_ATTEMPTS•PASSWORD_LOCK_TIME•PASSWORD_GRACE_TIME•PASSWORD_LIFE_TIME•PASSWORD_REUSE_MAX•PASSWORD_REUSE_TIME•PASSWORD_VERIFY_FUNCTION概要文件中参数数据库审计数据库是用来监视和记录用户在数据库中的活动。Oracle安全性的另一个重要领域。审记的方式:1、SQL审计命令通过AUDIT语句我们可以对成功或者不成功的特定对象的读取,更新操作进行审计。2、用对象触发器进行审计由客户自行开发放置于特定数据库对象上的触发器数据库审计3、用系统级触发器进行审计•当用户登录数据库或者离开数据库时,都可以通过自定义的触发器来记录用户名称,操作时间,终端标识号等信息。4、用LogMiner进行审计用LogMiner工具用于挖掘重作日志中的所有操作5、细精度审计(FGA)能够记录SCN号和行级的更改以重建旧的数据备份与恢复备份与恢复的基本概念备份的原则与策略恢复的原则与策略备份与恢复的必要性数据库备份与恢复的目的•数据库系统在运行中可能发生故障,轻则导致事务异常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中的数据部分或全部丢失。•数据库备份与恢复的目的就是为了保证在各种故障发生后,数据库中的数据都能从错误状态恢复到某种逻辑一致的状态。数据库的不一致状态•如果数据库系统在运行中发生故障,有些提交的事务对数据库所做的修改有一部分写入物理数据库,这时数据库就处于一种不正常的状态,或者说是不一致的状态。备份与恢复的基本概念备份分为物理备份和逻辑备份•物理备份,是指通过将重要的物理文件备份起来,以避免物理故障造成的损失。•逻辑备份,通常是SQL语句的集合。在实际应用中,应该以物理备份为主,逻辑备份作为补充。恢复类型完全恢复•从一个物理备份中恢复一个已丢失的数据文件的拷贝,然后根据从此刻起的所有归档日志文件与重做日志文件进行恢复,这样能够得到从备份以来发生的所有变化,这种恢复称为完全恢复。不完全恢复•如果归档日志文件有丢失的情况发生,那么数据库只能恢复到这个归档日志文件以前的状态,没有得到从备份以来的所有变化,这种恢复称为不完全恢复。物理备份物理备份分为冷备份与热备份。•冷备份又称为脱机备份。是在数据库保持关闭状态下,把数据库的配置文件、数据文件、控制文件、重做日志文件和归档日志文件复制到其他地方保存起来。•热备份又称为联机备份或者归档备份。是在数据库保持开放状态下对数据库进行备份,热备份的好处是不必关闭数据库,不影响数据库系统的正常运行,但是热备份的操作要比冷备份复杂。物理备份与恢复冷备份与恢复热备份与恢复不完全恢复物理备份方法冷备份与恢复冷备份•关闭数据库实例,用操作系统的实用工具备份数据文件。•如果没有启用归档模式,数据库不能恢复到备份完成后的任意时刻。关闭数据库,开始备份故障时刻备份恢复重装备份副本恢复丢失数据备份完成冷备份•如果启用归档模式,从冷备份结束后到出现故障这段时间的数据库恢复,可以利用联机日志文件和归档日志文件实现。冷备份步骤步骤:1、关闭数据库2、备份所有相关的数据库文件:数据文件控制文件Redo日志归档的Redo日志初始化文件冷备份的恢复非归档模式下恢复•关闭数据库•用备份文件覆盖原有文件•重新启动数据库热备份是备份数据库的最佳方法。系统工作在归档模式下。转到归档模式后,应立即进行热备份。热备份与恢复热备份热备份•当数据库正在运行时进行的数据库备份过程。当数据库处在可归档日志模式下,可使用热备份。•有些关键数据库应用系统可能需要数据库每天24小时,每周7天的运行,就应该使用热备份。热备份的优点:•备份时,数据库可以是打开的。•可用来全面恢复数据库(可用来在任何一点上恢复)。设置归档模式•SHUTDOWN•STARTUPMOUNT•ALTERDATABASEARCHIVELOG•ALTERDATABASEOPEN•ALTERSYSTEMARCHIVELOGSTART•ALTERSYSTEMSETlog_archive_dest=e:\archives•ALTERSYSTEMSETlog_archive_format=“oracle1%S.ARC热备份:备份数据文件•查询视图v$dataf