企业数据库是承载企业信息资产安全的重要介质和平台,即使在云和大数据时代,其仍然是信息安全工作者不可忽略的危险地带。由于关系数据库可以支持范围广泛的不同类型的应用程序和专利使用,他们通常在多个层次应用安全。安全的每一层被设计用于特定目的,并且可以用于提供授权规则。为了获得访问你最值得信赖的信息,用户必须在其中的一个或多个层次具有相应的权限。作为一名数据库或系统管理员,你的工作是要确保障碍是适当的高度——也就是说,你的安全模型同时考虑到了安全性和可用性。本文将介绍如何从服务器、网络、操作系统三个纬度考虑保障企业数据库安全。
服务器级安全
数据库应用程序是否安全,依赖于它所运行的服务器是否安全。因此,首先考虑数据库被托管的物理服务器上的安全设置是非常重要的。在规模较小,配置简单的组织,你可能只有一台机器需要确保安全。大型组织可能要安置多台服务器。这些服务器可能地理上是分布的,甚至是复杂的集群配置。
你应该采取保护服务器的第一步是确定哪些用户和应用程序应该能够访问它。现代数据库平台一般都是通过网络进行访问,并且大多数数据库管理任务可以远程执行。因此,除了物理维护数据库的硬件,没有必要有人能够直接物理访问一个数据库。这也是非常重要的物理保护数据库以防止非授权用户访问数据库文件和数据备份。如果非授权用户可以获得你服务器的物理访问,就更难以防止进一步的破坏。
网络级安全
如前所述,数据库在各自的操作系统平台上工作,为用户提供他们所需要的数据。因此,一般的操作系统和网络级的安全也适用于数据库。如果基础平台是不安全的,这对于数据库是显著的漏洞。因为它们被设计为网络应用程序,你必须采取合理步骤,以确保只有特定的客户端可以访问这些机器。
为保护数据库的一些标准“最佳实践”包括限制网络和网络地址直接访问计算机。例如,你可能会实施路由规则和包过滤,以确保你的内部网络上只有特定用户才可以与服务器进行通信。
举个例子,微软的SQL Server数据库平台使用默认的1433 TCP端口为客户端与数据库之间进行通信。如果你明确知道有没有必要让你网络的特定子网用户能够直接访问该服务器,那么阻止网络访问此TCP端口是明智的。这样做还可以防止恶意用户和代码(如病毒)从网络上攻击本机。另一个安全的做法是,改变服务器监听的默认端口。这可以很简单地通过使用图1所示的服务器网络实用工具来完成。
图1使用服务器网络工具来配置安装Microsoft SQL Server网络协议设置
当然,现实中很少数据库是单独工作的。一般情况下,这些系统常常由用户通过任务关键型应用程序直接访问。
保障数据库中信息安全的另一种方法是使用加密。大多数现代数据库支持客户端和服务器之间的加密连接。虽然这些协议有时会显著地增加处理和数据传输开销(特别是对于大量结果集或非常繁忙的服务器),但在某些情况下可能需要提高安全性。此外,通过使用虚拟专用网络(VPN),系统管理员可以确保敏感数据在传输过程中仍然受到保护。
根据实施, VPN解决方案可以提供的额外好处是使网络管理员能够无需客户端或服务器重新配置而实现安全。数据加密也是网络层以外领域的一个重要安全功能。通常情况下,数据库管理员将他们的数据备份,并将存储在文件服务器上。这些文件服务器可能不如作为承载数据“实时”副本的敏感数据库安全。要记住这是非常重要的,默认情况下,大多数关系数据库系统没有为备份提供非常强大的安全功能。在大多数情况下,数据库备份如实时数据库本身具有同等价值,因此加密,妥善的管理文件系统权限,以及相关的最佳实践应被遵循。最后,数据加密也能有效地在数据库中使用。许多类型的系统存储敏感数据,如信用卡号码和密码(用户可能使用几个不同的应用程序)。一个潜在的问题就在于这样一个事实:数据库开发人员和管理员常常需要为了做好自己的工作而拥有对这些数据库表单的全部访问权限。模糊数据的一种方法是加密储存在数据库表中的值。在这种方式中,授权用户将能够在需要时访问和修改数据,但只限于调用应用程序能够破译并使它可用的数据。对于某些数据库厂商,如Oracle,加密存储在数据库之外,若发生密钥丢失,表列中的数据也将丢失。
操作系统安全
在大多数平台上,数据库安全与操作系统安全携手并进。网络配置设置,文件系统权限,认证机制和操作系统的加密功能都可以在确保数据库保持安全中起到一定的作用。例如,在基于Windows的操作系统,只有NTFS文件系统提供了各级别的文件系统安全(FAT和FAT32分区不提供任何文件系统安全功能)。在使用集中目录服务基础架构环境中,系统管理员保持及时的权限设置,并确保尽快停用不必要的帐户是非常重要的。幸运的是,许多现代关系型数据库平台,可以利用它们运行在操作系统上的优势。以下我们将更详细讨论。
大多数数据库系统都要求用户输入一些验证信息才可以访问数据库。数据库安全的第一个层级可以基于一个标准的用户名和密码组合。或者,以提高可管理性和单点登录为目的,数据库系统可以与企业现有认证系统集成。例如,微软的Windows操作系统平台上运行许多关系数据库产品可以利用一个基于域的安全模型的安全功能。根据个人的用户帐户和组成员,他或她可以进行无缝的“通过验证” ,不需要重新键入用户名或密码。其中这种方法众多好处之一是可以集中管理用户帐户的能力。当一个用户帐户是在组织的目录服务的级别被禁用,则不需要采用进一步的步骤防止用户访问数据库系统。此外,组织越来越多地转向基于生物特征的身份验证(通过使用指纹识别,视网膜扫描,以及相关验证方法),以及智能卡和基于令牌的认证。数据库管理员可以利用这些机制所依托的操作系统,用于识别用户。因此,集成安全是强烈推荐的,无论从易用性还是易于管理性而言。
值得注意的是:实施一个新数据库的重要组成部分是在安装过程中或安装后立即更改默认密码(和帐户名,如果可能的话)。许多数据库管理员决定,他们将“稍后完成这个任务”,但是这通常意味着它将被忽视。使用默认的用户名和密码相当于给予了恶意用户入侵服务器的利刃。当你一旦安装新的服务器,就请务必花几分钟来关闭这个潜在漏洞。
服务器登录可以直接被授予权限。例如,用户可以被给予关闭或重启数据库或在服务器上创建一个新的数据库能力的权限。登入级权限一般适用于服务器作为一个整体,可以用来进行相关的备份和恢复,性能监控,以及数据库的创建和删除任务。在某些情况下,用户与服务器的登录权限可能能够授予这些权限给其他用户。因此,充分了解你所依靠的数据库平台的安全体系结构,对保证你的信息安全是非常重要的。
要记住另一个重要的考虑是,大多数关系型数据库平台允许操作系统管理员具有对数据库的许多隐性权限。例如,系统管理员可以启动和停止服务,并可以移动或删除数据库文件。此外,一些数据库平台自动授予系统管理员数据库的登录并允许全部权限。虽然某些情况下这可能是可取的,但要执行总体安全时必须牢记这点。在某些情况下,这一点很重要,并不是所有的系统管理员有权限访问存储在这些服务器上的敏感数据。以这种方式配置系统将是一个挑战,而实施的具体方法会根据正在运行操作系统和数据库平台。
大多数情况下,一台服务器的登录只允许一个用户连接到数据库。它不会隐性允许用户执行数据库内的任何特定的动作。