`
jbosscn
  • 浏览: 154081 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JBoss7配置指南(三)

 
阅读更多

(翻译整理by Jim Ma)

4.管理任务


4.1 网络接口和端口

4.1.1 网络接口声明


JBoss AS 7 在整个配置文件中都引用命名的接口。一个网络接口通过指定一个逻辑名和选择一个物理接口来声明。
[standalone@localhost:9999 /] :read-children-names(child-type=interface)
{
   "outcome" => "success",
   "result" => [
       "management",
       "public"
   ]
}
以上操作意味着server声明了两个接口:一个可以使用”management”进行引用,另外一个可以用”public”引用。管理层(比如HTTP管理点)需要用到的所有组件和服务都可以使用”management”接口。与网络通讯有关的应用(如Web, Message等等)都可以使用”public”接口.接口的名字没有任何特别的要求;可以用任何名字声明接口。配置的其他部分可以用逻辑名来引用这些接口,而不用包含接口的所有详细信息(在管理域里服务器上的这些信息随着机器不同而不同).
domain.xml, host.xml 和standalone.xml 都包含声明接口的部分。但我们看这些在xml文件中接口声明时,就会发现接口的选择条件(selection criteria)。接口选择的条件有两种类型:一种是单独的xml元素,接口绑定到通配符地址;另外一种是接口或者地址有一个或者多个特征值需要满足。下面是一个接口条件选择的例子,每个接口都有特定的IP地址:
<interfaces>
  <interface name="management">
   <inet-address value="127.0.0.1"/>
  </interface>
  <interface name="public">
   <inet-address value="127.0.0.1"/>
  </interface>
</interfaces>
另外一些使用通配符的例子:
<interface name="global">
   <!-- 使用任何地址 -->
   <any-address/>
</interface>

<interface name="ipv4-global">
   <!--使用任何IPV4的例子-->
   <any-ipv4-address/>
</interface>

<interface name="ipv6-global">
   <!-- 使用任何IPV6的例子 -->
   <any-ipv6-address/>
</interface>

<interface name="external">
   <nic name="eth0"/>
</interface>

<interface name="default">
   <!-- 匹配下面子网地址,而且支持multicats不是点对点的地址-->
   <subnet-match value="192.168.0.0/16"/>
   <up/>
   <multicast/>
   <not>
      <point-to-point/>
   </not>
</interface>


4.1.2 Socket Binding Groups


AS7中socket的配置类似于interface的声明,Sockets用一个逻辑名来声明,可以在整个配置中引用。 多个Sockets声明可以用一个特定的名字声明成为一个组。这样在配置一个在管理域里的server group时可以方便的引用一个特定的socket binding group. Socket binding group通过interface逻辑名来引用interface:
<socket-binding-group name="standard-sockets" default-interface="public">
   <socket-binding name="jndi" port="1099"/>
   <socket-binding name="jmx-connector-registry" port="1090"/>
   <socket-binding name="jmx-connector-server" port="1091"/>
   <socket-binding name="http" port="8080"/>
   <socket-binding name="https" port="8443"/>
   <socket-binding name="jacorb" port="3528"/>
   <socket-binding name="jacorb-ssl" port="3529"/>
   <socket-binding name="osgi-http" port="8090"/>
   <socket-binding name="remoting" port="4447"/>
   <socket-binding name="txn-recovery-environment" port="4712"/>
   <socket-binding name="txn-status-manager" port="4713"/>
   <socket-binding name="messaging" port="5445"/>
   <socket-binding name="messaging-throughput" port="5455"/>
</socket-binding-group>
一个socket binding 包含一下信息:

  • name – socket配置的逻辑名,可以在配置的其他任何地方引用。
  • port –  这个配置中socket要绑定到的基础端口 (注意server可以通过配置增减所有端口值来覆盖这一配置)
  • interface (可选) – 配置中socket要绑定接口的逻辑名 (参考 上面的接口声明 ) .如果没有指定, socket binding group 配置元素中的default-interface属性值将会被使用。
  • multicast-address (可选) --如果socket用于多播,将会使用这个多播地址。
  • multicast-port (可选) –  如果socket用于多播,将会使用这个多播端口
  • fixed-port (可选, 默认是false) – 如果是true,  端口值将一直使用这个值,这个值不会被使用增减端口值而覆盖。

4.2 管理接口的安全性


       除了在运行服务器或者服务器组上的各种服务,JBoss7还提供了两个管理接口允许远程的客户端可以管理JBoss AS7.这个章节中介绍如何使用这些接口,以及如何对这些接口进行加密。
       这两个管理接口被暴露成一个HTTP接口和一个Native接口。HTTP接口既用来提供基于GWT的管理控制台(admin console)使用,也提供给使用JSON编码协议和de-typed RPC API各种管理操作使用。当运行在单独运行服务器(standalone)时候,Native接口允许管理操作通过私有的二进制协议访问。这种使用二进制协议类型的操作可以通过AS7提供的命令行工具,也可以通过使用AS7jar文件的远程客户端进行交互。
       在管理域下使用这些接口稍有些负责。在每一个主机上都有一个host controller的进程。在主机上的host controller会配置成为domain controller.在管理域中可以用同样的方式来使用HTTP接口; HTTP接口允许基于GWT的管理控制台(admin console)运行在主domain controller,也允许任何基于HTTP和JSON的管理控制客户端在任何host controller上执行管理操作。然而其他的一些客户端则使用Natvie接口:一旦host controller启动真正的应用服务器实例,这些应用服务器则通过native接口与host controoler后台建立连接;从host controller则使用native 接口与主domain controller在后台建立连接来获取domain 模型的拷贝,并随后接收主domain cotroller的操作请求。

 

4.2. 1初始化设置


单独运行服务器的接口配置在standalone.xml里定义,在管理域里运行服务器的接口配置在host.xml 中。在两个文件种,接口配置都有相同的结构:
<management>      
   ...
   <management-interfaces>         
      <native-interface interface="management" port="9999" />         
      <http-interface interface="management" port="9990"/>      
   </management-interfaces>  
</management>
...
<interfaces>
   <interface name="management">
      <inet-address value="127.0.0.1"/>
   </interface>
   <interface name="public">
      <inet-address value="127.0.0.1"/>
   </interface>
</interfaces>
navtive接口默认监听9999端口,http接口监听9990.管理接口同时与一个命名为 “management”的网络接口(network inteface)相关联。虽然management网络接口(network interface)的配置和public 网络接口的默认配置相同,但我们推荐不要合并这两个配置。managment和public的网络接口分开配置可以保证任何将应用服务器中服务更为公开的配置更改,不会无意识的公开本不需要公开的管理接口。

 

4.2.2 快速配置

在本章节剩下的部分我们讲更为详细的讲述安全域的配置-但是如果你想快速的启用安全域并且完善安全配置来满足需求,默认的配置包含一个预先定义的安全域,它基于一个property文件和一个可以通过命令行来启用的脚本。
安全域定义在standalone.xml或者host.xml文件中<management>元素. 默认的安全域:
<management>
   <security-realms>
      <security-realm name="PropertiesMgmtSecurityRealm">
         <authentication>
            <properties path="mgmt-users.properties" relative-to="jboss.server.config.dir" />
         </authentication>
      </security-realm>
   </security-realms>
   ...      
</management>
默认安全域通过调用在configuratiion目录下的mgmt-user.properties来校验连接的用户。property文件默认没有任何用户,因此新的用户要用username=password格式添加到文件中:
手动启用两个接口配置好的管理域:
<management>
   ...
   <management-interfaces>
      <native-interface interface="management" port="9999" security-realm="PropertiesMgmtSecurityRealm" />
      <http-interface interface="management" port="9990" security-realm="PropertiesMgmtSecurityRealm"/>
   </management-interfaces>
</management>
这将为Http interface启用Http Digest authentication,并且在Native interface启用Digest SASL-这也意味着对于原始密码不会在客户端和服务器端进行传输验证。
使用脚本来启用安全域,首先要编辑“mgmt-users.properties”,因为配置会马上生效。你需要至少定义一个用户,并且执行以下命令:
对于单独运行的服务器:
./jboss-admin.sh --connect --file=scripts/secure-standalone-mgmt.cli
对于在管理域的服务器:
./jboss-admin.sh --connect --file=scripts/secure-host-controller-mgmt.cli
注意这个脚本只能运行在默认配置为master的host上。如果创建了其他具有不同名称的host,那么需要更新这个脚本或者手动对这个新的配置实施安全性。并且还要注意,这个脚本仅仅改变它要运行的名为master的host,如果有多个host controller,这个脚本需要使用他们所有正确的host名字运行去更改。同时,请阅读这个章节的其他部分关于如何配置从host controller连接主host controller的校验。
 

禁用JMX远程访问
除了以上的JBoss管理协议,还有允许JDK和应用管理操作的远程JMX 连接。为了安全性,可以通过删除远程连接配置来禁止这一服务,或者删除整个subsystem.
<subsystem xmlns="urn:jboss:domain:jmx:1.0">
     <!-- Delete the following line to disable remote access -->
     <jmx-connector registry-binding="jmx-connector-registry" server-binding="jmx-connector-server" />
</subsystem>

4.2.3 详细配置

管理接口的配置在<management>下的三个节点中:
<management>
   <security-realms />
   <outbound-connections />
   <management-interfaces />
</management>
<security-realms /> -  配置一个或者多个安全域来定义远程用户如何连接到服务器进行验证,并且定义服务器上的身份(identity)。
<outbound-connections /> -有时候安全域的配置需要连接到一个外部的资源;这些连接在这里配置。
<management-interfaces /> - 这里定义Http interface和Native interface,正如我们在简介里描述的那样。

4.2.3.1 管理接口

对于单个管理接口的配置是最简单的。仅仅需要配置管理接口的”security-realm”属性,来指定使用安全域的名字。因为管理接口启动安全域时,要查询安全域所提供的功能,并且启动安全相依的传输:比如用户的密码如果可以从安全域中获得,Http interface会尝试使用Digest验证,如果用户密码不能从安全域中获取,http interface会转而支持Basic验证。
<management>   ...
   <management-interfaces>
      <native-interface ... security-realm="PropertiesMgmtSecurityRealm" />
      <http-interface   ... security-realm="PropertiesMgmtSecurityRealm"/>
   </management-interfaces>
</management>
管理接口可以使用同样的安全域,但这不是必须的。如果需要,不同的管理接口可以使用不同的安全域。

4.2.3.2 安全域

<security-realms /> 元素用来配置一个或者多个安全域。安全域的配置具有以下结构:
<management>
   <security-realms>
      <security-realm name="SampleRealm">
         <server-identities />
         <authentication />
      </security-realm>
   </security-realms>
   ...
</management>
<server-identities />元素定义server的身份信息。目前可以配置一个SSL身份(identity)来定义服务器如何从一个keystore 取得身份信息。也可以配置一个加密的身份-服务器使用什么样的命令或密码和其他的服务器进行通信。
<authentication /> 定义如何验证连接到服务器的用户.

4.2.3.2.1 Authentication(验证)

最初,AS7支持三种机制来验证连接到服务器的用户:
LDAP – 使用LDAP 服务器来验证用户的额身份信息。
Users – 定义在domain model里的用户名和密码信息,这仅作为简单测试使用。
Properties – 用户名和密码定义在一个服务器安装文件目录的 property文件中。
下表概括了管理接口支持的验证机制,用来对终端用户在传输级别上进行验证:

Authentication
Mechanism

HTTP
Interface
Native
Interface
LDAP HTTP BASIC Not Supported1
Users HTTP DIGEST SASL DIGEST
Properties HTTP DIGEST SASL DIGEST

 

 

1 – 将被增加到AS7-1167
HTTP Basic和SASL Plain(实现以后)在一个表单里传输用户密码,很容易被破解。
下面的章节阐述如何配置这些验证机制:

 

4.2.3.2.1 . 1 LDAP

 

LDAP验证操作首先要建立一个和远程目录服务器的连接。然后使用用户提通的用户名去执行查找区别用户的识別名(distinguished name)。最后验证器和目录服务器建立一个新的连接,使用查找到的识別名和用户提供的密码来验证是否是合法用户。
这是一个使用LDAP验证的安全域配置:
<security-realm name="TestRealm">
   <authentication>
      <ldap connection="ldap_connection" base-dn="CN=Users,DC=mydomain,DC=aslab" username-attribute="sAMAccountName"  />
   </authentication>
</security-realm>
ldap元素可以配置以下属性:
connection - 定义在 <outbound-connections>的连接来连接到LDAP目录服务器。
base-dn - 开始搜索用户的上下文中的识别名(基准识别名).
Username-attribute – 目录中的用户名的属性,用来匹配提供的用户名
recursive (default - false) - 是否需要迭代查找
user-dn (default - dn) - 用户中存放识别名的属性, 用来校验用户信息

 

4.2.3.2.1 . 2   User

 

User校验器是一个对存储在domain model里用户名和密码进行验证的简单校验器。校验器仅用作简单的测试使用:
这是一个使用User验证器的例子:
<security-realm name="TestRealm">
   <authentication>
      <users>
         <user username="TestUser">
            <password>TestUserPassword</password>
         </user>
      </users>
   </authentication>
</security-realm>
在这个配置中,每个用户都用<user>进行定义,用户名使用”username” 属性定义,password定义在user下的<password>中。

 

4.2.3.2.1 . 3 Properties

 

Properties校验器和User校验器类似,除了用户名和密码定义在一个properties文件中。比起 User校验的优点是password不必在domain model中暴露。
这是一个使用properties验证器配置安全域的一个例子:
<security-realm name="TestRealm">
   <authentication>
      <properties path="users.properties" relative-to="jboss.server.config.dir" />
   </authentication>
</security-realm>
Properties文件通过简单定义”path”属性来指定文件的路径和 ”relative-to”属性来引用定义好的路径和path属性相对的路径。在这个例子中,user.properties在存放stadnalone.xml文件相同的目录下。 如果”relateive-to”属性没有指定,那么path属性的之必须是一个绝对路径。

 

4.2.3.2.2 Server Identities(服务器身份)

 

<server-identities>用于配置在多种场景中服务器辨别自己身份的信息。 目前在HTTP interface中可以定义一个SSL indentiy并且使用这一indentity来启用SSL,另外一个Secret identity可以存放一个密码,当host controller和远程的domain controller 建立连接时,使用这一个定义好的Secret indentity.

  • SLL

SSL identity的配置目前需要从本地文件系统中加载一个静态的keystore.以后会增强这一个功能来允许多种类型的keystore:
一个SSL indentity的配置示例如下:
<security-realm name="TestRealm">
   <server-identities>
      <ssl>
         <keystore path="server.keystore" relative-to="jboss.server.config.dir" password="keystore_password" />
      </ssl>
   </server-identities>
</security-realm>
keystore的路径信息和properites验证器中properties文件信息相同,使用一个路径指定keystore和一个可选的relative-to 属性来指定path属性相对于一个已知的路径。

  • Secret

从domain controller连接到一个加密的主domain controller时,需要配置Secret identity.
为了实现连接加密的主domain controoler,下面是在从domain controller中增加的配置:

<host xmlns="urn:jboss:domain:1.0"
      name="slave">

   <management>
      <security-realms>
         <security-realm name="TestRealm">
            <server-identities>
               <secret value="c2xhdmVfcGFzc3dvcmQ=" />
            </server-identities>
         </security-realm>
       </security-realms>
       ...
    </management>

    <domain-controller>
       <remote host="127.0.0.1" port="9999" security-realm="TestRealm" />
    </domain-controller>

    ...
</host>
这里<remote>定义了domain controller引用了一个定义好的安全域。,这个引用意味着这个安全域会被用来加载客户端的配置(以后这将会扩展使得域也同样可以为客户端的连接定义SSL)
secret是密码采用Base64编码,连接会使用host名(在这个示例中是'slave')和从secret中得到的密码进行验证。
AS7-1102列出了密码的处理将会被增强,来更好的保护密码的配置。如采用密码混淆,加密方式以及使用外部的security provider, smart card或者使用 PKCS#11的硬件加密模块。

4.2.3.3 Outbound connections(外部连接)

如前面所述,外部连接用来连接一个远程的服务器,目前仅支持LDAP连接,以后会增加数据库连接来支持对存储在数据库中的信息进行验证。

  • LDAP

下面是一个连接LDAP服务器的例子:
<outbound-connections>
   <ldap name="ldap_connection" url="ldap://127.0.0.1" search-dn="CN=AS7 Test Server,CN=Users,DC=mydomain,DC=aslab" search-credential="AS_Password" />
</outboundconnections>
<ladp>可以配置以下属性:
name - 连接名,ladp验证其会使用这个名字来引用这个连接。
url – 连接目录服务器的URL.
search-dn - 用户初始化搜索的识别名
search-credential – 连接进行搜索的密码
initial-context-factory (default - com.sun.jndi.ldap.LdapCtxFactory) -用来建立连接的 initial context factory 

 

4.2.4 问题:

Application server如何连接到host controller的native interface上-是如何进行验证的? 
当JBossAS7进程启动时会创建一个随机的key并且将这个key传输到启动的服务器实例,applicaiotn server使用这个key来验证native interface的连接。

分享到:
评论
3 楼 狐狸丶狮子 2012-08-13  
怎么去部署以前在jboss 4的时候写的*-serice.xml里边的mbean?有没有方案呢?
2 楼 jbosscn 2011-12-05  
引用
1. domain control可以有多个吗?

一个domain里只能有一个。如果你的domain有很多,那就可以有多个domain controller.
引用
2. 若无,"从domain controller连接到一个加密的主domain controller时,需要配置Secret identity", 这句话何解?

这里的从是主从的从,意思是从domain controller(也就是host controller)连接到一个加密的主domain controller时需要配置security。
引用
3. 我按照官方文档用properties的方式成功配置了standalone的管理接口的安全验证,但是manged domain配置却不成功,配置完之后,slave host 无法连接到managed domain

有什么错误,报什么信息。你可以发邮件到mail2jimma@gmail.com,继续探讨。
1 楼 jessej 2011-10-13  
你好,我有一些疑惑,希望你能帮忙解答,不胜感激:
1. domain control可以有多个吗?
2. 若无,"从domain controller连接到一个加密的主domain controller时,需要配置Secret identity", 这句话何解?
3. 我按照官方文档用properties的方式成功配置了standalone的管理接口的安全验证,但是manged domain配置却不成功,配置完之后,slave host 无法连接到managed domain

相关推荐

    JBoss7配置指南

    JBoss7配置指南。完整

    jboss服务器配置指南

    本配置指南将深入探讨JBoss服务器的配置和优化,帮助你更好地理解和管理这个强大的平台。 1. **安装与启动** - JBoss的下载:首先,你需要从Red Hat的官方网站获取最新版本的JBoss服务器,通常包括EAP(企业应用...

    JBoss7配置指南及管理员手册

    ### JBoss7配置指南及管理员手册关键知识点解析 #### 一、JBoss主要版本特性 JBoss是一款开源的应用服务器,提供了强大的企业级服务支持。随着技术的发展,JBoss也经历了多个版本的迭代。 ##### 1.1 JBoss4特性 -...

    JBoss7.1.1配置指南及管理员手册

    本配置指南旨在详细阐述JBoss 7.1.1的特性、配置方法以及管理实践,帮助用户深入了解并有效地利用该版本。 1. **JBoss 版本特性** - **JBoss 4**:引入了模块化架构,增强了安全管理,支持EJB 3.0。 - **JBoss 5*...

    jboss7配置指南

    《深入解析:JBoss7配置指南之核心管理概念》 一、引言 JBoss AS 7,作为一款成熟的企业级应用服务器,提供了强大的功能和灵活性,满足了各种复杂的应用需求。本文将深入探讨JBoss7的核心管理概念,特别是运行模式...

    JBoss7配置指南及管理员手册.doc

    ### JBoss7配置指南及管理员手册 #### JBoss7配置说明及核心管理概念 JBoss7作为一款先进的Java应用服务器,其配置与管理对于确保应用的高效稳定运行至关重要。本文档将详细介绍JBoss7的核心配置及管理概念,帮助...

    jboss安装配置指南

    【JBoss 安装配置指南】 JBoss 是一个基于 J2EE 规范的开源应用服务器,由全球开发者社区共同维护。它完全实现了 J2EE 的核心服务,包括 EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTS/JTA(Java...

    jboss 的配置指南

    jboss 的配置指南, jboss各主要版本特性 jboss4特性,jboss5特性,jboss6特性,jboss7特性,

    JBoss7.1.1配置指南及管理员手册PDF版

    JBoss7.1.1配置指南及管理员手册是一份全面的指南,旨在帮助用户理解和配置JBoss应用服务器的各个方面的设置和管理。本文将重点介绍JBoss7.1.1的核心特性和管理员需要了解的关键概念,包括JBoss的主要版本特性、...

    Jboss集群配置指南

    【Jboss集群配置指南】 在IT行业中,Jboss是一个广泛使用的Java应用服务器,它支持集群部署以提高应用程序的可用性和可扩展性。集群是通过多个独立的服务器节点协同工作,共同处理请求,实现高可用性和负载均衡。本...

    JBOSS7配置及管理员手册

    《JBOSS7配置及管理员手册》:深入解析与实操指南 ### JBOSS各主要版本特性概览 #### JBOSS4特性 - **模块化架构**:引入了更为灵活的模块化设计,提高了应用程序的可扩展性和可维护性。 - **企业级功能**:加强了...

    jboss7_配置指南

    【JBoss7 配置指南】 JBoss Application Server 7 (AS7) 是一款流行的开源应用服务器,由 Red Hat 公司开发,用于部署和管理Java应用程序。本配置指南主要面向那些需要安装和配置 JBoss AS7 的人员,旨在帮助他们...

    JBoss7配置Mysql5.1数据源.pdf

    实际操作时,需要根据具体的JBoss版本和Mysql数据库的版本,查找相应的官方文档和配置指南,以确保每个步骤都准确无误。此外,由于JBoss7和Mysql5.1都是较旧的版本,新项目的开发可能需要考虑使用更新的软件版本以...

    Jboss安装配置手册

    Jboss 安装配置指南 本指南旨在指导用户安装和配置 Jboss 中间件,包括数据库产品的安装、初始化数据库、Jboss 中间件的安装和配置服务。以下是详细的安装和配置步骤: 一、数据库产品的安装 在安装 Jboss 之前,...

    jboss配置指南

    【JBoss配置指南】 JBoss 是一款开源的应用服务器,它基于Java EE标准,提供了一个用于部署和管理企业级应用的平台。本指南将详细介绍JBoss的下载安装、目录结构以及基本配置。 一、下载与安装 1. **下载**:...

    JBoss7配置的指南与管理员手册范本.doc

    本文档将详细解析JBoss 7的配置指南,帮助管理员理解和掌握其核心概念、配置方法以及管理实践。 1. JBoss 7的新特性 - JBoss 4特性:这一版本引入了模块化架构,使得应用程序的部署和管理更加灵活,同时提高了性能...

    JBOSS开发人员指南

    【JBOSS开发人员指南】 在IT行业中,JBoss是一个非常重要的开源中间件,由Red Hat公司维护,主要用于实现企业级应用服务器的功能。本指南旨在为开发者提供全面、深入的JBoss开发知识,帮助他们更好地理解和运用这个...

    JBOSS实战-服务器配置指南【部分目录】

    JBOSS实战-服务器配置指南【部分目录】,JBOSS实战-服务器配置指南

    JBoss7-配置-管理员手册

    4. JBoss7配置 26 4.1. 目标听众 26 4.1.1. 开始之前 26 4.1.2. 手册中的示例 26 4.2. 客户端 26 4.2.1. web接口 26 4.2.1.1. HTTP管理接入点 26 4.2.1.2. 访问管理控制台 27 4.2.1.3. 对管理控制台进行加密 27 ...

Global site tag (gtag.js) - Google Analytics