1、为了理解本文描述的概念,您应该了解数据库的基础概念和操作系统安全特性。系统需求本教程的例子基于运行在 UNIX 操作系统(具有本机安全特性)上的 IDS 11.50。不过,本教程提供的概念和信息与运行在任意分布式平台上的 IDS 相关。数据库安全在当今,数据库安全是极其重要的。您的数据库可能允许客户通过 Internet 购买产品,或者包含用于预测商业走势的历史数据;不管哪种情况,您的公司都需要一个健全的数据库安全计划。数据库安全计划应该确定: 谁可以访问数据库服务器实例和数据库 从哪里以什么方式验证用户密码 用户的授权级别 用户能够运行的命令 用户能够读取或修改的数据 用户能够创建、修改或删
2、除的数据库对象 IDS 安全性机制IDS 为实现数据库安全计划提供 3 个主要的机制:身份验证、授权和特权。 身份验证:是指 IDS 验证用户的身份的过程。IDS 身份验证在验证用户 ID 和密码时与底层操作系统的安全特性密切合作。IDS 还可以在验证用户身份方面与安全协议合作,比如 PAM 和 Kerberos。 授权:涉及到确定用户或组能够执行的操作,或能够访问的数据对象。用户执行高级数据库和实例管理操作的能力取决于授予他们的权限。 特权:比授权的粒度更细,可以授予用户或组。特权帮助定义用户能够创建和删除的对象。特权还可以定义用户能够用于访问对象(比如表、视图、索引和包)的命令。IDS 支
3、持基于标签的访问控制 (LBAC),它提供更细粒度的控制,甚至可以控制谁有权限访问某个行或列。IDS 还为更高级别的安全性提供加密。IDS 中的身份验证机制身份验证是确认用户或应用程序的身份的机制。数据库服务器仅允许身份得到确认的用户访问数据,如 图 1 所示。IDS 采用客户机-服务器架构,其中客户机可以是远程用户或本地用户。图 1. 身份验证流程本地连接是指客户机和位于相同机器上的服务器之间的连接。远程连接是指客户机和位于不同机器上的服务器之间的连接。IDS 支持传统的身份验证机制,即用户需要提供用户 ID 和密码才能连接到数据库。IDS 还支持其他身份验证机制,比如插入式验证模块(Plu
4、ggable Authentication Module,PAM)。传统身份验证IDS 服务器在连接方面遵循 UNIX 安全性需求。在传统的身份验证中,IDS 通过操作系统 API 验证用户的 UNIX 或 Windows 登录 ID 和密码。插入式身份验证模块插入式身份验证模块 (PAM) 是一个框架,它允许用户开发和实现定制的身份验证机制,同时不对应用程序进行任何修改。IDS 支持的模式包含密码模式和询问响应模式。在密码模式下,用户仅凭密码就能够通过身份验证。在询问响应模式下,服务器将提出一个问题,而客户机需要发送一个响应。仅当客户机发送正确的响应时,它才能够访问数据库。配置 IDS 以使
5、用 PAM下面是将 IDS 配置为使用 PAM 模块的基础步骤(有些细节是特定于平台的,但是概念是通用的):1. 定义 PAM 模块:标识或创建需要使用的 PAM 模块。例如,您可以使用 pam_unix/pam_aix/pam_unix_auth,它进行传统的基于网络文件的身份验证。这个共享对象通常位于独立于平台的路径(比如 Solaris 上的 /usr/lib/security/pam_unix.so)。如果您亲自创建模块,则要把它复制到正确的位置。2. 配置 PAM 模块:在 $INFORMIXDIR/etc/sqlhosts 文件添加选项字段,表明将使用 PAM 身份验证。清单 1
6、显示如何配置密码类型的模块:清单 1. PAM 的 sqlhosts 条目 #Server-name service machinename portno Optionsdemo_on ontlitcp demohost 1111 s=4,pam_serv=(login),pamauth=(password)Where login is name of the PAM module set the PAM configuration filesqlhosts entry for a challenge-type moduledemo_on ontlitcp demohost 1111 s=4,
7、pam_serv=(xxx),pamauth=(challenge)Note: Here xxx is a challenge-oriented module which will have the required entry in the PAM configuration file.单点登录 (SSO)单点登录是一个身份验证特性,只要用户登录客户机的操作系统之后就不再需要提供用户名和密码。IDS 使用 Kerberos 5 安全协议实现了对单点登录(SSO)的支持。使用 SSO 时,DBMS 和其他支持 SSO 的服务在用户首次登录到客户机系统(或 Windows 中的域)时进行身份验证
8、。Kerberos 实现验证用户凭证。Kerberos 身份验证生成一组用于储存登录凭证的密匙。当用户操作试图访问 Dynamic Server 数据库时,票据授予票据(ticket-granting ticket,TKT)交换允许不提示登录访问数据库。SSO 还支持机密性和完整性服务,因此 SSO 环境不需要具有其他 Dynamic Server CSM。启用机密性之后,对于通过 SSO 验证的用户,向其传入或其输出的数据都经过加密,并且仅使用授权凭证登录的用户能够查看这些数据。完整性服务确保在用户和 DBMS 之间发送的数据没有在传输过程中被篡改。将 IDS 配置为使用 SSO 需要大量特
9、定于平台的设置。不过,对于基础考试,您仅需理解如何设置 sqlhosts 文件和 concsm.cfg 文件以使用 SSO。这在 “Encryption Support in IDS” 的 Generic Security Services Communications Support Module (GSSCSM) 主题下讨论。IDS 中的访问控制可以通过多种方法使用 SQL 语句保护对数据的访问。首先,本教程描述数据库服务器中用于控制访问 SQL 对象的各种访问控制机制。接着描述列级别的加密特性,该特性用于加密表中指定的列上的数据。IDS 中包含的访问控制机制大体分为两类,即自主访问控制(
10、DAC)和基于标签的访问控制(LBAC)。在数据库服务器中使用特权和角色来实施 DAC。LBAC 的实施是使用安全标签来实现的。数据库管理员(DBA)在保护敏感数据免受非授权用户访问方面起到关键作用。SQL 提供在不同粒度级别上实现数据保护的方法。注意,DBA 与数据库系统管理员(DBSA)是不同的。DBSA 的角色是维护服务器,而 DBA 的角色是创建和维护数据库。自主访问控制自主访问控制(Discretionary access control,DAC)是主要的访问控制机制,它支持使用特权和角色访问 SQL 对象。在数据库服务器中,使用 DAC 保护的对象包括数据库、表、列、视图、类型、例
11、程和语言。DAC 不能用于行级别的保护;因此,保护行要使用 LBAC。通过保护这些对象以及给授权用户授予访问这些对象的特权可以实现高效的访问控制。没有所需权限的用户不能执行访问这些对象的查询。在典型的 IDS 安装中,有大量的用户访问系统、执行查询和修改数据。为所有用户创建必要的特权会使管理员角色的工作过于琐碎繁杂。另外,公司的策略可能为用户规定不同的特权,这取决于他们执行的工作。这让管理员的责任更加重大,因为必须根据最新的特权策略授予或撤销特权。服务器中的角色功能减轻了管理员的压力。基于角色的访问控制(RBAC)将特权合并到角色中然后再将角色分配给用户,从而扩展了基于特权的访问。受保护的 S
12、QL 对象DBMS 中的以下对象需要用户具有特定的授权或特权才能访问: 数据库 表 表中的列 片段 视图 用户定义类型 (UDT) 例程 语言 用户提交的大部分 SQL 查询都与一个或多个这些对象进行交互。在这些对象上为用户授予的特权确定用户能够执行所需的操作。图 2 显示了在 SQL 查询执行路径上进行的特权检查。首先,检查数据库特权。然后检查与用户查询相关联的 SQL 对象上的特权。用户特权基于显式地授予用户的特权、用户当前角色具有的特权和公共特权。图 2. SQL 查询中的特权检查表 1 总结了特定 SQL 对象可用的特权:表 1. SQL 对象及其特权SQL 对象特权DatabaseC
13、onnect, resource, DBATableSelect, update, insert, delete, index, alter, referencesColumnSelect, update, referencesFragmentInsert, update, deleteViewSelect, insert, delete, updateSequenceSelect, alterUDTUsage, underRoutineExecuteLanguageUsage每个 SQL 对象都与某个特权相关联,并且每个特权都与一组功能相关联。当用户被授予某个特权时,他就有权限执行该 SQL 对象上的功能。IDS 提供 GRANT 和 REVOKE 语句来授予或删除特权。GRANT 和 REVOKE 语句SQL 提供 GRANT 和 REVOKE 语句来向用户授予特权或回收特权。清单 2 显示了数据库对象上的 GRANT 和 REVOKE 语句的语法。这个例子中的特权表示 CONNECT、RESOURCE 或 DBA 特权之一。“user-list” 表示用户列表,包括 PUBLIC。清单 2. 语法:GRANT/REVOKE 语句 GRANT privilege TO user-listREVOKE privilege FROM user-list
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1