数据库的不安全因素:1.非授权用户对数据库的恶意存取和破坏 一些黑客(Hacker)和犯罪分子在用户存取数据库时猎取用户名和用户口令,然后假冒合法用户偷取、修改甚至破坏用户数据。 数据库管理系统提供的安全措施主要包括用户身份鉴别、存取控制和视图等技术。2.数据库中重要或敏感的数据被泄露 黑客和敌对分子千方百计盗窃数据库中的重要数据,一些机密信息被暴露。 数据库管理系统提供的主要技术有强制存取控制、数据加密存储和加密传输等。 审计日志分析3.安全环境的脆弱性 数据库的安全性与计算机系统的安全性紧密联系 计算机硬件、操作系统、网络系统等的安全性 建立一套可信(Trusted)计算机系统的概念和标准
TCSEC/TDI安全级别划分:四组(division)七个等级 D C(C1,C2) B(B1,B2,B3) A(A1) 按系统可靠或可信程度逐渐增高 各安全级别之间具有一种偏序向下兼容的关系,即较高安全性级别提供的安全保护要包含较低级别的所有保护要求,同时提供更多或更完善的保护能
用户身份鉴别的方法 1.静态口令鉴别 静态口令一般由用户自己设定,这些口令是静态不变的 2.动态口令鉴别 口令是动态变化的,每次鉴别时均需使用动态产生的新口令登录数据库管理系统,即采用一次一密的方法 3.生物特征鉴别 通过生物特征进行认证的技术,生物特征如指纹、虹膜和掌纹等 4.智能卡鉴别 智能卡是一种不可复制的硬件,内置集成电路的芯片,具有硬件加密功能
自主存取控制方法:通过 SQL 的GRANT 语句和REVOKE 语句实现 用户权限组成 数据对象 操作类型 定义用户存取权限:定义用户可以在哪些数据库对象上进行哪些类型的操作 定义存取权限称为授权
授权:授予与回收:1.GRANT GRANT语句的一般格式: GRANT <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型> <对象名>]… TO <用户>[,<用户>]... [WITH GRANT OPTION]; 语义:将对指定操作对象的指定操作权限授予指定的用户
2.REVOKE 授予的权限可以由数据库管理员或其他授权者用REVOKE语句收回 REVOKE语句的一般格式为: REVOKE <权限>[,<权限>]... ON <对象类型> <对象名>[,<对象类型><对象名>]… FROM <用户>[,<用户>]...[CASCADE | RESTRICT];
CREATE USER语句格式说明 只有系统的超级用户才有权创建一个新的数据库用户 新创建的数据库用户有三种权限:CONNECT、RESOURCE和DBA 如没有指定创建的新用户的权限,默认该用户拥有CONNECT权限。拥有CONNECT权限的用户不能创建新用户,不能创建模式,也不能创建基本表,只能登录数据库
1.角色的创建 CREATE ROLE <角色名> 2.给角色授权 GRANT <权限>[,<权限>]… ON <对象类型>对象名 TO <角色>[,<角色>]…3.将一个角色授予其他的角色或用户 GRANT <角色1>[,<角色2>]… TO <角色3>[,<用户1>]… [WITH ADMIN OPTION] 该语句把角色授予某用户,或授予另一个角色 授予者是角色的创建者或拥有在这个角色上的ADMIN OPTION 指定了WITH ADMIN OPTION则获得某种权限的角色或用户还可以把这种权限授予其他角色 一个角色的权限:直接授予这个角色的全部权限加上其他角色 授予这个角色的全部权限 4.角色权限的收回 REVOKE <权限>[,<权限>]… ON <对象类型> <对象名> FROM <角色>[,<角色>]… 用户可以回收角色的权限,从而修改角色拥有的权限 REVOKE执行者是 角色的创建者 拥有在这个(些)角色上的ADMIN OPTION
1.审计事件 服务器事件 审计数据库服务器发生的事件 系统权限 对系统拥有的结构或模式对象进行操作的审计 要求该操作的权限是通过系统权限获得的 语句事件 对SQL语句,如DDL、DML、DQL及DCL语句的审计 模式对象事件 对特定模式对象上进行的SELECT或DML操作的审计
2.审计功能 基本功能 提供多种审计查阅方式 多套审计规则:一般在初始化设定 提供审计分析和报表功能 审计日志管理功能 防止审计员误删审计记录,审计日志必须先转储后删除 对转储的审计记录文件提供完整性和保密性保护 只允许审计员查阅和转储审计记录,不允许任何用户新增和修改审计记录等 提供查询审计设置及审计记录信息的专门视图
3. AUDIT语句和NOAUDIT语句 AUDIT语句:设置审计功能 NOAUDIT语句:取消审计功能
用户级审计 任何用户可设置的审计 主要是用户针对自己创建的数据库表和视图进行审计 系统级审计 只能由数据库管理员设置 监测成功或失败的登录要求、监测授权和收回操作以及其他数据库级权限下的操作