数据库的安全性主要通过用户、权限和角色进行管理。
一 用户管理
1 数据库用户账户
要访问数据库,用户必须指定有效的数据库用户账户,而且还要根据该用户账户的要求成功通过验证,每个数据库用户都有一个唯一的数据库账户。Oracle建议这样做是为了避免潜在的安全漏洞以及为特定的审计活动提供有意义的数据。但是,有时候若干用户会共享一个公用数据库账户,每个用户账户都包括以下项:
- 唯一的用户名:用户名不能超过30个字节,不能包含特殊字符,而且必须以字母开头;
- 验证方法:最常见的验证方法是口令,但是Oracle 11g支持口令、全局和外部验证方法;
- 默认表空间:如果用户未指定其他表空间,则可在这个位置创建对象。请注意,具有默认表空间并不意味着用户在该表空间具有创建对象的权限,也不意味这用户在该表空间中具有用于创建对象的空间限额,这两项需要另外授权;
- 临时表空间:这是实例代表用户创建临时对象(如排序和临时表)的位置,临时表空间没有限额;
- 用户概要文件:分配给用户的一组资源和口令限制;
- 初始使用者组:有资源管理器使用;
- 账户状态:用户只可访问“打开”的账户。
方案:方案是数据库用户拥有的数据库对象的集合。方案对象是直接引用数据库数据的逻辑结构,方案对象包括表、视图、序列、存储过程、同义词,索引和数据库链接等结构。通常,方案对象包括应用程序在数据库中创建的所有内容。
2 预定义管理账户
默认情况下,sys和system账户被授予DBA角色,另外,sys账户还具有带admin option的所有权限并拥有数据字典。要连接到sys账户,对于数据库实例,必须使用as sysdba子句,对于ASM实例,必须使用as sysasm子句。授予了sysdba权限的任何用户都可以通过使用as sysdba子句连接到sys账户。仅允许授予了sysdba、sysoper或sysasm权限的特权用户启动和关闭实例。system账户不具有sysdba权限,system还被授予aq_administrator_role和mgmt_user角色。sys和system账户是数据库所必须的账户,不能将其删除。
Oracle Enterprise Manager的管理代理使用dbsnmp账户来监视和管理数据库,sysman账户用于执行OEM管理任务,dbsnmp和sysman都没有sysdba权限。
3 创建用户
给每一个用户分配默认表空间和临时表空间,如果用户在创建对象时未指定表空间,则将在分配给对象所有者的默认表空间中创建对象,这样,可以控制用户对象的创建位置,如果为选择默认表空间,则使用系统定义的默认永久表空间,对于临时表空间也是如此,如果未指定表空间,则使用系统定义的临时表空间。
4 验证用户
验证表示验证要使用数据库、资源或应用程序的默认或某事物的身份。通过对该身份进行验证可建立一种信任关系,以进行进一步的交互。通过验证可将访问和操作与特定的身份联系起来,从而增强安全性。完成验证后,授权进程会允许或限制该实体能够执行的访问和操作的级别。
创建用户时,必须确定要使用的验证方法。
- 口令验证:又称为Oracle DB验证。创建的每一个用户都有一个关联口令,用户尝试建立连接时,必须提供这个口令;
- 外部验证:使用数据库外部(操作系统、Kerberos或Radius)的方法执行的验证;
- 全局验证:使用Oracle高级安全选件时,可使用Oracle Internet Directory通过全局验证来识别用户。
5 管理员验证
操作系统安全性:在Unix和Linux中,DBA默认情况下属于oinstall操作系统组,该组具有创建和删除数据库文件所需的权限;
管理员安全性:只有在使用口令文件或操作系统权限进行验证后,才允许授权用户sysdba、sysoper和sysasm建立连接。如果使用操作系统验证,则数据库不适用提供的用户名和口令。当口令文件不存在,或者该文件中不存在提供的用户名和口令,或者提供用户名和口令时,将使用操作系统验证。默认情况下,Oracle Database 11g中的口令文件使用区分大小写的口令。
但是,如果成功使用口令文件成功完成了验证,则使用用户名记录连接,如果使用操作系统成功完成了验证,则表示这是一个connect / 连接,这种连接不记录具体用户。
6 概要文件