第 2 部分安全性.docx
《第 2 部分安全性.docx》由会员分享,可在线阅读,更多相关《第 2 部分安全性.docx(22页珍藏版)》请在冰豆网上搜索。
![第 2 部分安全性.docx](https://file1.bdocx.com/fileroot1/2022-10/29/faabb8fe-e860-4c4c-a97d-977d756529ad/faabb8fe-e860-4c4c-a97d-977d756529ad1.gif)
第2部分安全性
开始之前
关于本系列
您正在考虑参加InformixDynamicServer(IDS)基础认证考试555吗?
如果是的话,那么请阅读本文。
这个免费的共包含9篇教程的教程系列讨论了IDS认证准备的所有基础方面——在参加认证考试之前,您必须理解这些主题。
即使您还不打算马上参加认证考试,这个教程系列也是了解IDS11.50的新特性的好材料。
这个认证将考察关于IDS11.50管理的入门级知识,包括基础SQL、如何安装IDS11.50、如何创建数据库和数据库对象、安全性、事务隔离、备份和恢复流程,以及数据复制技术。
这些教程为考试的每部分打下了坚实的基础。
不过,您不能仅使用这些教程作为唯一的考试准备材料。
回页首
关于本教程
通过本教程了解IDS11.50的安全特性,包括11.50身份认证、授权和特权。
这个帮助您准备IDS11.50基础考试555的教程系列共包含9篇教程,本教程是第2篇。
本教程主要讨论测试的第2部分的目标。
回页首
先决条件
为了理解本文描述的概念,您应该了解数据库的基础概念和操作系统安全特性。
回页首
系统需求
本教程的例子基于运行在UNIX®操作系统(具有本机安全特性)上的IDS11.50。
不过,本教程提供的概念和信息与运行在任意分布式平台上的IDS相关。
数据库安全
在当今,数据库安全是极其重要的。
您的数据库可能允许客户通过Internet购买产品,或者包含用于预测商业走势的历史数据;不管哪种情况,您的公司都需要一个健全的数据库安全计划。
数据库安全计划应该确定:
∙谁可以访问数据库服务器实例和数据库
∙从哪里以什么方式验证用户密码
∙用户的授权级别
∙用户能够运行的命令
∙用户能够读取或修改的数据
∙用户能够创建、修改或删除的数据库对象
IDS安全性机制
IDS为实现数据库安全计划提供3个主要的机制:
身份验证、授权和特权。
∙身份验证:
是指IDS验证用户的身份的过程。
IDS身份验证在验证用户ID和密码时与底层操作系统的安全特性密切合作。
IDS还可以在验证用户身份方面与安全协议合作,比如PAM和Kerberos。
∙授权:
涉及到确定用户或组能够执行的操作,或能够访问的数据对象。
用户执行高级数据库和实例管理操作的能力取决于授予他们的权限。
∙特权:
比授权的粒度更细,可以授予用户或组。
特权帮助定义用户能够创建和删除的对象。
特权还可以定义用户能够用于访问对象(比如表、视图、索引和包)的命令。
IDS支持基于标签的访问控制(LBAC),它提供更细粒度的控制,甚至可以控制谁有权限访问某个行或列。
IDS还为更高级别的安全性提供加密。
IDS中的身份验证机制
身份验证是确认用户或应用程序的身份的机制。
数据库服务器仅允许身份得到确认的用户访问数据,如图1所示。
IDS采用客户机-服务器架构,其中客户机可以是远程用户或本地用户。
图1.身份验证流程
本地连接是指客户机和位于相同机器上的服务器之间的连接。
远程连接是指客户机和位于不同机器上的服务器之间的连接。
IDS支持传统的身份验证机制,即用户需要提供用户ID和密码才能连接到数据库。
IDS还支持其他身份验证机制,比如插入式验证模块(PluggableAuthenticationModule,PAM)。
传统身份验证
IDS服务器在连接方面遵循UNIX安全性需求。
在传统的身份验证中,IDS通过操作系统API验证用户的UNIX或Windows®登录ID和密码。
回页首
插入式身份验证模块
插入式身份验证模块(PAM)是一个框架,它允许用户开发和实现定制的身份验证机制,同时不对应用程序进行任何修改。
IDS支持的模式包含密码模式和询问响应模式。
在密码模式下,用户仅凭密码就能够通过身份验证。
在询问响应模式下,服务器将提出一个问题,而客户机需要发送一个响应。
仅当客户机发送正确的响应时,它才能够访问数据库。
回页首
配置IDS以使用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显示如何配置密码类型的模块:
清单1.PAM的sqlhosts条目
#Server-nameservicemachinenameportnoOptions
demo_onontlitcpdemohost1111s=4,pam_serv=(login),pamauth=(password)
WhereloginisnameofthePAMmodulesetthePAMconfigurationfile
sqlhostsentryforachallenge-typemodule
#Server-nameservicemachinenameportnoOptions
demo_onontlitcpdemohost1111s=4,pam_serv=(xxx),pamauth=(challenge)
Note:
Herexxxisachallenge-orientedmodulewhichwillhavetherequiredentry
inthePAMconfigurationfile.
回页首
单点登录(SSO)
单点登录是一个身份验证特性,只要用户登录客户机的操作系统之后就不再需要提供用户名和密码。
IDS使用Kerberos5安全协议实现了对单点登录(SSO)的支持。
使用SSO时,DBMS和其他支持SSO的服务在用户首次登录到客户机系统(或Windows中的域)时进行身份验证。
Kerberos实现验证用户凭证。
Kerberos身份验证生成一组用于储存登录凭证的密匙。
当用户操作试图访问DynamicServer数据库时,票据授予票据(ticket-grantingticket,TKT)交换允许不提示登录访问数据库。
SSO还支持机密性和完整性服务,因此SSO环境不需要具有其他DynamicServerCSM。
启用机密性之后,对于通过SSO验证的用户,向其传入或其输出的数据都经过加密,并且仅使用授权凭证登录的用户能够查看这些数据。
完整性服务确保在用户和DBMS之间发送的数据没有在传输过程中被篡改。
将IDS配置为使用SSO需要大量特定于平台的设置。
不过,对于基础考试,您仅需理解如何设置sqlhosts文件和concsm.cfg文件以使用SSO。
这在“EncryptionSupportinIDS”的GenericSecurityServicesCommunicationsSupportModule(GSSCSM)主题下讨论。
IDS中的访问控制
可以通过多种方法使用SQL语句保护对数据的访问。
首先,本教程描述数据库服务器中用于控制访问SQL对象的各种访问控制机制。
接着描述列级别的加密特性,该特性用于加密表中指定的列上的数据。
IDS中包含的访问控制机制大体分为两类,即自主访问控制(DAC)和基于标签的访问控制(LBAC)。
在数据库服务器中使用特权和角色来实施DAC。
LBAC的实施是使用安全标签来实现的。
数据库管理员(DBA)在保护敏感数据免受非授权用户访问方面起到关键作用。
SQL提供在不同粒度级别上实现数据保护的方法。
注意,DBA与数据库系统管理员(DBSA)是不同的。
DBSA的角色是维护服务器,而DBA的角色是创建和维护数据库。
自主访问控制
自主访问控制(Discretionaryaccesscontrol,DAC)是主要的访问控制机制,它支持使用特权和角色访问SQL对象。
在数据库服务器中,使用DAC保护的对象包括数据库、表、列、视图、类型、例程和语言。
DAC不能用于行级别的保护;因此,保护行要使用LBAC。
通过保护这些对象以及给授权用户授予访问这些对象的特权可以实现高效的访问控制。
没有所需权限的用户不能执行访问这些对象的查询。
在典型的IDS安装中,有大量的用户访问系统、执行查询和修改数据。
为所有用户创建必要的特权会使管理员角色的工作过于琐碎繁杂。
另外,公司的策略可能为用户规定不同的特权,这取决于他们执行的工作。
这让管理员的责任更加重大,因为必须根据最新的特权策略授予或撤销特权。
服务器中的角色功能减轻了管理员的压力。
基于角色的访问控制(RBAC)将特权合并到角色中然后再将角色分配给用户,从而扩展了基于特权的访问。
回页首
受保护的SQL对象
DBMS中的以下对象需要用户具有特定的授权或特权才能访问:
∙数据库
∙表
∙表中的列
∙片段
∙视图
∙用户定义类型(UDT)
∙例程
∙语言
用户提交的大部分SQL查询都与一个或多个这些对象进行交互。
在这些对象上为用户授予的特权确定用户能够执行所需的操作。
图2显示了在SQL查询执行路径上进行的特权检查。
首先,检查数据库特权。
然后检查与用户查询相关联的SQL对象上的特权。
用户特权基于显式地授予用户的特权、用户当前角色具有的特权和公共特权。
图2.SQL查询中的特权检查
表1总结了特定SQL对象可用的特权:
表1.SQL对象及其特权
SQL对象
特权
Database
Connect,resource,DBA
Table
Select,update,insert,delete,index,alter,references
Column
Select,update,references
Fragment
Insert,update,delete
View
Select,insert,delete,update
Sequence
Select,alter
UDT
Usage,under
Routine
Execute
Language
Usage
每个SQL对象都与某个特权相关联,并且每个特权都与一组功能相关联。
当用户被授予某个特权时,他就有权限执行该SQL对象上的功能。
IDS提供GRANT和REVOKE语句来授予或删除特权。
GRANT和REVOKE语句
SQL提供GRANT和REVOKE语句来向用户授予特权或回收特权。
清单2显示了数据库对象上的GRANT和REVOKE语句的语法。
这个例子中的特权表示CONNECT、RESOURCE或DBA特权之一。
“user-list”表示用户列表,包括PUBLIC。
清单2.语法:
GRANT/REVOKE语句
GRANTprivilegeTOuser-list
REVOKEprivilegeFROMuser-list