用户标识指用户或应用向数据库系统出示自己的身份证明,最常见的用户标识是输入用户名和密码。用户标识用于唯一标识进入数据库系统的每个用户或应用的身份,因此必须保证标识具有唯一性。用户鉴别是指数据库系统检查并验证用户身份合法性的过程。用户标识与鉴别的功能保证了只有合法的用户才可以进入数据库系统、访问数据库资源。
用户标识是系统用于鉴别声明用户为系统合法用户的口令字串。在数据库管理系统注册时会获得一个用户名,系统会首先确认提交访问请求的用户名是否合法,如果合法,则进一步鉴别用户身份。
用户鉴别是证明声明用户为系统合法用户的过程。大多数数据库管理系统采用用户名与口令的方法来监督用户身份。该方法简单易行,成本低,但用户名和口令易被窃取,因此还可以采取更复杂的方法。下面介绍下数据库常用的几种认证方式。
基于口令的认证是应用于数据库系统的最常见的初始的单向认证机制,它是一种根据已知事物验证身份的方法,也是一种最广泛研究和使用的身份验证法。在数据库系统中往往对口令采取一些控制措施,常见的有最小长度限制、次数限定、选择字符、有效期、双口令和封锁用户系统等。一般还需考虑口令的分配和管理,以及在计算机中的安全存储。
数据库一般以加密的方式在安全系统表中存储口令,攻击者要得到口令,必须知道加密算法和密钥:算法可能是公开的,但密钥是保密的。有的系统存储口令使用单向 Hash 值,攻击者即使得到密文也难以推断出通行字的明文。
要使用口令认证,在创建用户时必须关联口令。口令是用户在尝试连接时必须提供的,借此来防止非授权使用数据库,用户可以随时更改口令。口令机制实现起来简单,不需要额外的硬件支持,但是口令容易被遗忘、泄露,所以通常都会有以下管理策略:
l 传输加密;
l 账户锁定;
l 密码生命期和终止期;
l 口令历史;
l 密码复杂性检查。
智能卡(有源卡、IC 卡或 Smart 卡)作为个人所有物,可以用来验证个人身份,典型的智能卡主要由微处理器、存储器、输入输出接口、安全逻辑及运算处理器等组成。在智能卡中引入了认证的概念,认证是智能卡和应用终端之间通过相应的认证过程来相互确认合法性。在卡和接口设备之间只有相互认证之后才能进行数据的读写操作,目的在于防止伪造应用终端及相应的智能卡。
数字证书是认证中心颁发并进行数字签名的数字凭证,它实现实体身份的鉴别与认证、信息完整性验证、机密性和不可否认性等安全服务。数字证书可用来证明实体所宣称的身份与其持有的公钥的匹配关系,使得实体的身份与证书中的公钥相互绑定。
指纹认证是指使用指纹识别技术对用户身份进行确认,与口令认证相比,指纹有很多优点,如指纹不能被猜测、复制。对用户来说,用户不可能忘记、复制以及赠与指纹信息,使用方便、不易被滥用或受到社会工程方面的攻击。安全指纹认证利用数据库的加密机制,将用户注册的指纹模板信息加密存储在系统用户表中,加密密钥利用数据库的密钥管理机制结合用户口令进行安全保护。
根据被授权用户的个人特征来进行认证是一种可信度更高的验证方法,目前已得到应用的个人生理特征还包括语音声纹、DNA、视网膜、虹膜、脸型和手型等。
除了数据库内部提供的认证方法,也可以通过外部认证方法对数据库用户进行身份认证。外部认证是指数据库只保留用户账户,认证信息则由外部服务管理,某些机制的鉴别也可以由外部服务来完成。常见的外部认证机制主要有操作系统认证、SSL 认证和 RADIUS认证等。外部认证为数据库安全认证机制提供了多种选择,而使用外部认证可以减轻数据库系统管理的负担,同样达到和使用数据库认证一样的效果。
操作系统认证是指通过操作系统账户信息和认证机制对数据库用户进行身份认证。在默认情况下,只有在安全连接的保护下,数据库才允许用户使用操作系统认证,这样做是为了阻止恶意用户模仿操作系统用户通过网络远程访问操作系统。操作系统认证首先建立用户群并为每一个用户分配相应的数据库权限,再将具备数据库权限的用户加入此用户群中,并在数据库系统用户表中记录这些用户。
操作系统认证有很多优势。只需要被操作系统认证,用户可以更方便地连接数据库,不需要重新验证数据库的用户名和密码。而数据库也不需要存储、管理用户口令等信息,仅保留用户名即可。但是当使用操作系统认证方法时,系统必须满足以下条件:
l 在操作系统中,数据库管理员必须有新建和删除文件的权限;
l 一般的数据库用户不应该有新建和删除数据库相关文件的操作系统权限;
l 如果操作系统分派给用户数据库权限,则数据库安全管理员必须要有修改操作系统账户域的权限。