第九章数据库的安全性和完整性计算机系统的安全性计算机系统的安全性是指为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件和数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄漏等。计算机系统安全问题的分类技术安全类–技术安全是指计算机系统中采用具有一定安全性的硬件、软件来实现对计算机系统及其所存数据的安全保护,当计算机受到有意的或无意的攻击时仍能保证系统的正常运行,保证系统内的数据不增加、不丢失、不泄露。管理安全类–技术安全之外的,诸如软硬件意外故障、场地的意外事故、管理不善导致的计算机设备和数据介质的物理破坏、丢失等安全问题视为管理安全。政策法律类–指政府部门建立的有关计算机犯罪、数据安全保密的法律道德准则和政策法规、法令。可信计算机评测标准1985年,美国国防部制定了可信计算机评估标准TCSEC(TrustedComputerSystemEvaluationCriteria)。1991年4月,美国国家计算机安全中心NCSC发布《可信计算机系统评估标准关于数据库系统的解释TDI(TrustedDatabaseInterpretation),将TCSEC扩展到数据库管理系统。它们从安全策略、责任、保证、文档四个方面描述了安全级别划分的指标。可信计算机评测标准(续I)安全级别定义A1验证设计(VerifiedDesign)B3安全域(SecurityDomain)B2结构化保护(StructuralProtection)B1标记安全保护(LabeledSecurityProtection)C2受控存取保护(ControlledAccessProtection)C1自主安全保护(DiscretionarySecurityProtection)D最小保护(MinimalProtection)对数据库的安全威胁原则上,凡是造成对数据库内存储数据的非授权访问–读取,或非授权的写入–增加、删除、修改等,都属于对数据库的数据安全造成了威胁或破坏。另一方面,凡是影响授权用户以正常方式使用数据库系统的数据服务的,也称之为造成侵犯,对数据库的安全形成了威胁或破坏。对数据库的安全威胁的分类偶然地、无意地接触或修改DBMS管理下的数据–自然的或意外的事故–硬件或软件的故障/错误导致数据丢失–人为的失误,如错误的输入和应用系统的不正常使用。对数据库的安全威胁的分类(I)蓄意的侵犯和敌意的攻击–授权用户可能滥用其权力–信息的非正常扩散-泄密–由授权读取的数据推论出不应访问的数据–对信息的非正常修改–敌对方的攻击,内部的或外部的非授权用户从不同渠道进行攻击。–敌对方对软件和硬件的蛮力破坏–绕过DBMS直接对数据进行读写–病毒、特洛伊木马、天窗–通过各种途径干扰DBMS的正常工作状态,使之在正当用户提出数据请求时,不能正常提供服务。数据库的安全性数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改和破坏。它包括两个方面的含义:–向授权用户提供可靠的信息服务。–同时,拒绝非授权的对数据的存取访问请求,保证数据库管理下的数据的可用性、完整性和一致性,进而保护数据库所有者和使用者的合法权益。数据库安全性控制管理、技术、操作多个方面物理、网络、系统、应用多个层次设计、构建、运行、维护整个周期安全数据库安全性控制数据库安全控制涉及多个方面,它可分为内部安全控制和外部安全控制。–内部安全控制由计算机系统的软硬件实现。它必须与管理系统物理存取的适当的外部安全控制相配合。–外部安全控制解决内部安全控制不能解决的问题外部安全控制实体安全控制–划定安全区域,设置安全屏障和建立安全控制–评估安全风险,将涉密设备和材料放置在不同的安全区域人员、组织安全控制–建立安全管理机构和相应安全评估、管理制度–明确组织间的访问安全关系–明确明确组织内的安全角色和责任–建立人员聘用和考察制度,通过合同条款和保密协议,明确每个人的安全保密责任–建立责任追究制度外部安全控制过程安全控制–确定业务操作过程的安全需求–制订访问控制规则,并明确个人用户(或组用户)的权限–建立访问管理制度,确定用户、特权、密码等的管理措施和操作过程规定–明确用户在密码使用和设备安全等方面的责任–建立监测和审查制度–建立安全事故管理制度数据库安全性控制数据库系统的安全保护是由多个层次的构成的。本章只涉及由数据库本身提供的安全机制。网络DBMSOSDB用户标识和鉴别网络系统安全保护存取控制操作系统安全保护数据加密用户标识与鉴别用户标识和鉴别是系统提供的最外层安全保护措施。标识是指系统采用一定的方式标识其用户或应用程序的名字或身份。鉴别是指系统在用户或应用程序登录时判断其是否为合法的授权用户。应用系统、网络系统、操作系统、DBMS都可以进行用户标识和鉴别,通常的做法是采用用户名和口令。存取控制存取控制确保合法用户按照指定的权限使用DBMS和访问数据,而非法用户或不具有相关权限的用户则不能。存取控制机制主要包括两个部分:–定义用户权限,并将用户权限记录到数据字典中,形成安全规则或授权规则。其中,用户权限是指不同的用户对于不同的数据对象允许执行的操作权限。–合法权限检查,每当用户发出数据库操作请求后,DBMS根据数据字典中的安全规则进行合法权限检查,决定是否接受用户的操作请求。–用户权限定义和合法权限检查机制一起组成了DBMS的安全子系统。DAC与MAC存取控制可以分为:–自主存取控制(discretionaryaccesscontrol,简称DAC)。用户对于不同的数据对象拥有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可以将其拥有的权限转授给其他用户。–强制存取控制(mandatoryaccesscontrol,简称MAC)。每一个数据对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任一个对象,只有具有合法许可证的用户才可以存取。自主存取控制方法用户权限由两个要素组成,数据对象和操作类型。定义一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作,在数据库系统中称之为授权。数据对象操作类型模式概念模式外模式内模式建立、修改、检索建立、修改、检索建立、修改、检索数据表属性列查找、插入、删除、修改查找、插入、删除、修改SQL的数据控制当数据库管理员建立了一个新用户之后,必须授予它一定的权限,该用户才能使用数据库。在数据库系统中可以授予用户两类权限:–用户级权限用户级权限是数据库管理员为每个用户授予的特定权限。这种权限与整个数据库相关,与数据库中具体的关系无关。这种权限是对用户使用整个数据库的权限的限定。–关系级权限关系级权限是数据库管理员或数据库对象的拥有者为用户授予的与关系或视图有关的权限。这种权限是对用户使用关系和视图的权限的限定。角色与用户组为了管理数据库特权的方便,数据库还支持角色和用户组的概念。–角色是一组权限的集合,可以把它授予用户或其他角色。当把某个角色授予用户(或角色)或从用户(或角色)处收回时,就同时授予或收回了该角色代表的全部权限。–用户组是一组具有相同特性用户的集合。在授权或收回权限时,可以以用户组为单位进行。用户级权限与角色的授予与收回在SQL语言中,通过Grant语句为用户授予用户级权限或角色,其语法格式为:Grant用户级权限|角色[{,用户级权限|角色}]To用户名|角色|public[{,用户名|角色}][WithGrantOption]其中,public指数据库中的全部用户。WithGrantOption则允许被授权的用户将指定的用户级权限或角色授予其他用户。用户级权限与角色的授予与收回为用户授予用户级权限–GrantCreateSessiontoSCOTT;为用户授予角色–GrantConnecttoSCOTT;将权限授予角色–GrantCreatetabletoStudent_role;将角色授予角色–GrantResourcetoStudent_role;将角色授予用户组–GrantStudent_roletoPUBLIC;用户级权限与角色的授予与收回当要取消一个用户或角色的权限时,可以使用REVOKE语句将其收回:Revoke用户级权限|角色[{,用户级权限|角色}]From用户名|角色|public[{,用户名|角色}]例:取消用户SCOTT的CreateTable权限。–RevokeCreateTableFromSCOTT;关系级权限的授予与收回每一个用户都拥有自己定义的数据库对象如(基本表、视图等),除了他自己和拥有DBA权限的用户以外,其他用户都不能访问这些数据库对象。如果想和其他用户共享其中一部分数据库对象,就必须将这些数据库对象上的部分或全部权限授予其他用户。其语法格式为:GrantALL|权限[{,权限}]On表名|视图名[{,表名|视图名}]To{用户[{,用户}]|public}[WithGrantOption]关系级权限的授予与收回授予用户Liming在Student表上的Select和Insert权限。–GrantSelect,UpdateOnStudentToLimingWithGrantOption;Liming授予用户SCOTT在Student表的Sno列上的Update权限。–GrantUpdate(Sno)OnStudentToSCOTT;将Student表上的全部权限授予全体用户。–GrantALLOnStudentToPUBLIC;关系级权限的授予与收回回收权限–RevokeALL|表级权限[{,表级权限}]On表名|视图名[{,表名|视图名}]From{用户[{,用户}]|PUBLIC}–例:收回Liming对Student表的全部权限RevokeALLOnStudentFromLiming;–收回权限时,若该用户已将权限授予其它用户,则也一并收回。用户权限定义表用户名数据对象名允许的操作类型王平关系StudentSELECT张明霞关系StudentUPDATE张明霞关系CourseALL张明霞Sc.GradeUPDATE张明霞Sc.SnoSELECT张明霞Sc.CnoSELECT利用视图实现安全控制为不同的用户定义不同的视图,可以将用户对数据的访问限制在一定的范围内。例:限制王平只能检索Student表中计算机系学生的学号和姓名。–CreateViewCS_StudentAsSelectSno,SnameFromStudentWhereSdept=‘CS’;–GrantSelectOnCS_StudentToWangping;强制存取方法主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程。客体是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等对于主体和客体,DBMS为他们每个实例(值)指定一个敏感度标记。敏感度表被分为若干级别,如绝密、机密、可信、公开等。主体的敏感度标记称为许可证级别,客体的敏感度标记称为密级。强制存取方法当某一主体以某一许可证级别注册入系统时,系统要求他对任何客体的存取必须遵循如下规则:–仅当主体的许可证级别大于或等于客体的密级时,该主体才能读取相应的客体;–仅当主体的许可证级别等于客体的密级时,该主体才能写相应的客体;审计和数据加密审计功能把用户对数据库的所有操作都自动记录下来放入审计日志中。DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。数据加密是防止数据库中数据在存储和传输中失密的有效手段。加密的基本思想是根据一定的算法将原始数据(明文)变换为不可识别的格式(密文),从而使得不知道解密算法的人无法获知数据的内容。统计数据库安全性统计数据库中的数据分为两类,一类是微数据描述现实世界的实体、概念或事件的数