Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Enabling HTTPS

To enable HTTPS for services and web applications, add the following to the systemConfig.xml file:

Code Block
xml
xml

<config>
   <web.server>
      <http port="8181"/>
      <https enabled="true" port="8901"/>
   </web.server>
   <security>
      <keystore>fabric3-keystore.jks</keystore>
      <truststore>fabric3-truststore.jks</truststore >
      <keystore.password>password</keystore.password>
      <truststore.password>password</truststore.password>
      <cert.password>password</cert.password>
   </security>
</config>

Keystore and truststore entries are optional. If not supplied, Fabric3 will look for a fabric3-keystore.jks store in the server /config directory. If a keystore is defined but a truststore is not, Fabric3 will default the truststore to the keystore value. Note the keystore value is an absolute file path.

Securing Application Provisioning

In a distributed domain, Fabric3 uses HTTP or HTTPS to provision artifacts to runtime instances during deployment. By default HTTP is used. To enable HTTPS it is necessary to configure secure provisioning on the controller and participant runtimes.

The following systemConfig.xml shows how to configure a controller instance to use HTTPS-based provisioning:

Code Block
xml
xml

<config>
   <federation>
      <provision secure="true" address="localhost"/>
   </federation>
   <security>
      <keystore.password>password</keystore.password>
      <cert.password>password</cert.password>
   </security>
   <users>
      <user>
         <username>foo</username>
         <password>bar</password>
         <roles>
            <role>provision.client</role>
         </roles>
      </user>
   </users>
</config>

...

Since participant runtimes may provision artifacts to peers, they are configured in a similar way as the controller. The main difference is the username and password attributes on the <provision> element. These are used to authenticate with the controller and must match the values set in the controller configuration:

Code Block
xml
xml

<config>
   <federation>
      <provision secure="true" address="localhost" username="foo" password="bar"/>
   </federation>
   <security>
      <keystore.password>password</keystore.password>
      <cert.password>password</cert.password>
   </security>
   <users>
      <user>
         <username>foo</username>
         <password>bar</password>
         <roles>
            <role>provision.client</role>
         </roles>
      </user>
   </users>
</config>

Securing Clustered Communications

In the Standalone and Tomcat runtimes, Fabric3 uses JGroups as the cluster service provider. To enable secure cluster communications, it is necessary to configure JGroups appropriately. JGroups XML configuration is specified using the <federation>/<config> element in systemConfig.xml:

Code Block
xml
xml

<config>
   <federation>
      <config>
         <!-- JGroups XML configuration -->
      </config>
   </federation>
</config>

Enabling JMX Authentication and Authorization

JMX authentication is enabled by setting the jmx.security attribute on the <runtime> element and adding users in systemConfig.xml:

Code Block
xml
xml

<config>
   <runtime jmx.security='authentication' />
      <users>
         <user>
            <username>foo</username>
            <password>foo</password>
         </user>
      </users>
</config>

...

JMX security can also be configured for authorization. Authorization is enabled by setting the jmx.security attribute specifying security roles allowed to access MBeans, and a set of users:

Code Block
xml
xml

<config>
   <runtime jmx.security='authorization' jmx.access.roles='ROLE_FABRIC3_ADMIN,ROLE_FABRIC3_OBSERVER'/>
   <users>
       <user>
          <username>foo</username>
          <password>foo</password>
          <roles>
             <role>ROLE_FABRIC3_OBSERVER</role>
          </roles>
       </user>
       <user>
          <username>bar</username>
          <password>bar</password>
          <roles>
             <role>ROLE_FABRIC3_ADMIN</role>
          </roles>
       </user>
   </users>
</config>

...