数据库安全控制策略概述安全性是评价一个数据库的重要指标。Oracle数据库从三个层面采取安全控制策略:系统安全。在系统层面控制数据库的访问和使用机制,包括有效的用户名和密码,你是否可以连接到数据库,用户可以进行哪些系统操作等;数据安全。在数据库模式对象级别控制数据库访问和使用机制。用户要操作某个模式对象,必须有操作权限;网络安全。Oracle通过分发钱包、数字证书、SSL安全套接字和数据密钥来保证数据库网络传输的安全。数据库安全可以从以下几个方面进行管理:用户账号管理用户身份认证管理。Oracle提供了多层次的数据库用户身份认证方式,包括系统、数据库、网络三种身份认证方式;权限和角色管理。通过管理权限和角色,限制用户对数据库的访问和操作。数据加密管理。通过数据加密保证网络传输的安全。表空间设置和配额。通过设置用户的存储表空间、临时表空间以及用户在表空间上使用的配额,可以有效地控制用户使用数据库存储空间的用户资源限制。通过配置文件设置,您可以使用数据库审计来限制用户对数据库资源的使用。监控和记录数据库中的活动,包括审计所有SQL语句、审计SQL权限、审计模式对象和审计网络活动。下面将一一讨论数据库安全管理方法。用户管理用户是数据库的用户和管理者。Oracle通过设置用户和安全属性来控制用户对数据库的访问。Oracle用户有两种,一种是创建数据库时系统预定义的用户,另一种是DBA根据应用创建的用户。1、预定义用户创建oracle时创建的用户称为预定义用户。预定义用户按功能分为3类:管理员用户:包括SYS、SYSTEM、SYSMAN、DBSNMP等。SYS是数据库中最高权限的管理员,可以启动、关闭、修改数据库,具有数据字典;SYSTEM是辅助数据库管理员,不能启动和关闭数据库,但可以执行一些管理任务,如创建和删除用户;SYSMAN是OEM的管理员,可以对OEM进行配置和管理;DBSNMP用户是OEM代理,用于监控数据库。以上用户均不可删除。Exampleschemeusers:在安装Oracle或使用odbc创建数据库时,如果选择“ExampleScheme”,则会创建一些用户,并在这些用户对应的schema中生成一些数据库应用案例。这些用户包括:BI、HR、OE、PM、IX、SH等。默认情况下,这些用户被锁定且密码过期。内置用户:有一些Oracle特性或Oracle组件需要自己单独的模式,因此为它们创建了一些内置用户。如APEX_PUBLIC_USER、DIP等。默认情况下,这些用户被锁定,密码过期。此外,还有两个特殊用户SCOTT和PUBLIC。SCOTT是用来测试网络连接的用户。PUBLIC实际上是一个用户组。数据库中的任何用户都属于这个用户组。如果要授予某个权限只需要授权给PUBLIC即可。2.用户属性创建用户时,必须使用安全属性对用户进行限制。用户的安全属性主要包括:用户名:在同一个数据库中,用户名是唯一的,不能与角色名相同;用户身份认证:Oracle采用多种方式进行身份认证,如数据库认证、操作系统认证、网络认证等;默认表空间:当用户创建一个数据库对象时,如果没有明确指明存储在哪个表空间中,系统会自动将对象存储在当前用户的默认表空间中。在Oracle11g中,如果没有为用户指定默认表空间,系统会使用数据库的默认表空间作为用户的默认表空间;临时表空间:临时表空间分配和默认表空间类似,如果没有明确指定,系统会使用数据库的临时表空间作为用户的临时表空间;表空间配额:表空间配额限制了用户在永久表空间中可以使用的存储空间的大小。表空间没有配额,可以为每个用户指定表空间的配额,也可以授予用户UMLIMITEDTABLESPACE系统权限,使用户不受表空间配额的限制。无需分配临时表空间配额;profile:每个用户必须有一个profile,从会话级别和调用级别限制用户对数据库系统资源的使用,同时设置用户的密码管理策略。如果没有为用户指定配置文件,Oracle将自动为用户指定DEFAULT配置文件;设置用户的默认角色账户状态:创建用户时,可以设置用户的初始状态,包括密码是否过期,账户是否被锁定。通过数据字典dba_users可以查询到每个用户的属性(这里只截取前几列):3.创建用户创建用户的语法如下:其中:-user_name:新创建的用户的名字创建用户;-IDENTIFIED:指定用户认证方式;-BYpassword:采用数据库身份认证,password为用户密码;-EXTERNALY:指定用户采用外部认证,其中:①AS'certificate_DN'指定用户使用ssl外部身份认证;②AS'kerberos_principal_name'指定用户使用kerberos外部身份认证;-GLOBALLYAS'directory_DN':指定用户使用全局认证;-DEFAULTTABLESPACEtablespace_name:设置用户的默认表空间;-TEMPORARYTABLESPACE表空间名称|tablespace_group_name:设置用户的临时表空间/表空间组;-QUOTAnK|M|UNLIMITEDONtablespace_name:指定用户在特定表空间上的配额;-PROFILEprofile_name:为用户指定profile;-PASSWORDEXPIRE:指定用户密码过期,系统会在用户首次登录时要求修改密码;-ACCOUNTLOCK|UNLOCK:指定用户处于锁定/解锁状态,默认不锁定。4.修改用户。使用ALTER修改用户。该语句与CREATEUSER基本相同。唯一不同的是多了一个DEFAULTROLE选项,用于指定用户的默认角色:其中:-role_list:指定角色列表;-ALL:指定所有角色;-EXCEPTrole_list:role_list指定的角色以外的角色;-NONE:没有指定角色。5.锁定和解锁用户当用户被锁定时,他不能登录数据库,但该用户的所有数据库对象仍然可以使用,当用户被解锁时,用户可以正常连接数据库。在Oracle中,当一个帐户不再使用时,可以将其锁定。通常,不使用的帐户可以被锁定而不是删除。例子,锁定和解锁用户scott:6.删除用户使用dropuser删除一个用户,基本语法是:如果用户有数据库对象,必须使用CASCADE选项,Oracle先删除用户的数据库对象,然后删除用户。7、查询用户信息在Oracle中,包含用户信息的数据字典如下:资源限制和密码管理在数据库中,用户资源限制和用户密码管理是通过数据库配置文件(PROFILE)实现的。每个数据库用户都必须有一个配置文件,通常DBA会把用户分成几类,为每一类用户创建一个单独的配置文件。配置文件不是一个特定的文件,而是存储在SYS模式中多个表中的信息集合。1、资源限制配置文件通过一系列资源管理参数,从会话级别和调用级别限制用户使用的资源。会话资源限制是限制一个用户在一个会话期间可以使用的资源,调用资源限制是限制一条SQL语句在执行过程中可以使用的资源总量。资源限制的参数如下:CPU使用时间:一次会话或调用所使用的CPU总量;logicalread:一次session或call中读取的物理磁盘和逻辑内存数据块的总量;每个用户的并发会话数;用户连接到数据库的最长时间;等下面是scott用户的资源限制信息:2.密码管理oracleprofile数据库密码管理的主要参数如下:FAILED_LOGIN_ATTEMPTS:限制用户失败的次数,一旦达到失败次数,账户锁定;PASSWORD_LOCK_TIME:用户登录失败后账户被锁定的时长;PASSWORD_LIFE_TIME:用户密码的有效天数。设置天数后,密码到期,需要重新设置新密码;下图是scott用户的密码管理参数设置信息:3.查询配置文件信息在Oracle11g中,包含配置文件信息的数据字典如下:权限管理在Oracle数据库中,用户权限主要分为两类:系统权限和对象权限。系统权限是指基本对数据库进行某种操作的权限,或者说是对某一类对象进行操作的权限。对象权限主要是指对数据库对象进行某些操作的权限,如增删(删除数据)、查表、修改表等。一、系统权限(一)系统权限概述在Oracle11g中,系统权限一共有200多种,所有的系统权限都可以通过数据字典system_privilege_map获取。(2)系统权限的授予为用户授予系统权限的SQL语法为:其中:-system_privilege_list:系统权限列表,以逗号分隔;-ALLPRIVILEGES:所有系统权限;-user_name_list:用户列表,以逗号分隔;-role_list:角色列表,以逗号分隔;-PUBLIC:授权数据库中的所有用户;-WITHADMINOPTION:允许系统权限接收者将权限授予其他用户。授予用户系统权限时需要注意:只有DBA用户才有alterdatabase;应用开发者一般需要有创建表、创建视图、创建索引等系统权限;普通用户一般只需要有createsession权限即可。使用withadminoption子句授权用户时,用户可以将获得的权限授予其他用户。(3)系统权限的回收回收用户系统权限的SQL语法如下:回收用户系统权限时注意以下三点:多个管理员授予同一个用户相同的权限,其中一个管理员撤销了授予用户的系统权限。用户将不再拥有系统权限;为了回收用户系统权限的传递性(授权时使用admin选项),必须先撤销系统权限,然后重新授予用户权限''如果用户的权限具有传递性,并授权其他用户,则该用户的系统权限被撤销后,其他用户的系统权限不受影响;2.对象权限对象权限是指对特定模式对象的操作权限。数据库模式的对象所有者拥有该对象的所有对象权限,对象权限的管理实际上是对象所有者对其他用户操作该对象的权限的管理。在Oracle数据库中,不同类型的对象具有不同的对象权限,有些对象没有对象权限,只能通过系统权限进行管理,如集群、索引、触发器、数据库链接等。(1)对象权限的授予在Oracle数据库中,用户可以直接访问同名模式下的数据库对象。如果他们需要访问其他模式下的数据库对象,他们需要有相应的对象权限。授予对象权限的SQL语法为:其中:-object_privilege_list:对象权限列表,以逗号分隔;-ALLPRIVILEGES:所有特权;-[schema.]object:需要授权的对象;-user_name_list:用户列表,以逗号分隔;-role_list:角色列表,以逗号分隔;-PUBLIC:所有用户(2)回收对象权限回收对象权限的SQL语法为:其中:-CASCADECONSTRAINTS:在回收REFERENCE对象权限或回收ALLPRIVILEGES时,使用权限创建的REFERENCES外键约束删除对象;-FORCE:回收表中使用的用户自定义对象类型的EXECUTE权限时,必须指定FORCE关键字。对象权限回收需要注意以下三点:多个管理员将同一个对象权限授予同一个用户。某管理员收回对象权限后,该用户不再拥有该对象权限;为了回收用户对象权限的传递性,必须先撤销对象权限,然后再将对象权限重新分配给用户;如果一个用户的对象权限是可传递的,并且已经授权给其他用户,那么在该用户的对象权限被撤销后,其他用户的对象权限也会被恢复。(值得注意的是,本文与系统权限的传递回收不一样)。3、查询权限信息角色管理如果我们直接给每个用户授予权限,将是一项庞大繁琐的工作,也不方便DBA管理。通过采用角色,使得:权限管理更方便。为多个用户分配角色,实现不同用户的相同授权。如果要修改这些用户的权限,只需要修改角色即可;可以激活和停用角色的权限。允许DBA方便的选择是否给用户分配某个角色;为了提高性能,角色的使用减少了数据字典中授权记录的数量,通过关闭角色减少了语句执行时对权限的确认。数字。用户、角色、权限关系图由于个人接触的数据库用户较少,没有单独创建角色,所以角色的创建、修改、删除、激活、禁用、授予、回收不再一一说明,只要知道如何查询角色信息就足够了。在Oracle中,包含角色的数据字典如下:
