zoukankan      html  css  js  c++  java
  • WebSphere--安全性

    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 是基本分辨名,它还代表了目录服务中的搜索起始点。
  • 相关阅读:
    Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query
    Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了
    Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述
    Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries
    Elasticsearch date 类型详解
    python 历险记(五)— python 中的模块
    python 历险记(四)— python 中常用的 json 操作
    python 历险记(三)— python 的常用文件操作
    Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI
    Elasticsearch Java Rest Client API 整理总结 (一)——Document API
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233054.html
Copyright © 2011-2022 走看看