当前位置: 首页 > 科技观察

关于Oracle数据库的安全管理

时间:2023-03-14 12:33:35 科技观察

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