6.8 安全性 WebSphere应用服务器具备很好的安全性支持。安全性简单地说就是肯定谁可访问重要的系统资源,这些系统资源包括文件、目录、程序、链接和 数据库。以独立模式运行WebSphere应用服务器比做为 Web 服务器的一部分运行具备更高的安全性。若是安全性要求超出了 Web 服务器提供的安全性,那么请以独立模式运行WebSphere应用服务器。下面介绍使用存取控制表保护资源、选择认证方案和协议、在WebSphere应 用服务器中使用目录服务。 1.使用存取控制表保护资源 创建了一个设置安全性的基本过程。 与安全性相关的概念包括用户、组、资源、许可权、领域、和存取控制表(ACL),这些安全性概念是紧密相关的,现说明以下: (1) 用户:一个可被 Web 服务器认证的身份。用户能够是人也能够是计算机。 (2) 组:用户的集合。组提供了一个管理大量的用户的有效方法,这是由于管理员能够一次指定一个组的许可权。一般,组成员之间有一些共同特征。例如,一个公司中 可能包括一个由管理级雇员组成的组,和另外一个由非管理级雇员组成的组。其中,可能对非管理级用户赋予查看销售数据文件的访问权,而对管理级用户赋予查看和 编辑销售数据文件的访问权。能够将一我的定义成单个用户,同时也将其定义成组的成员。例如,我的 Amy 可能表明单个用户 amy,也可能表明组 managers 的成员。 (3) 资源:经过 Web 服务器进行存取的有价资源包括HTML 文件和目录(Web 页面)、其它文件和目录(如FTP文件)、Web 应用程序(Java Servlet 或 CGI 程序),而经过WebSphere应用服务器进行存取的资源包括Java Servlet、启用访问企业资源和应用程序(如数据库)的定制 Servlet、链接、套接字、文件和其它可由 Servlet 使用的资源。 (4) 许可权:许可权表示请求访问资源的特权。管理员可经过创建存取控制表向用户和组授予许可权,以保护资源。许可权是与特定的资源相关的。想象一下,若是一个 用户具备查看文件 A 和修改文件 B 的许可权。那么该用户不能用修改文件 B 的许可权来修改文件 A。每一个许可权仅适用于特定的资源,且不能传递。单个用户的许可权优先于组的许可权。例如,若是用户 amy 对文件具备读、写权,但同时 amy 所属的组对该文件仅有读取权,那么 amy 仍对该文件具备读、写权,这是由于单个用户的许可权将覆盖具备更多限定的组许可权。(即便组的许可权限制性低于单个用户的许可权,但用户的许可权仍将覆盖 组的许可权)。 (5) 领域:领域是用户、组和存取控制表的数据库。为了使用户能访问领域中的资源,必须在该领域中定义需访问资源的用户。一个用户能够属于几个领域,但在同一领 域中用户标识符不能重复。例如,用户 amy 可属于 fileRealm 和 anyRealm 领域。但每一个领域中仅可包含一个名为 amy 的用户。可在每一个领域中赋予用户 amy 访问不一样资源的不一样许可权。 (6) 存取控制表:与资源关联的存取控制表指定了领域中的哪些用户和组能够访问资源。 存取控制表(ACL)、领域和资源的关系以下: l 一个领域能够包含许多 ACL。 l 一个领域能够包含许多资源。 l 一个 ACL 能够仅属于一个领域。 l 一个资源能够仅属于一个领域。 l 一个资源仅与一个 ACL 相关。 l 一个 ACL 可与许多资源相关。 WebSphere应用服务器附带了一些前期创建的领域: l defaultRealm 定义了用户如何访问本地定义的资源。也可创建存取控制表,以肯定哪些用户和组 对哪些资源具备访问权。 l NT 领域(NTRealm)和UNIX领域(UnixRealm)定义了在操做系统中拥有账户的用户如何使用 WebSphere应用服务器资源。 操做系统中定义的用户可由WebSphere应用服务器共享。只要他们存在于下层系统中,这种共享就一直存在。WebSphere应用服务器管理器界面使 您能查看该领域;但若要更改它,必须使用操做系统所提供的设施。目前,WebSphere应用服务器能够共享操做系统定义的用户,但不能共享组。 l servletMgrRealm 定义了 Servlet 如何访问远程定义的资源,如远程装入的 Servlet。 servletACL 是 该领域中的惟一一张存取控制表。当远程装入且带有数字签名的 Servlet 试图访问一个受保护的资源时,将对 Servlet 中的数字证书与 servletMgrRealm 中与用户关联的数字证书进行比较。 servletACL 定义了是否授予或拒绝许可权。例如,假设用户 X 的数字证书封装在 anyServlet.JAR 文件中。若是用户 X 被添加在 servletMgrRealm 中,则全部包含与该用户相同数字证书的 Servlet (anyServlet.JAR 文件中)能够执行和访问赋予该用户的资源。 l 最后,若是在WebSphere应用服务器管理器的“目录管理”页面中启用目录服务,将显示 LDAPRealm。WebSphere应用服务器能够共享定义在目录服务中的用户和组,且这种共享将一直持续下去,直至除去他们或禁用目录管理 支持。WebSphere应用服务器管理器界面使您能查看该领域;但若要对它进行更改,必须使用 LDAP 服务器所提供的设施。如需更多有关 LDAP、目录服务和 LDAPRealm 的信息,请参阅有关使用目录服务的文档。 WebSphere应用服务器使您能设置各类许可权。例如,其中包括发送和接收文件、删除文件、读取和写入文件、装入 Servlet、连接至库文件、打开和侦听套接字等许可权。某些状况下,服务不须要其客户存在于存取控制表中。例如,许多 Web 页面(HTTP)服务向全部用户公开其文档,而不要求他们在存取控制表中进行注册。 可经过为每一个资源在单个领域中创建单个存取控制表(ACL)来保护该资源(下面将进行讨论)。 ACL 将指定能够访问或修改资源的用户或组。对于要保护的每一个资源,须要指定存取控制表、安全性领域、认证方案(用来验证访问资源的用户的方法)。下面介绍实现 安全性的一个示例。 使用各类管理器页面,以用存取控制表来创建安全性的基本步骤显示以下。 (1) 定义用户。 使用“安全性”-> 使用“用户”页面来定义用户,即定义被容许访问资源的我的和计算机。例如,定义名为 bopeep 的用户: l 选择 defaultRealm。 l 单击页面左上部的“添加”按钮。 l 输入用户名 bopeep。 l 输入口令 sheep。再一次输入该口令以进行验证。 l 单击“肯定”按钮。 l 验证 bopeep 显示在“定义的用户”列表中。 (2) 可选地定义组 使用“安全性”-> 使用“组”页面来定义用户所属的组,以使管理更加容易。首先,选择一个领域。下一步,选择将组添加到该领域中。能够用您喜欢的名称来命名组,而后将用户从非成员状态转换为成员状态。例如,将用户 bopeep 添加到组 mypeeps 中: l 选择 defaultRealm。 l 单击页面左上部的“添加”按钮。 l 输入组名 mypeeps。 l 在“非成员”列表中选择用户 bopeep。 l 单击“非成员”列表旁的“添加”按钮。 l 验证 bopeep 已转换到成员框中。 (3) 建立 ACL 使用“安全性”-> 使用“存取控制表”页面来建立 ACL。例如,建立名为 sheepcontrol 的 ACL: l 单击定义“定义的存取控制表”列表旁的“添加”按钮。 l 输入 ACL 名称 sheepcontrol。 l 单击“肯定”按钮。 (3) 定义资源 使用“安全性”-> 使用“资源”页面以将要保护的资源添加到领域中。(注意:必须在执行“建立 ACL”步骤后才能执行该步骤,这是由于必须指定新资源所属的 ACL)。例如,将 CheckMessage Servlet 添加到领域 defaultRealm 中的 sheepcontrol ACL 中: l 选择 defaultRealm。 l 单击“添加”按钮。 l 选择基本方案做为认证方案。(“方案”选项将在下文中讨论)。 l 选择 sheepcontrol ACL。 l 选择 Servlet,并指定 CheckMessage Servlet。 l 单击“肯定”按钮。 l 验证 CheckMessage 现已做为 ACL sheepcontrol 的资源列示出来。 (4) 赋予许可权 返回 ACL 并赋予用户、组和计算机访问 ACL 资源的许可权。例如,赋予 bopeep具备 GET 和 PUT 许可权,以使它能够访问领域 defaultRealm 中sheepcontrol ACL的文件和文件夹: l 确保已在“定义的存取控制表”列表框中选定 sheepcontrol。 l 单击页面底部“主许可权”字段旁的“添加”按钮。 l 当显示“在 defaultRealm 中的 ACL sheepcontrol 添加许可权”框时,单击“文件与文件夹”。 l 下一步,选择许可权选项为 bopeep。因为 bopeep 是一个用户,因此单击“用户”。在列表中选 择bopeep。(注意,若是选择的是“组”,则将看到“主名”列表中的组 mypeeps)。 l 使用复选框赋予 bopeep具备 GET 和 PUT 许可权。 l 单击“肯定”按钮。 l 经过查看“主许可权”框来验证 bopeep 具备正确的许可权。若是没有显示许可权,请单击 bopeep 左边的加号。这时将显示一个列表,该列表显示了 bopeep 的许可权。 2.选择认证方案和协议 首先讨论的是认证协议,即 HTTP 和 HTTPS。接下来将会讨论的是认证方案,即基本、摘要、定制和证书认证。最后讨论的是有关组合方案和协议的策略。 (1) 关于认证协议 HTTPS 则是 HTTP 和 SSL 协议的组合。SSL(安全套接字层)是一个网络安全协议,它用来提供服务器和客户机之间必要的安全性。若是选择 HTTP,认证数据的接收无任何保护。若是选择 HTTPS,认证数据在每一个 SSL 协议中加密。若是要使用证书认证,那么必须使用 HTTPS。 (2) 关于认证方案 WebSphere应用服务器支持的认证方案包括基本认证、摘要认证、定制认证、证书认证。 l 基本认证:使用 HTTP 或 HTTPS 请求来自客户机的用户名和口令。 用普通文本将用于验证的 信息发送给服务器验证。全部浏览器都支持基本认证。若是一个用户标识符和口令提供了足够的认证,那么请考虑使用基本认证。 l 摘要认证:使用 HTTP 或 HTTPS 请求来自客户机的用户名和口令。将用于验证的用户名和口 令的加密形式(使用摘要)发送给服务器。并不是全部浏览器都支持摘要认证。(当前仅 Sun HotJava 浏览器支持该认证方案)。若是浏览器不支持摘要认证,那么其用户将没法访问由该协议进行保护的资源。 l 定制认证:使用 HTTP 或 HTTPS 来请求使用 HTML 格式定制的客户机信息。由 CGI 和 Servlet 将这些用于验证的信息用普通文本发送到服务器上。当须要除了标识符和口令以外的用户认证时,可以使用定制认证。例如,能够请求一个社会安全号的用户认证。使 用该协议,可创建 HTML 格式以询问用户数据。认证是由服务器端代码(CGI 和 Servlet)执行的,而不是由 IBM WebSphere应用服务器运行时应用程序执行的。若是使用定制认证,请使用 HTTPS 保护数据。 l 证书认证:使用 HTTPS 以请求一个客户机证书。必须启用 SSL 客户机认证选项。将用于验证 的信息发送给服务器。认证使用的数字证书具备很高的安全性,且证书认证一般对用户是透明的。系统或站点管理员会对客户机证书进行管理。一般这些任务是由证书权威服务器软件受权的,例如 IBM Vault Registry 产品。 (3) 组合认证方案和协议 正如前述,除非是在一个与安全无关的环境中,不然 HTTPS 一般更为可取。对于不一样的安全性要求能够对方案和协议进行组合,策略以下: l 对于基本安全性要求,使用基本、摘要或 HTTP 上的定制认证。 l 对于较高安全性要求,使用基本、摘要或 HTTPS 上的定制认证。 l 对于最高安全性要求,使用 HTTPS 上的证书认证。 3.使用目录服务 一个目录服务是信息仓库、存取法和相关服务的组合。信息仓库一般是用于存储位置信息和其它有关资源(例如用户、打印机、文件服务器和 WebSphere应用服务器)的详细信息的数据库。存取法是指轻量级目录访问协议(LDAP)或其它可用来与目录服务组件进行通讯的存取法。相关服务是 指目录服务提供的用于查询、操纵和认证数据库中信息的设施。 对集中式安全性数据一般须要使用目录服务。目录服务能够为整个网络提供单个管理点。使用目录服务,能够一次定义用于全部应用程序(包括 WebSphere应用服务器)的用户和组,而无需为每一个应用程序分别定义用户和组。目录服务对于实现安全性颇有帮助,即经过认证用户和控制对资源的访 问。没有目录服务,可能必须为不一样的软件产品(例如WebSphere应用服务器、Web 服务器和操做系统)重复定义相同的用户和组,这是由于这些软件产品不共享安全性数据。 WebSphere应用服务器版本 2.0 支持使用轻量级目录访问协议(LDAP)V2 的目录服务。这些目录服务包括 Domino Directory 版本 4.6.x 和 Netscape Directory Server 版本 3.x。WebSphere应用服务器版本 2.02 (本地语言版本)也支持 IBM Suites(不包括 IBM Suites 版本 1.0)的 eNetwork Directory 组件。使用目录服务的基本步骤以下: (1) 设置目录服务,或使用一个现有的目录服务。 (2) 使用WebSphere应用服务器的管理器界面的“目录管理” 页面,以标识至WebSphere应用服务 器的目录服务,并指定基本设置。 (3) 查看管理器中的目录服务用户和组信息。 (4) 在WebSphere应用服务器中定义存取控制表(或已有的 ACL),以利用目录服务用户和组信息。 (5) 用 ACL 保护WebSphere应用服务器资源。 使用“目录管理” 页面指定目录服务的步骤以下: l 查看“设置” -> “目录管理”页面。 l 在“配置”标签中,请在“是否启用目录?”字段中单击“是” l 使用下拉列表选择目录类型。选择: ¾“netscape”使用 Netscape Directory Server; ¾ “domino4.6”使用 Domino Server; ¾ “enetworkibmsuite”使用 IBM Suite 的 eNetwork Directory Server 组件。 l 输入驻留目录服务的计算机主机名。 l 输入服务的端口号。 l 输入将做为目录服务的 LDAP 搜索起始点的基本分辨名(Base DN)。例如,o=raleigh.ibm.com. l 可选功能。输入联编分辨名和联编口令。这些字段空白表示WebSphere应用服务器匿名联编目录 服务。若是指定了联编分辨名和口令,则请确认将目录服务配置成使用同一分辨名和口令来认证WebSphere应用服务器,不然认证将告失败。 当使用“目录管理”指定目录服务时,管理器将提供的功能有: l 动态地创建、初始化和维护与 LDAP 目录服务相关联的 ldapRealm。 l 使用管理器的“安全性”页面关联WebSphere应用服务器资源和 ldapRealm。 l 将WebSphere应用服务器存取控制表(ACL)与 ldapRealm 的资源关联起来。 IdapRealm 是一个包含已定义在目录服务中的用户和组的WebSphere应用服务器安全性领域。可使用WebSphere应用服务器的管理器界面的“安全性”页 面,以创建存取控制表和 IdapRealm 之间的关联。 ldapRealm 对资源进行保护,而且存取控制表容许属于该领域的用户和组(在这种状况下,用户和组在目录服务中)访问资源。 ldapRealm 使用非 SSL LDAP V2 协议来与目录服务进行通讯,并根据在“目录管理”页面中指定的设置进行联编。当受 IdapRealm 保护的WebSphere应用服务器资源须要认证时,将根据IdapRealm 来验证客户机的用户标识符和口令。该过程以下: l 客户机向WebSphere应用服务器发出 Servlet 请求。 l WebSphere应用服务器肯定请求的资源是否受 ACL 保护。 l 所以WebSphere应用服务器将一个认证要求发送给客户机。 l 客户机输入用户标识符和口令。 l 目录服务验证用户标识符和口令与保护资源的 IdapRealm 是否相符合:目录服务发出 LDAP 查 找,以查找与指定用户标识符相符的人。为该用户建立一个分辨名(DN)。 l 目录服务使用该用户分辨名和口令执行一个 LDAP 链接。 l 当目录服务认证用户后,WebSphere应用服务器Java 引擎将调用 Servlet 以处理与客户机得到的 许可权一致的客户机请求。 能够经过访问ldap://act:389/o=raleigh.ibm.com来测试目录服务是否正在运行,其中:act 是运行目录服务的机器的主机名,389 是服务的端口号,o=raleigh.ibm.com 是基本分辨名,它还表明了目录服务中的搜索起始点。